1. 16 Jan, 2013 5 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
      Update encoder to use fb_idx_ref_cnt · 394b0a6a
      John Koleszar authored
      Do reference counting the same way on the encoder as the decoder does,
      rather than maintaining the 'flags' member of YV12_BUFFER_CONFIG.
      
      Change-Id: I91dc210ffca081acaf9d5c09a06e7461b3c3139c
      394b0a6a
    • 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. 09 Jan, 2013 1 commit
    • Adrian Grange's avatar
      New prediction filter · 7d6b5425
      Adrian Grange authored
      This patch removes the old pred-filter experiment and replaces it
      with one that is implemented using the switchable filter framework.
      
      If the pred-filter experiment is enabled, three interopolation
      filters are tested during mode selection; the standard 8-tap
      interpolation filter, a sharp 8-tap filter and a (new) 8-tap
      smoothing filter.
      
      The 6-tap filter code has been preserved for now and if the
      enable-6tap experiment is enabled (in addition to the pred-filter
      experiment) the original 6-tap filter replaces the new 8-tap smooth
      filter in the switchable mode.
      
      The new experiment applies the prediction filter in cases of a
      fractional-pel motion vector. Future patches will apply the filter
      where the mv is pel-aligned and also to intra predicted blocks.
      
      Change-Id: I08e8cba978f2bbf3019f8413f376b8e2cd85eba4
      7d6b5425
  5. 08 Jan, 2013 3 commits
    • Ronald S. Bultje's avatar
      Merge superblocks (32x32) experiment. · 4455036c
      Ronald S. Bultje authored
      Change-Id: I0df99742029834a85c4933652b0587cf5b6b2587
      4455036c
    • Yaowu Xu's avatar
      reset segement map on key frame · c14439c3
      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
      c14439c3
    • Yaowu Xu's avatar
      minor loop filter refactoring and cleanup · d278d018
      Yaowu Xu authored
      This commit did a couple of minor cleanup/refactoring to prepare for
      futher loop filter experiments. It merged y_only version of loop filter
      function into the regular one, which makes sure that same logic is used
      for functions for picking level and for actual loop filtering.
      
      Change-Id: Id10c94dccd45f58e5310bacfdf6ee63cbb60b86f
      d278d018
  6. 06 Jan, 2013 1 commit
  7. 02 Jan, 2013 1 commit
  8. 28 Dec, 2012 1 commit
    • Yunqing Wang's avatar
      Skip finding best ref_mvs when the mode is ZEROMV · 0f4de157
      Yunqing Wang authored
      Read mode before calling vp9_find_best_ref_mvs(). If the mode is
      ZEROMV, the best ref_mvs are not needed. Then, we can skip calling
      vp9_find_best_ref_mvs().
      
      Change-Id: I5baa3658dd3f1c7107211cbbbcf919b4584be2e2
      0f4de157
  9. 26 Dec, 2012 1 commit
  10. 20 Dec, 2012 1 commit
    • Deb Mukherjee's avatar
      New previous coef context experiment · 08f0c7cc
      Deb Mukherjee authored
      Adds an experiment to derive the previous context of a coefficient
      not just from the previous coefficient in the scan order but from a
      combination of several neighboring coefficients previously encountered
      in scan order.  A precomputed table of neighbors for each location
      for each scan type and block size is used. Currently 5 neighbors are
      used.
      
      Results are about 0.2% positive using a strategy where the max coef
      magnitude from the 5 neigbors is used to derive the context.
      
      Change-Id: Ie708b54d8e1898af742846ce2d1e2b0d89fd4ad5
      08f0c7cc
  11. 19 Dec, 2012 1 commit
    • John Koleszar's avatar
      Use boolcoder API instead of inlining · 05ec800e
      John Koleszar authored
      This patch changes the token packing to call the bool encoder API rather
      than inlining it into the token packing function, and similarly removes
      a special get_signed case from the detokenizer. This allows easier
      experimentation with changing the bool coder as a whole.
      
      Change-Id: I52c3625bbe4960b68cfb873b0e39ade0c82f9e91
      05ec800e
  12. 18 Dec, 2012 3 commits
  13. 17 Dec, 2012 1 commit
  14. 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
  15. 13 Dec, 2012 1 commit
  16. 12 Dec, 2012 2 commits
    • 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
    • Ronald S. Bultje's avatar
      Consistently use get_prob(), clip_prob() and newly added clip_pixel(). · 4d0ec7aa
      Ronald S. Bultje authored
      Add a function clip_pixel() to clip a pixel value to the [0,255] range
      of allowed values, and use this where-ever appropriate (e.g. prediction,
      reconstruction). Likewise, consistently use the recently added function
      clip_prob(), which calculates a binary probability in the [1,255] range.
      If possible, try to use get_prob() or its sister get_binary_prob() to
      calculate binary probabilities, for consistency.
      
      Since in some places, this means that binary probability calculations
      are changed (we use {255,256}*count0/(total) in a range of places,
      and all of these are now changed to use 256*count0+(total>>1)/total),
      this changes the encoding result, so this patch warrants some extensive
      testing.
      
      Change-Id: Ibeeff8d886496839b8e0c0ace9ccc552351f7628
      4d0ec7aa
  17. 11 Dec, 2012 1 commit
  18. 10 Dec, 2012 1 commit
    • Paul Wilkins's avatar
      Further changes to mv reference code. · d1244659
      Paul Wilkins authored
      Some further changes and refactoring of mv
      reference code and selection of center point for
      searches. Mainly relates to not passing so many
      different local copies of things around.
      
      Some place holder comments.
      
      Change-Id: I309f10ffe9a9cde7663e7eae19eb594371c8d055
      d1244659
  19. 08 Dec, 2012 3 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
      Clean up 4x4 coefficient decoding code. · fbf052df
      Ronald S. Bultje authored
      Don't use vp9_decode_coefs_4x4() for 2nd order DC or luma blocks. The
      code introduces some overhead which is unnecessary for these cases.
      Also, remove variable declarations that are only used once, remove
      magic offsets into the coefficient buffer (use xd->block[i].qcoeff
      instead of xd->qcoeff + magic_offset), and fix a few Google Style
      Guide violations.
      
      Change-Id: I0ae653fd80ca7f1e4bccd87ecef95ddfff8f28b4
      fbf052df
    • 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
  20. 07 Dec, 2012 2 commits
    • Frank Galligan's avatar
      Remove unused symbols from vp9 asm offsets C files. · 8d449ce0
      Frank Galligan authored
      Change-Id: I366e6d175da3012f1c8607fd7fad99fbbb616091
      8d449ce0
    • 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
  21. 06 Dec, 2012 1 commit
  22. 05 Dec, 2012 2 commits
    • Johann's avatar
      Begin to refactor vpx_scale usage in VP9 · 52d350fe
      Johann authored
      Only declare the functions in vpx_scale RTCD and include the relevant
      header.
      
      Remove unused files and functions in vpx_scale to avoid wasting time
      renaming. vpx_scale/win32/scaleopt.c contains functions which have not
      been called in a long time but are potentially optimized.
      
      The 'vp8' functions have not been renamed yet. That is for after the
      cleanup.
      
      Change-Id: I2c325a101d60fa9d27e7dfcd5b52a864b4a1e09c
      52d350fe
    • Johann's avatar
      Remove ARM optimizations from VP9 · a9056729
      Johann authored
      Change-Id: I9f0ae635fb9a95c4aa1529c177ccb07e2b76970b
      a9056729
  23. 03 Dec, 2012 2 commits
    • Johann's avatar
      Begin to refactor vpx_scale usage in VP9 · c6bd29e2
      Johann authored
      Only declare the functions in vpx_scale RTCD and include the relevant
      header.
      
      Remove unused files and functions in vpx_scale to avoid wasting time
      renaming. vpx_scale/win32/scaleopt.c contains functions which have not
      been called in a long time but are potentially optimized.
      
      The 'vp8' functions have not been renamed yet. That is for after the
      cleanup.
      
      Change-Id: I2c325a101d60fa9d27e7dfcd5b52a864b4a1e09c
      c6bd29e2
    • Johann's avatar
      Remove ARM optimizations from VP9 · 34591b54
      Johann authored
      Change-Id: I9f0ae635fb9a95c4aa1529c177ccb07e2b76970b
      34591b54
  24. 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