1. 10 Jan, 2013 2 commits
  2. 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
  3. 08 Jan, 2013 4 commits
    • Deb Mukherjee's avatar
      Adds 64x64 hybrid dct/dwt transform · 4b7304ee
      Deb Mukherjee authored
      This is to add to the 64x64 transform experiment as an alternative to
      a 64x64 DCT.
      Two levels of wavelet decomposition is used on a 64x64 block, followed
      by 16x16 DCT on the four lowest subbands. The highest three subbands
      are left untransformed after the first level DWT.
      
      Change-Id: I3d48d5800468d655191933894df6b46e15adca56
      4b7304ee
    • Ronald S. Bultje's avatar
      Merge superblocks (32x32) experiment. · 4455036c
      Ronald S. Bultje authored
      Change-Id: I0df99742029834a85c4933652b0587cf5b6b2587
      4455036c
    • Yunqing Wang's avatar
      vp9_sub_pixel_variance16x2 SSE2 optimization · 8d568312
      Yunqing Wang authored
      About 5% decoder speedup.
      
      Change-Id: Ib6687d337af758a536a0e7e289f400990f1f9794
      8d568312
    • 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
  4. 06 Jan, 2013 1 commit
  5. 04 Jan, 2013 1 commit
    • Paul Wilkins's avatar
      Further change to mv reference search. · c6ba3a3d
      Paul Wilkins authored
      This experimental change reorders the search so
      that all possible references that match the target
      reference frame are tested first and these in order
      of distance from the current block. These will usually
      be the highest scoring candidates.
      
      If we do not find enough good candidates this way
      we try non matching cases. These will usually be lower
      scoring candidates.
      
      The change in order together with breakouts when
      we have found enough candidates should reduce
      the computational cost and especially reduce the number
      of sort operations.
      
      Quality Results:
      Std Hd +0.228%, Hd +0.074%, YT +0.046%, derf +0.137%
      
      This effect is probably due to the fact that more distant
      weak candidates are now less likely to get "promoted" over
      near candidates even if they are repeated.
      
      Change-Id: Iec37e77d88a48ad0ee1f315b14327a95d63f81f6
      c6ba3a3d
  6. 02 Jan, 2013 1 commit
  7. 27 Dec, 2012 1 commit
    • Yunqing Wang's avatar
      Switch the order of calculating 2-D inverse transform · cc80247f
      Yunqing Wang authored
      The 2-D inverse transform X = M1*Z*Transposed_M2 was calculated
      in 2 steps from left to right:
      1. Vertical transform: Y = M1*Z
      2. Horizontal transform: X= Y*Transposed_M2
      In SIMD, a transpose is needed in vertical transform.
      
      Here, switched the calculation order to do it from right to left.
      In this way, we could eliminate that transpose by writing the
      intermediate results out to their transposed positions.
      
      Change-Id: I34dfe5eb01292f6e363712420d99475e2e81e12c
      cc80247f
  8. 26 Dec, 2012 1 commit
  9. 21 Dec, 2012 3 commits
  10. 20 Dec, 2012 3 commits
    • James Zern's avatar
      add emmintrin_compat.h for builds with gcc < 4 · 9dab3ce6
      James Zern authored
      Change-Id: If7822e6fcd0d3568b934032322b19ba3e401df26
      9dab3ce6
    • Jim Bankoski's avatar
      add private to assembly files to insure proper chromebuild · 1dffce7f
      Jim Bankoski authored
      Change-Id: I6e43ca73f35401a974ed8ee27738d4318f09fd37
      1dffce7f
    • 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
  12. 18 Dec, 2012 4 commits
  13. 17 Dec, 2012 2 commits
    • John Koleszar's avatar
      Remove vp9_type_aliases.h · 1306ba76
      John Koleszar authored
      Prefer the standard fixed-size integer typedefs.
      
      Change-Id: Iad75582350669e49a8da3b7facb9c259e9514a5b
      1306ba76
    • Yaowu Xu's avatar
      fixed a warning · 0405cd8e
      Yaowu Xu authored
      where variable is used without initialization
      
      Change-Id: Ic6b52623802641060cad4a72271050aeaf20ad5c
      0405cd8e
  14. 14 Dec, 2012 2 commits
  15. 13 Dec, 2012 3 commits
    • Yaowu Xu's avatar
      fixed build issue with round() · c6818876
      Yaowu Xu authored
      not defined in msvc
      
      Change-Id: I8fe8462a0c2f636d8b43c0243832ca67578f3665
      c6818876
    • Deb Mukherjee's avatar
      Further improvements on the hybrid dwt/dct expt · 210dc5b2
      Deb Mukherjee authored
      Modifies the scanning pattern and uses a floating point 16x16
      dct implementation for now to handle scaling better.
      Also experiments are in progress with 2/6 and 9/7 wavelets.
      
      Results have improved to within ~0.25% of 32x32 dct for std-hd
      and about 0.03% for derf. This difference can probably be bridged by
      re-optimizing the entropy stats for these transforms. Currently
      the stats used are common between 32x32 dct and dwt/dct.
      
      Experiments are in progress with various scan pattern - wavelet
      combinations.
      
      Ideally the subbands should be tokenized separately, and an
      experiment will be condcuted next on that.
      
      Change-Id: Ia9cbfc2d63cb7a47e562b2cd9341caf962bcc110
      210dc5b2
    • Ronald S. Bultje's avatar
      New default coefficient/band probabilities. · 5a5df19d
      Ronald S. Bultje authored
      Gives 0.5-0.6% improvement on derf and stdhd, and 1.1% on hd. The
      old tables basically derive from times that we had only 4x4 or
      only 4x4 and 8x8 DCTs.
      
      Note that some values are filled with 128, because e.g. ADST ever
      only occurs as Y-with-DC, as does 32x32; 16x16 ever only occurs
      as Y-with-DC or as UV (as complement of 32x32 Y); and 8x8 Y2 ever
      only has 4 coefficients max. If preferred, I can add values of
      other tables in their place (e.g. use 4x4 2nd order high-frequency
      probabilities for 8x8 2nd order), so that they make at least some
      sense if we ever implement a larger 2nd order transform for the
      8x8 DCT (etc.), please let me know
      
      Change-Id: I917db356f2aff8865f528eb873c56ef43aa5ce22
      5a5df19d
  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 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
  20. 07 Dec, 2012 2 commits
    • Frank Galligan's avatar
      Fix implicit cast. · eec0bc4f
      Frank Galligan authored
      Change-Id: I1eb7433061a6c529471026e0ebdc6467942062eb
      eec0bc4f
    • 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 1 commit
    • 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