1. 08 Dec, 2012 1 commit
    • 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
  2. 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
  3. 03 Dec, 2012 1 commit
    • Yaowu Xu's avatar
      merged optimiz_b_16x16() into optmize_b() · 806d05e1
      Yaowu Xu authored
      The commit changed the trellis quantization function optimize_b() to
      work for MBs using all transform sizes, and eliminated the function
      for MB using 16x16 transform only, optimize_b_16x16.
      
      Change-Id: I3fa650587ab5198ed16315b38754783a72b33ba2
      806d05e1
  4. 29 Nov, 2012 3 commits
    • Yaowu Xu's avatar
      minor fix to eob check for setting CONTEXT · 7ab1d3e4
      Yaowu Xu authored
      Previously, the "!=" check is logically incorrect when eob is at 0 and
      effective coefficient starting position is 1. This commit should have
      no effect on bitstream.
      
      Change-Id: I6ce3a847c7e72bfbe4f7c74f88e3310c6b9b6d30
      7ab1d3e4
    • Jim Bankoski's avatar
      more unused variables. · cf671e27
      Jim Bankoski authored
      Change-Id: Ibe11e9275949b26a77fa9c8ac2e7c356ae533d5d
      cf671e27
    • Deb Mukherjee's avatar
      Fixing 8x8/4x4 ADST for intra modes with tx select · 0742b1e4
      Deb Mukherjee authored
      This patch allows use of 8x8 and 4x4 ADST correctly for Intra
      16x16 modes and Intra 8x8 modes when the block size selected
      is smaller than the prediction mode. Also includes some cleanups
      and refactoring.
      
      Rebase.
      
      Change-Id: Ie3257bdf07bdb9c6e9476915e3a80183c8fa005a
      0742b1e4
  5. 28 Nov, 2012 1 commit
  6. 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
  7. 25 Nov, 2012 1 commit
  8. 15 Nov, 2012 1 commit
  9. 08 Nov, 2012 1 commit
    • Ronald S. Bultje's avatar
      Implement tx_select for superblock encoding. · 1d4fbeb3
      Ronald S. Bultje authored
      Also split superblock handling code out of decode_macroblock() into
      a new function decode_superblock(), for easier readability.
      
      Derf +0.05%, HD +0.2%, STDHD +0.1%. We can likely get further gains
      by allowing to select mb_skip_coeff for a subset of the complete SB
      or something along those lines, because although this change allows
      coding smaller transforms for bigger predictors, it increases the
      overhead of coding EOBs to skip the parts where the residual is
      near-zero, and thus the overall gain is not as high as we'd expect.
      
      Change-Id: I552ce1286487267f504e3090b683e15515791efa
      1d4fbeb3
  10. 01 Nov, 2012 2 commits
  11. 31 Oct, 2012 3 commits
  12. 30 Oct, 2012 1 commit
  13. 29 Oct, 2012 2 commits
  14. 22 Oct, 2012 3 commits
  15. 19 Oct, 2012 1 commit
    • Deb Mukherjee's avatar
      Some cleanups and fixes. · f3208f36
      Deb Mukherjee authored
      Separates the logic on transform type selection previously spread out
      over a number of files into a separate function. Currently the tx_type
      field in b_mode_info is not used, but still left in there to eventually
      use for signaling the transform type in the bitstream.
      
      Also, now for tx_type = DCT_DCT, the regular integer DCT is used, as
      opposed to the floating point DCT used in conjuction with hybrid
      transform.
      
      Results change somewhat due to the transform change, but are within
      reasonable limits. The hd/std-hd sets are slightly up, while derf/yt
      are slightly down.
      
      Change-Id: I5776840c2239ca2da31ca6cfd7fd1148dc5f9e0f
      f3208f36
  16. 17 Oct, 2012 1 commit
  17. 16 Oct, 2012 1 commit
  18. 15 Oct, 2012 5 commits
    • Ronald S. Bultje's avatar
      Add and consistently use PLANE_TYPE. · 41e3a9ef
      Ronald S. Bultje authored
      Change the macros PLANE_TYPE_{Y_NO_DC,Y2,UV,Y_WITH_DC} to a typed enum,
      and use this typed enum consistently across all places where relevant.
      In places where the type is implied (e.g. in functions that only handle
      second order planes or chroma planes), remove it as a function argument
      and instead hardcode the proper enum in the code directly.
      
      Change-Id: I93652b4a36aa43163d49c732b0bf5c4442738c47
      41e3a9ef
    • Ronald S. Bultje's avatar
      Make optimize_mb_16x16() static. · e7a4bcca
      Ronald S. Bultje authored
      It is not used outside this file.
      
      Change-Id: Id0947180edab4c5f1f50589863350b21e97c25f1
      e7a4bcca
    • Ronald S. Bultje's avatar
      Remove assignment in vp8_optimize_mby_16x16(). · 781f6ad7
      Ronald S. Bultje authored
      The result of the assignment is unused.
      
      Change-Id: Id94b790baa6451f24e9aeda6f036390388d93921
      781f6ad7
    • Ronald S. Bultje's avatar
      Remove duplicate code in optimize_mb_NxN vs. vp8_optimize_mby/uv_NxN(). · 11e42d46
      Ronald S. Bultje authored
      Instead, just call vp8_optimize_mby/uv_NxN() inside optimize_mb_NxN().
      
      Change-Id: Ief941064d86db4277ba02e990a26819144b55f7c
      11e42d46
    • Ronald S. Bultje's avatar
      Remove duplicate or unused code in encoder/encodemb.c. · 238ed517
      Ronald S. Bultje authored
      Also make some minor stylistic changes to bring the code closer to
      the style guide. Remove distinction between inter and intra transform
      functions, since both do exactly the same thing except for the check
      against SPLITMV for the second-order transform. Remove some commented
      out debug code. Remove 8x8/16x16 transform code in encode_inter16x16y(),
      since the first-pass only uses 4x4 anyway.
      
      Change-Id: Ife54816ff759825b9141f95dc2ba43c253c14dba
      238ed517
  19. 14 Oct, 2012 3 commits
  20. 11 Oct, 2012 1 commit
  21. 27 Sep, 2012 1 commit
    • Deb Mukherjee's avatar
      Entropy coding for hybrid transform · 3f5d60b3
      Deb Mukherjee authored
      Separates the entropy coding context models for 4x4, 8x8 and 16x16
      ADST variants.
      
      There is a small improvement for HD (hd/std-hd) by about 0.1-0.2%.
      Results on derf/yt are about the same, probably because there is not
      enough statistics.
      
      Results may improve somewhat once the initial probability tables are
      updated for the hybrid transforms which is coming soon.
      
      Change-Id: Ic7c0c62dacc68ef551054fdb575be8b8507d32a8
      3f5d60b3
  22. 30 Aug, 2012 1 commit
    • Jingning Han's avatar
      hybrid transform of 16x16 dimension · de6dfa6b
      Jingning Han authored
      Enable ADST/DCT of dimension 16x16 for I16X16 modes. This change provides
      benefits mostly for hd sequences.
      
      Set up the framework for selectable transform dimension.
      
      Also allowing quantization parameter threshold to control the use
      of hybrid transform (This is currently disabled by setting threshold
      always above the quantization parameter. Adaptive thresholding can
      be built upon this, which will further improve the coding performance.)
      
      The coding performance gains (with respect to the codec that has all
      other configuration settings turned on) are
      
      derf:   0.013
      yt:     0.086
      hd:     0.198
      std-hd: 0.501
      
      Change-Id: Ibb4263a61fc74e0b3c345f54d73e8c73552bf926
      de6dfa6b
  23. 21 Aug, 2012 1 commit
  24. 20 Aug, 2012 1 commit
    • Ronald S. Bultje's avatar
      Superblock coding. · 5d4cffb3
      Ronald S. Bultje authored
      This commit adds a pick_sb_mode() function which selects the best 32x32
      superblock coding mode. Then it selects the best per-MB modes, compares
      the two and encodes that in the bitstream.
      
      The bitstream coding is rather simplistic right now. At the SB level,
      we code a bit to indicate whether this block uses SB-coding (32x32
      prediction) or MB-coding (anything else), and then we follow with the
      actual modes. This could and should be modified in the future, but is
      omitted from this commit because it will likely involve reorganizing
      much more code rather than just adding SB coding, so it's better to let
      that be judged on its own merits.
      
      Gains on derf: about even, YT/HD: +0.75%, STD/HD: +1.5%.
      
      Change-Id: Iae313a7cbd8f75b3c66d04a68b991cb096eaaba6
      5d4cffb3
  25. 16 Aug, 2012 1 commit
  26. 15 Aug, 2012 1 commit
    • Paul Wilkins's avatar
      Code clean up. · 77dc5c65
      Paul Wilkins authored
      Further cases of inconsistent naming convention.
      
      Change-Id: Id3411ecec6f01a4c889268a00f0c9fd5a92ea143
      77dc5c65