1. 17 May, 2013 1 commit
    • John Koleszar's avatar
      Initial version of alpha channel support · 679e4abd
      John Koleszar authored
      This is a mostly-working implementation of an extra channel in the
      bitstream. Configure with --enable-alpha to test. Notable TODOs:
      
       - Add extra channel to all mismatch tests, PSNR, SSIM, etc
       - Configurable subsampling
       - Variable number of planes (currently always uses all 4)
       - Loop filtering
       - Per-plane lossless quantizer
       - ARNR support
      
      This implementation just uses the same contents as the Y channel
      for the A channel, due to lack of content and general pain in
      playing back 4 channel content. A later patch will use the actual
      alpha channel passed in from outside the codec.
      
      Change-Id: Ibf81f023b1c570bd84b3064e9b4b8ae52e087592
      679e4abd
  2. 07 May, 2013 3 commits
  3. 03 May, 2013 1 commit
    • John Koleszar's avatar
      Separate transform and quant from vp9_encode_sb · 4529c68b
      John Koleszar authored
      This allows removing a large number of transform size specific functions,
      as well as supporting 444/alpha by routing all code through the
      subsampling-aware path.
      
      Change-Id: Ieb085cebe9f37f24fc24de179898b22abfda08a4
      4529c68b
  4. 02 May, 2013 1 commit
    • John Koleszar's avatar
      Create common vp9_encode_sb{,y} · 3f4e8063
      John Koleszar authored
      Creates a common encode (subtract, transform, quantize, optimize,
      inverse transform, reconstruct) function for all sb sizes, including
      the old 16x16 path.
      
      Change-Id: I964dff1ea7a0a5c378046a069ad83495f54df007
      3f4e8063
  5. 01 May, 2013 1 commit
  6. 30 Apr, 2013 2 commits
    • Ronald S. Bultje's avatar
      sb8x8 integration in rd loop. · d068d869
      Ronald S. Bultje authored
      Work-in-progress, not yet ready for review. TODO items:
      - bitstream writing (encoder) and reading (decoder)
      - decoder reconstruction
      
      Change-Id: I5afb7284e7e0480847b47cd0097cb469433c9081
      d068d869
    • Dmitry Kovalev's avatar
      Adding vp9_get_qindex function. · 3f6c6ffc
      Dmitry Kovalev authored
      Moving common code from encoder and decoder to vp9_get_qindex function.
      Also moving quant-related constants from vp9_onyxc_int.h to
      vp9_quant_common.h.
      
      Change-Id: I70c5bfbaa1c8bf00fde0bfc459d077f88b6d46c8
      3f6c6ffc
  7. 26 Apr, 2013 1 commit
  8. 25 Apr, 2013 3 commits
  9. 24 Apr, 2013 2 commits
  10. 23 Apr, 2013 1 commit
    • John Koleszar's avatar
      Convert coeff to per-plane MACROBLOCK data · 138ec38c
      John Koleszar authored
      This commit moves the coeff storage from the MACROBLOCK struct to its
      per-plane part. The next commit will remove the coeff member from the
      BLOCK structure so that it is consistently accessed per-plane.
      
      Also refactors vp9_sb_block_error_c and vp9_sb_uv_block_error_c to be
      variable subsampling aware.
      
      Change-Id: I18c30f87f27c3a012119b6c1970d5fa499804455
      138ec38c
  11. 22 Apr, 2013 2 commits
  12. 16 Apr, 2013 1 commit
  13. 15 Apr, 2013 1 commit
  14. 11 Apr, 2013 1 commit
    • Ronald S. Bultje's avatar
      Remove unused macroblock versions of reconstruction functions. · 13e41ba4
      Ronald S. Bultje authored
      More specifically, remove vp9_quantize_mb*, vp9_optimize_mb*,
      vp9_inverse_transform_mb* and vp9_transform_mb*. Instead, use the
      generic _sb* functions that take a size argument, and call them with
      BLOCK_SIZE_MB16X16.
      
      Change-Id: I33024afea95d3a23ffbc1df7da426e4645110f29
      13e41ba4
  15. 10 Apr, 2013 1 commit
    • Ronald S. Bultje's avatar
      Make SB coding size-independent. · a3874850
      Ronald S. Bultje authored
      Merge sb32x32 and sb64x64 functions; allow for rectangular sizes. Code
      gives identical encoder results before and after. There are a few
      macros for rectangular block sizes under the sbsegment experiment; this
      experiment is not yet functional and should not yet be used.
      
      Change-Id: I71f93b5d2a1596e99a6f01f29c3f0a456694d728
      a3874850
  16. 09 Apr, 2013 1 commit
    • Dmitry Kovalev's avatar
      Fixing upper case names. · c34f6fcb
      Dmitry Kovalev authored
      Renaming Y1dequant to y_dequant, UVdequant to uv_dequant, QIndex to qindex.
      
      Change-Id: I1c356e5f886deb3f8807dc212de9799b55b09d58
      c34f6fcb
  17. 05 Apr, 2013 1 commit
    • John Koleszar's avatar
      Move EOB to per-plane data · 05a79f2f
      John Koleszar authored
      Continue migrating data from BLOCKD/MACROBLOCKD to the per-plane
      structures.
      
      Change-Id: Ibbfa68d6da438d32dcbe8df68245ee28b0a2fa2c
      05a79f2f
  18. 04 Apr, 2013 1 commit
  19. 26 Mar, 2013 2 commits
    • Ronald S. Bultje's avatar
      Add col/row-based coefficient scanning patterns for 1D 8x8/16x16 ADSTs. · d9094d8f
      Ronald S. Bultje authored
      These are mostly just for experimental purposes. I saw small gains (in
      the 0.1% range) when playing with this on derf.
      
      Change-Id: Ib21eed477bbb46bddcd73b21c5c708a5b46abedc
      d9094d8f
    • Deb Mukherjee's avatar
      Modeling default coef probs with distribution · fd18d5df
      Deb Mukherjee authored
      Replaces the default tables for single coefficient magnitudes with
      those obtained from an appropriate distribution. The EOB node
      is left unchanged. The model is represeted as a 256-size codebook
      where the index corresponds to the probability of the Zero or the
      One node. Two variations are implemented corresponding to whether
      the Zero node or the One-node is used as the peg. The main advantage
      is that the default prob tables will become considerably smaller and
      manageable. Besides there is substantially less risk of over-fitting
      for a training set.
      
      Various distributions are tried and the one that gives the best
      results is the family of Generalized Gaussian distributions with
      shape parameter 0.75. The results are within about 0.2% of fully
      trained tables for the Zero peg variant, and within 0.1% of the
      One peg variant.
      
      The forward updates are optionally (controlled by a macro)
      model-based, i.e. restricted to only convey probabilities from the
      codebook. Backward updates can also be optionally (controlled by
      another macro) model-based, but is turned off by default. Currently
      model-based forward updates work about the same as unconstrained
      updates, but there is a drop in performance with backward-updates
      being model based.
      
      The model based approach also allows the probabilities for the key
      frames to be adjusted from the defaults based on the base_qindex of
      the frame. Currently the adjustment function is a placeholder that
      adjusts the prob of EOB and Zero node from the nominal one at higher
      quality (lower qindex) or lower quality (higher qindex) ends of the
      range. The rest of the probabilities are then derived based on the
      model from the adjusted prob of zero.
      
      Change-Id: Iae050f3cbcc6d8b3f204e8dc395ae47b3b2192c9
      fd18d5df
  20. 07 Mar, 2013 3 commits
    • Dmitry Kovalev's avatar
      Consistent usage of ROUND_POWER_OF_TWO macro. · 3603dfb6
      Dmitry Kovalev authored
      Change-Id: I44660975e9985310d8c654c158ee7a61291b5a08
      3603dfb6
    • Ronald S. Bultje's avatar
      Re-add support for ADST in superblocks. · d3724abe
      Ronald S. Bultje authored
      This also changes the RD search to take account of the correct block
      index when searching (this is required for ADST positioning to work
      correctly in combination with tx_select).
      
      Change-Id: Ie50d05b3a024a64ecd0b376887aa38ac5f7b6af6
      d3724abe
    • Deb Mukherjee's avatar
      Coding con-zero count rather than EOB for coeffs · eb6ef241
      Deb Mukherjee authored
      This patch revamps the entropy coding of coefficients to code first
      a non-zero count per coded block and correspondingly remove the EOB
      token from the token set.
      
      STATUS:
      Main encode/decode code achieving encode/decode sync - done.
      Forward and backward probability updates to the nzcs - done.
      Rd costing updates for nzcs - done.
      Note: The dynamic progrmaming apporach used in trellis quantization
      is not exactly compatible with nzcs. A suboptimal approach has been
      used instead where branch costs are updated to account for changes
      in the nzcs.
      
      TODO:
      Training the default probs/counts for nzcs
      
      Change-Id: I951bc1e22f47885077a7453a09b0493daa77883d
      eb6ef241
  21. 05 Mar, 2013 1 commit
    • Ronald S. Bultje's avatar
      Make superblocks independent of macroblock code and data. · 111ca421
      Ronald S. Bultje authored
      Split macroblock and superblock tokenization and detokenization
      functions and coefficient-related data structs so that the bitstream
      layout and related code of superblock coefficients looks less like it's
      a hack to fit macroblocks in superblocks.
      
      In addition, unify chroma transform size selection from luma transform
      size (i.e. always use the same size, as long as it fits the predictor);
      in practice, this means 32x32 and 64x64 superblocks using the 16x16 luma
      transform will now use the 16x16 (instead of the 8x8) chroma transform,
      and 64x64 superblocks using the 32x32 luma transform will now use the
      32x32 (instead of the 16x16) chroma transform.
      
      Lastly, add a trellis optimize function for 32x32 transform blocks.
      
      HD gains about 0.3%, STDHD about 0.15% and derf about 0.1%. There's
      a few negative points here and there that I might want to analyze
      a little closer.
      
      Change-Id: Ibad7c3ddfe1acfc52771dfc27c03e9783e054430
      111ca421
  22. 27 Feb, 2013 1 commit
  23. 22 Feb, 2013 1 commit
    • Paul Wilkins's avatar
      Experimental removal of over quant code · dbf49420
      Paul Wilkins authored
      The over quant code was added in VP8 post
      bitstream freeze to allow compression to lower
      data rates
      
      In VP9 the real qualtizer range has been greatly
      extended anyway.
      
      Change-Id: I5d384fa5e9a83ef75a3df34ee30627bd21901526
      dbf49420
  24. 19 Feb, 2013 1 commit
    • Yaowu Xu's avatar
      Use lossless for Q0 · 93d6b86c
      Yaowu Xu authored
      The commit changes the coding mode to lossless whenever the lowest
      quantizer is choosen.
      
      As expected, test results showed no difference for cif and std-hd
      set where Q0 is rarely used. For yt and yt-hd set, Q0 is used for
      a number of clips, where this commit helped a lot in the high end.
      
      Average over all clips in the sets:
      yt: 2.391% 1.017% 1.066%
      hd: 1.937%  .764%  .787%
      
      Change-Id: I9fa9df8646fd70cb09ffe9e4202b86b67da16765
      93d6b86c
  25. 15 Feb, 2013 2 commits
  26. 13 Feb, 2013 2 commits
    • Paul Wilkins's avatar
      Fixed encoder decoder mismatch. · 56049d94
      Paul Wilkins authored
      Reverted part of change
      I19981d1ef0b33e4e5732739574f367fe82771a84
      
      That gives rise to an enc/dec mismatch.
      As things stand the memsets are still needed.
      
      Change-Id: I9fa076a703909aa0c4da0059ac6ae19aa530db30
      56049d94
    • Yaowu Xu's avatar
      enable bitstream lossless support · 17db5d00
      Yaowu Xu authored
      1. Added a bit in frame header to  to indicate if a frame is encoded
      in lossless mode, so decoder does not make the decision based on Q0
      2. Minor changes to make sure that lossy coding works same as when
      the lossless experiment is not enabled.
      3. Renamed function pointers for transforms to be consistent, using
      prefix fwd_txm and inv_txm for forward and inverse respectively
      
      To encode in lossless mode, using "--lossless=1 --min-q=0 --max-q=0"
      with vpxenc.
      
      Change-Id: Ifae53b26d2ffbe378d707e29d96817b8a5e6c068
      17db5d00
  27. 12 Feb, 2013 1 commit
    • Christian Duvivier's avatar
      Faster vp9_regular_quantize_b_8x8. · 0e4397f0
      Christian Duvivier authored
      A couple of scalar optimizations speeding up quantization by about 1.6x. Overall encoder speedup is around 3%.
      
      Change-Id: I19981d1ef0b33e4e5732739574f367fe82771a84
      0e4397f0
  28. 29 Jan, 2013 1 commit
    • Paul Wilkins's avatar
      Remove eob_max_offset markers. · 93762ca9
      Paul Wilkins authored
      Remove eob_max_offset markers and replace
      with the generic skip_block flag to indicate
      to the quantizer that all coeffs to be set to 0
      and eob position set to 0;
      
      Change-Id: Id477e8f8d4ec1a5562758904071013c24b76bfd7
      93762ca9