1. 09 Mar, 2013 1 commit
    • Deb Mukherjee's avatar
      Continued experiment with nonzero count · a28139c8
      Deb Mukherjee authored
      Adds probability updates for extra bits for the nzcs, code for
      getting nzc stats, plus some minor cleanups and fixes.
      
      Change-Id: If2814e7f04fb52f5025ad9f400f3e6c50a00b543
      a28139c8
  2. 07 Mar, 2013 5 commits
    • Yunqing Wang's avatar
      Optimize add_constant_residual function · f2407826
      Yunqing Wang authored
      Optimized adding constant diff to predictor, which gave about
      2% decoder performance gain.
      
      Change-Id: I47db20c31428e8c4a8f16214a85cbe386a6e9303
      f2407826
    • Yunqing Wang's avatar
      Allocate 16-byte aligned diff buffer · b339aea6
      Yunqing Wang authored
      This was done based on John's suggestion.
      
      Change-Id: I62516a513c31fe3dbea0d6cd063df79d9e819ec8
      b339aea6
    • 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
    • Yunqing Wang's avatar
      Fix issue in add_residual intrinsic function · 31623715
      Yunqing Wang authored
      Yaowu found this function had a compiling issue with MSVC because
      of using _mm_storel_pi((__m64 *)(dest + 0 * stride), (__m128)p0).
      To be safe, changed back to use integer store instruction.
      
      Also, for some build, diff could not always be 16-byte aligned.
      Changed that in the code.
      
      Change-Id: I9995e5446af15dad18f3c5c0bad1ae68abef6c0d
      31623715
    • 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
  3. 06 Mar, 2013 1 commit
    • Yunqing Wang's avatar
      Optimize add_residual function · 943c6d71
      Yunqing Wang authored
      Optimized adding diff to predictor, which gave 0.8% decoder
      performance gain.
      
      Change-Id: Ic920f0baa8cbd13a73fa77b7f9da83b58749f0f8
      943c6d71
  4. 05 Mar, 2013 2 commits
    • Dmitry Kovalev's avatar
      Code cleanup. · 7f99c3c5
      Dmitry Kovalev authored
      Removing redundant 'extern' keywords, fixing formatting and #include order,
      code simplification.
      
      Change-Id: I0e5fdc8009010f3f885f13b5d76859b9da511758
      7f99c3c5
    • 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
  5. 04 Mar, 2013 2 commits
    • Yunqing Wang's avatar
      Optimize vp9_short_idct4x4llm function · e8bc9f42
      Yunqing Wang authored
      Wrote a SSE2 vp9_short_idct4x4llm to improve the decoder
      performance.
      
      Change-Id: I90b9d48c4bf37aaf47995bffe7e584e6d4a2c000
      e8bc9f42
    • Jingning Han's avatar
      Support 16K sequence coding · 5957b2b5
      Jingning Han authored
      Fixed a couple of variable/function definitions, as well as header
      handling to support 16K sequence coding at high bit-rates.
      
      The width and height are each specified by two bytes in the header.
      Use an extra byte to explicitly indicate the scaling factors in
      both directions, each ranging from 0 to 15.
      
      Tested coding up to 16400x16400 dimension.
      
      Change-Id: Ibc2225c6036620270f2c0cf5172d1760aaec10ec
      5957b2b5
  6. 01 Mar, 2013 1 commit
    • Yunqing Wang's avatar
      Add eob<=10 case in idct32x32 · c550bb3b
      Yunqing Wang authored
      Simplified idct32x32 calculation when there are only 10 or less
      non-zero coefficients in 32x32 block. This helps the decoder
      performance.
      
      Change-Id: If7f8893d27b64a9892b4b2621a37fdf4ac0c2a6d
      c550bb3b
  7. 28 Feb, 2013 3 commits
  8. 27 Feb, 2013 6 commits
    • Dmitry Kovalev's avatar
      Motion vectors code cleanup. · 0c0de002
      Dmitry Kovalev authored
      Fixing indentation, removing redundant parenthesis, deciphering single
      letter variable names, better spacing.
      
      Change-Id: I1d447a7d69eddbf1e94e0820423615f40ea2d591
      0c0de002
    • Yunqing Wang's avatar
      Remove unused file · bf6cca44
      Yunqing Wang authored
      Removed vp9/decoder/x86/vp9_idct_blk_mmx.c
      
      Change-Id: I07ab06382a394cf556fa5a8e3c98b91f6e4f9ce8
      bf6cca44
    • Ronald S. Bultje's avatar
      Move eob from BLOCKD to MACROBLOCKD. · e8c74e2b
      Ronald S. Bultje authored
      Consistent with VP8.
      
      Change-Id: I8c316ee49f072e15abbb033a80e9c36617891f07
      e8c74e2b
    • John Koleszar's avatar
      Combined motion compensation with scaled predictors · 77f88e97
      John Koleszar authored
      This patch extends the previous support for using references of a
      different resolution in ZEROMV mode to all inter prediction modes.
      Subpixel based best-mv scoring is disabled when the reference frame
      differs in resolution from the current frame.
      
      Change-Id: Id4dc3e5e6692de98d9857fd56bfad3ac57e944ac
      77f88e97
    • John Koleszar's avatar
      Spatial resamping of ZEROMV predictors · eb939f45
      John Koleszar authored
      This patch allows coding frames using references of different
      resolution, in ZEROMV mode. For compound prediction, either
      reference may be scaled.
      
      To test, I use the resize_test and enable WRITE_RECON_BUFFER
      in vp9_onyxd_if.c. It's also useful to apply this patch to
      test/i420_video_source.h:
      
        --- a/test/i420_video_source.h
        +++ b/test/i420_video_source.h
        @@ -93,6 +93,7 @@ class I420VideoSource : public VideoSource {
      
           virtual void FillFrame() {
             // Read a frame from input_file.
        +    if (frame_ != 3)
             if (fread(img_->img_data, raw_sz_, 1, input_file_) == 0) {
               limit_ = frame_;
             }
      
      This forces the frame that the resolution changes on to be coded
      with no motion, only scaling, and improves the quality of the
      result.
      
      Change-Id: I1ee75d19a437ff801192f767fd02a36bcbd1d496
      eb939f45
    • Yunqing Wang's avatar
      Optimize vp9_dc_only_idct_add_c function · 35bc02c6
      Yunqing Wang authored
      Wrote SSE2 version of vp9_dc_only_idct_add_c function. In order to
      improve performance, clipped the absolute diff values to [0, 255].
      This allowed us to keep the additions/subtractions in 8 bits.
      Test showed an over 2% decoder performance increase.
      
      Change-Id: Ie1a236d23d207e4ffcd1fc9f3d77462a9c7fe09d
      35bc02c6
  9. 26 Feb, 2013 3 commits
  10. 25 Feb, 2013 2 commits
    • Dmitry Kovalev's avatar
      Code cleanup. · ab196b7e
      Dmitry Kovalev authored
      Lower case names of variables. Removing redundant spaces, parentheses,
      casts, and variables.
      
      Change-Id: I55b80c55b7d5adca44c1e8adb40a124c0680f229
      ab196b7e
    • Jingning Han's avatar
      clean up forward and inverse hybrid transform · 77a3becf
      Jingning Han authored
      Rebased.
      
      Remove the old matrix multiplication transform computation. The 16x16
      ADST/DCT can be switched on/off and evaluated by setting ACTIVE_HT16
      300/0 in vp9/common/vp9_blockd.h.
      
      Change-Id: Icab2dbd18538987e1dc4e88c45abfc4cfc6e133f
      77a3becf
  11. 23 Feb, 2013 2 commits
    • Ronald S. Bultje's avatar
      Split coefficient token tables intra vs. inter. · 0c9e2e9a
      Ronald S. Bultje authored
      Change-Id: I5416455f8f129ca0f450d00e48358d2012605072
      0c9e2e9a
    • Paul Wilkins's avatar
      Further changes to coefficient contexts. · c17672a3
      Paul Wilkins authored
      This patch alters the balance of context between the
      coefficient bands (reflecting the position of coefficients
      within a transform blocks) and the energy of the previous
      token (or tokens) within a block.
      
      In this case the number of coefficient bands is reduced
      but more previous token energy bands are supported.
      
      Some initial rebalancing of the default tables has been
      by running multiple derf clips at multiple data rates using
      the ENTOPY_STATS macro. Further balancing needs to be
      done using larger image formatsd especially in regard to
      the bigger transform sizes which are not as well represented
      in encodings of smaller image formats.
      
      Change-Id: If9736e95c391e711b04aef6393d26f60f36e1f8a
      c17672a3
  12. 22 Feb, 2013 1 commit
    • Dmitry Kovalev's avatar
      Code cleanup. · 548b4dd5
      Dmitry Kovalev authored
      Removing redundant 'extern' keywords and parentheses, fixing indentation,
      making variable names lower case, using short expressions x *= c
      instead of x = x * c, minor code simplifications.
      
      Change-Id: If6a25fcf306d1db26e90d27e3c24a32735c607de
      548b4dd5
  13. 21 Feb, 2013 2 commits
    • Dmitry Kovalev's avatar
      Code cleanup. · 5a18106f
      Dmitry Kovalev authored
      Removing redundant 'extern' keywords. Moving VP9DX_BOOL_DECODER from .h
      to .c file.
      
      Change-Id: I5a3056cb3d33db7ed3c3f4629675aa8e21014e66
      5a18106f
    • Ronald S. Bultje's avatar
      Remove "eobs" array in MACROBLOCKD. · 35524e22
      Ronald S. Bultje authored
      The information is a duplicate of "eob" in BLOCKD.
      
      Change-Id: Ia6416273bd004611da801e4bfa6e2d328d6f02a3
      35524e22
  14. 20 Feb, 2013 2 commits
    • Yaowu Xu's avatar
      Merge lossless experiment · d262e26c
      Yaowu Xu authored
      Change-Id: I7b7b8d4fda3a23699e0c920d727f8c15d37d43aa
      d262e26c
    • Yaowu Xu's avatar
      fixed an enc/dec mis-match issue · b13f38d4
      Yaowu Xu authored
      The issue was caused by a out-of-order merge, which leads to wrong
      functions are called at lossless mode.
      
      Change-Id: If157729abab62954c729e0377e7f53edb7db22ca
      b13f38d4
  15. 19 Feb, 2013 1 commit
    • Jingning Han's avatar
      16x16 butterfly inverse ADST/DCT hybrid transform · cd907b16
      Jingning Han authored
      rebased.
      
      This patch includes 16x16 butterfly inverse ADST/DCT hybrid
      transform. It uses the variant ADST of kernel
          sin((2k+1)*(2n+1)/4N),
      which allows a butterfly implementation.
      
      The coding gains as compared to DCT 16x16 are about 0.1% for
      both derf and std-hd. It is noteworthy that for std-hd sets
      many sequences gains about 0.5%, some 0.2%. There are also few
      points that provides -1% to -3% performance. Hence the average
      goes to about 0.1%.
      
      Change-Id: Ie80ac84cf403390f6e5d282caa58723739e5ec17
      cd907b16
  16. 15 Feb, 2013 4 commits
  17. 14 Feb, 2013 1 commit
  18. 13 Feb, 2013 1 commit
    • Ronald S. Bultje's avatar
      Add support for tile rows. · 89a206ef
      Ronald S. Bultje authored
      These allow sending partial bitstream packets over the network before
      encoding a complete frame is completed, thus lowering end-to-end
      latency. The tile-rows are not independent.
      
      Change-Id: I99986595cbcbff9153e2a14f49b4aa7dee4768e2
      89a206ef