1. 16 Jan, 2013 4 commits
    • John Koleszar's avatar
      Preserve the previous golden frame on golden updates · 26bd81b9
      John Koleszar authored
      This commit restores the quality lost when the buffer-to-buffer copy
      logic was removed. Note that this is specific to the current use of
      golden frames and will need rework when RTC functionality is added.
      
      Change-Id: I7324a75acd96eafd9e0f9b8633d782e390d5dc21
      26bd81b9
    • John Koleszar's avatar
      Generalize and increase frame coding contexts · 4b65837b
      John Koleszar authored
      Previously there were two frame coding contexts tracked, one for normal
      frames and one for alt-ref frames. Generalize this by signalling the
      context to use in the bitstream, rather than tieing it to the alt ref
      refresh bit. Also increase the number of contexts available to 4, which
      may be useful for temporal scalability.
      
      Change-Id: I7b66daaddd55c535c20cd16713541fab182b1662
      4b65837b
    • John Koleszar's avatar
      Start to anonymize reference frames · da832a80
      John Koleszar authored
      Remove lst_fb_idx, gld_fb_idx, alt_fb_idx, refresh_last_frame,
      refresh_golden_frame, refresh_alt_ref_frame from common. Gold/Alt are
      encode side conventions. From the decoder's perspective, we want to be
      dealing with numbered references.
      
      Updates to active_ref 2 signal mode context switches, vestigial from
      refresh_alt_ref_frame. This needs some clean up to make sense with
      increased numbers of reference frames, as well as reimplementing the
      swapping of alt/golden which was previously done using the
      buffer-to-buffer copy mechanism removed in an earlier commit.
      
      Change-Id: I7334445158b7666f9295d2a2dd22aa03f4485f58
      da832a80
    • John Koleszar's avatar
      Remove buffer-to-buffer copy logic · b8e02798
      John Koleszar authored
      This is the first in a series of commits to add additional reference
      frames to the codec. Each frame will be able to update any of the
      available references, but copying between references is not
      supported.
      
      Change-Id: I5945b5ce6cc3582c495102b4e7eed4f08c44d5a1
      b8e02798
  2. 14 Jan, 2013 1 commit
    • Ronald S. Bultje's avatar
      Remove compound intra-intra experiment. · c9071601
      Ronald S. Bultje authored
      This experiment gives little gains and adds relatively much code
      complexity (and it hinders other experiments), so let's get rid of
      it.
      
      Change-Id: Id25e79a137a1b8a01138aa27a1fa0ba4a2df274a
      c9071601
  3. 10 Jan, 2013 2 commits
  4. 08 Jan, 2013 2 commits
  5. 06 Jan, 2013 1 commit
  6. 02 Jan, 2013 1 commit
  7. 26 Dec, 2012 1 commit
  8. 18 Dec, 2012 2 commits
  9. 14 Dec, 2012 1 commit
    • Yaowu Xu's avatar
      reset segement map on key frame · 6247b239
      Yaowu Xu authored
      This is to fix a decoder crash when decoder skips a number of frame to
      continue decoding from a later key frame.
      
      Change-Id: I3ba116eba6c3440e0528a21f53745f694302e4ad
      6247b239
  10. 12 Dec, 2012 1 commit
    • Scott LaVarnway's avatar
      Improved vp9_ihtllm_c · b575394e
      Scott LaVarnway authored
      As suggested by Yaowu, we can use eob to reduce the complexity
      of the vp9_ihtllm_c function.  For the 1080p test clip used, the decoder
      performance improved by 17%.
      
      Change-Id: I32486f2f06f9b8f60467d2a574209aa3a3daa435
      b575394e
  11. 08 Dec, 2012 2 commits
    • Yaowu Xu's avatar
      experiment with CONTEXT conversion · ab480ced
      Yaowu Xu authored
      This commit changed the ENTROPY_CONTEXT conversion between MBs that
      have different transform sizes.
      
      In additioin, this commit also did a number of cleanup/bug fix:
      1. removed duplicate function vp9_fix_contexts() and changed to use
      vp8_reset_mb_token_contexts() for both encoder and decoder
      2. fixed a bug in stuff_mb_16x16 where wrong context was used for
      the UV.
      3. changed reset all context to 0 if a MB is skipped to simplify the
      logic.
      
      Change-Id: I7bc57a5fb6dbf1f85eac1543daaeb3a61633275c
      ab480ced
    • Ronald S. Bultje's avatar
      Introduce vp9_coeff_probs/counts/stats/accum types. · 885cf816
      Ronald S. Bultje authored
      Use these, instead of the 4/5-dimensional arrays, to hold statistics,
      counts, accumulations and probabilities for coefficient tokens. This
      commit also re-allows ENTROPY_STATS to compile.
      
      Change-Id: If441ffac936f52a3af91d8f2922ea8a0ceabdaa5
      885cf816
  12. 07 Dec, 2012 1 commit
    • Ronald S. Bultje's avatar
      32x32 transform for superblocks. · c456b35f
      Ronald S. Bultje authored
      This adds Debargha's DCT/DWT hybrid and a regular 32x32 DCT, and adds
      code all over the place to wrap that in the bitstream/encoder/decoder/RD.
      
      Some implementation notes (these probably need careful review):
      - token range is extended by 1 bit, since the value range out of this
        transform is [-16384,16383].
      - the coefficients coming out of the FDCT are manually scaled back by
        1 bit, or else they won't fit in int16_t (they are 17 bits). Because
        of this, the RD error scoring does not right-shift the MSE score by
        two (unlike for 4x4/8x8/16x16).
      - to compensate for this loss in precision, the quantizer is halved
        also. This is currently a little hacky.
      - FDCT and IDCT is double-only right now. Needs a fixed-point impl.
      - There are no default probabilities for the 32x32 transform yet; I'm
        simply using the 16x16 luma ones. A future commit will add newly
        generated probabilities for all transforms.
      - No ADST version. I don't think we'll add one for this level; if an
        ADST is desired, transform-size selection can scale back to 16x16
        or lower, and use an ADST at that level.
      
      Additional notes specific to Debargha's DWT/DCT hybrid:
      - coefficient scale is different for the top/left 16x16 (DCT-over-DWT)
        block than for the rest (DWT pixel differences) of the block. Therefore,
        RD error scoring isn't easily scalable between coefficient and pixel
        domain. Thus, unfortunately, we need to compute the RD distortion in
        the pixel domain until we figure out how to scale these appropriately.
      
      Change-Id: I00386f20f35d7fabb19aba94c8162f8aee64ef2b
      c456b35f
  13. 06 Dec, 2012 1 commit
  14. 30 Nov, 2012 2 commits
    • Deb Mukherjee's avatar
      Adds switchable filters with superblocks · 66323307
      Deb Mukherjee authored
      Allows switchbale filters to be used without mismatch when the
      superblock experiment is on.
      
      Also removes a spurious clamping code in decodemv.c which causes
      rare encode/decode mismatches.
      
      Change-Id: I809d9ee0b2859552b613500b539a615515b863ae
      66323307
    • Jim Bankoski's avatar
      warnings in various experiments · 9f937042
      Jim Bankoski authored
      Change-Id: Ib5106d4772450f8026f823dd743f162ab833b1d6
      9f937042
  15. 29 Nov, 2012 4 commits
  16. 28 Nov, 2012 5 commits
    • Yaowu Xu's avatar
      remove the vp9_default_mode_contexts_a · 1cc57396
      Yaowu Xu authored
      Given the way mode_context is updated, the benefit of an additional
      default is not signficant.
      
      Change-Id: I67489453e8781340b18e26a1cc2f04e9221004a2
      1cc57396
    • Jim Bankoski's avatar
      fixed includes to be fully specified · c6787398
      Jim Bankoski authored
      Change-Id: Ia1cce221f8511561b9cbd8edb7726fbc286ff243
      c6787398
    • Yaowu Xu's avatar
      Localize Y2 entropy coding context · 3e976bba
      Yaowu Xu authored
      This commit makes sure Y2 entropy coding context is always updated on
      every macroblock even there is no Y2 block.
      
      Change-Id: Ie307cfc46526efe55613be39f9f178d2531b56ba
      3e976bba
    • Yaowu Xu's avatar
      removed redundant mode_context data structures · 12da793d
      Yaowu Xu authored
      This commit removed a couple of redundant data structures in frame
      coding contextsm, mode_context and mode_context_a, and changed to
      use vp9_mode_contexts only. The switch of the context for different
      frame type now relies on the switch of frame coding context between
      lfc and lfc_a. This commit also removed a number of memcpy among
      these redundant data structure.
      
      Change-Id: I42e8174bd60f466b0860afc44c1263896471b0f3
      12da793d
    • John Koleszar's avatar
      Clamp decoded feature data · a1f15814
      John Koleszar authored
      Not all segment feature data elements are full-range powers of two, so
      there are values that can be encoded that are invalid. Add a new function
      to clamp values to the maximum allowed.
      
      Change-Id: Ie47cb80ef2d54292e6b8db9f699c57214a915bc4
      a1f15814
  17. 27 Nov, 2012 1 commit
    • John Koleszar's avatar
      Add vp9_ prefix to all vp9 files · fcccbcbb
      John Koleszar authored
      Support for gyp which doesn't support multiple objects in the same
      static library having the same basename.
      
      Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc
      fcccbcbb
  18. 25 Nov, 2012 2 commits
    • Ronald S. Bultje's avatar
      Move switch(tx_size) around txsize to detokenize.c. · 25b609b6
      Ronald S. Bultje authored
      Add a new function vp9_decode_mb_tokens() that handles the switch
      between different per-tx-size detokenize functions. Make actual
      implementations (vp9_decode_mb_tokens_NxN()) static.
      
      Change-Id: I9e0c4ef410bfa90128a02b472c079a955776816d
      25b609b6
    • Jim Bankoski's avatar
      removed the idct rtcd idct calls · 510557e2
      Jim Bankoski authored
      More cleanup to do after this,  but this is a good chunk of removing rtcd.
      
      Change-Id: I551db75e341a0a85c3ad650df1e9a60dc305681a
      510557e2
  19. 21 Nov, 2012 1 commit
  20. 17 Nov, 2012 1 commit
    • Ronald S. Bultje's avatar
      Remove special-case inline detokenization in b_pred reconstruction. · f19a1caf
      Ronald S. Bultje authored
      Just like for all other block modes, b_pred tokens can be read together
      before starting macroblock reconstruction. This removes special cases
      for b_pred in decode_macroblock() and allows to make decode_coefs_4x4()
      static in detokenize.c.
      
      While at it, remove the redundant handling and checking of plane_type
      and block_index (i) in decode_coefs_4x4(). Since the function is static,
      and is called only from decode_mb_tokens_4x4(), we don't need to worry
      that the arguments ever go out of sync.
      
      Change-Id: I2d415da0b51b89d0490a6b9e24cc86363c2090f7
      f19a1caf
  21. 16 Nov, 2012 3 commits
    • Ronald S. Bultje's avatar
      Support 32x32 intra modes in non-keyframe superblocks. · 5b11052a
      Ronald S. Bultje authored
      Change-Id: Icf8ad313c543462e523bff89690e5daa8d49bcc0
      5b11052a
    • Paul Wilkins's avatar
      Further experimentation with the mode context · a57dbd95
      Paul Wilkins authored
      Experiments with a larger set of contexts and some
      clean up to replace magic numbers regarding the
      number of contexts.
      
      The starting values and rate of backwards adaption
      are still suspect and based on a small set of tests.
      Added forwards adjustment of probabilities.
      
      The net result of adding the new context and forward
      update is small compared to the old context from the
      legacy find_near function.  (down a little on derf but
      up by a similar amount for HD)
      
      HOWEVER.... with the new context and forward update
      the impact of disabling the reverse update (which may be
      necessary in some use cases to facilitate parallel decoding)
      is hugely reduced.
      
      For the old context without forward update, the impact of
      turning off reverse update (Experiment was with SB off) was
      Derf - 0.9, Yt -1.89, ythd -2.75 and sthd -8.35. The impact was
      mainly at low data rates.
      
      With the new context and forward update enabled the impact
      for all the test sets was no more than 0.5-1% (again most at
      the low end).
      
      Change-Id: Ic751b414c8ce7f7f3ebc6f19a741d774d2b4b556
      a57dbd95
    • Deb Mukherjee's avatar
      Compound inter-intra experiment · 0c917fc9
      Deb Mukherjee authored
      A patch on compound inter-intra prediction.
      
      In compound inter-intra prediction, a new predictor for
      16x16 inter coded MBs are obtained by combining a single
      inter predictor with a 16x16 intra predictor, in a manner
      that the weight varies with distance from the top/left
      boundary. The current search strategy is to combine the best
      inter mode with the best intra mode obtained independently.
      
      Results so far:
      
      derf +0.31%
      yt +0.32%
      std-hd +0.35%
      hd +0.42%
      
      It is conceivable that the results would improve somewhat
      with a more thorough search strategy where all intra modes
      are searched given the best mv, or even a joint search for
      the best mv and the best intra mode.
      
      Change-Id: I7951f1ed0d6eb31ca32ac24d120f1585bcd8d79b
      0c917fc9
  22. 15 Nov, 2012 1 commit
    • John Koleszar's avatar
      Pack invisible frames without lengths · 64bcffc1
      John Koleszar authored
      Modify the decoder to return the ending position of the bool decoder and
      use that as the starting position for the next frame.
      
      The constant-space algorithm for parsing the appended frame lengths is
      O(n^2), which is a potential DoS concern if n is unbounded. Revisit
      the appended lengths for use as partition lengths when multipartition
      support is added.
      
      In addition, this allows decoding of raw streams outside of a container
      without additional framing information, though it's insufficient to
      be able to remux said stream into a container.
      
      Change-Id: I71e801a9c3e37abe559a56a597635b0cbae1934b
      64bcffc1