1. 08 Dec, 2012 2 commits
    • 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
  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. 29 Nov, 2012 2 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
    • 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
  4. 28 Nov, 2012 2 commits
  5. 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
  6. 25 Nov, 2012 1 commit
    • Ronald S. Bultje's avatar
      Move switch(tx_size) around txsize to detokenize.c. · 25b609b6
      Ronald S. Bultje authored
      Add a new function vp9_decode_mb_tokens() that handles the switch
      between different per-tx-size detokenize functions. Make actual
      implementations (vp9_decode_mb_tokens_NxN()) static.
      
      Change-Id: I9e0c4ef410bfa90128a02b472c079a955776816d
      25b609b6
  7. 23 Nov, 2012 4 commits
    • Ronald S. Bultje's avatar
      Restructure vp9_decode_mb_tokens_8x8() a bit. · 9970d8b6
      Ronald S. Bultje authored
      Don't declare variables if they only ever have a single value and are
      used only as argument to another function call; instead, just hardcode
      the value in the function call directly. Split out UV and Y coefficient
      loops for clarity. Use xd->block[].qcoeff instead of xd->qcoeff + magic
      to remove use of magic offset variables.
      
      Change-Id: I5b17eda1bb666c69c2b7ea957d5525cd78192e33
      9970d8b6
    • Ronald S. Bultje's avatar
      Restructure vp9_decode_mb_tokens_16x16() a bit. · f090b6b4
      Ronald S. Bultje authored
      Don't declare variables if they only ever have a single value and are
      used only as argument to another function call; instead, just hardcode
      the value in the function call directly. Also remove unneeded brackets
      around a code block, and remove the magic offsets 64 and 256 for chroma
      values in the coefficient memory block.
      
      Change-Id: I14fc14120a81ea1d6fb862674e8bf8cf6ba3d114
      f090b6b4
    • Ronald S. Bultje's avatar
      Make get_eob() function static. · 0312c3d6
      Ronald S. Bultje authored
      Change-Id: Idde3ab97960eda7022367c1f91a873a479bc9d7b
      0312c3d6
    • Ronald S. Bultje's avatar
      Rename "block_type" function argument to "txfm_size". · 44228471
      Ronald S. Bultje authored
      Also fix the type (TX_SIZE instead of int).
      
      Change-Id: Ib9b3f33835e58a6e758ed5f37bb64543e62b6a86
      44228471
  8. 21 Nov, 2012 1 commit
  9. 17 Nov, 2012 7 commits
  10. 15 Nov, 2012 1 commit
    • John Koleszar's avatar
      detokenize: use SEG_LVL_EOB feature consistently · 6becad42
      John Koleszar authored
      Update decode_coefs() to break when c >= eob, since it's possible that
      c starts the loop from 1 and eob is 0. The loop won't terminate in that
      case.
      
      Add new get_eob() function to consistently clamp the eob based on the
      segment level EOB and the block size. It's possible to code a segment
      level EOB that's greater than the block size, and that leads to an
      out of bounds access.
      
      Change-Id: I859563b30414615cf1b30dcc2aef8a1de358c42d
      6becad42
  11. 14 Nov, 2012 1 commit
  12. 10 Nov, 2012 1 commit
    • Deb Mukherjee's avatar
      New b-intra mode where direction is contextual · d01357bb
      Deb Mukherjee authored
      Preliminary patch on a new 4x4 intra mode B_CONTEXT_PRED where the
      dominant direction from the context is used to encode. Various decoder
      changes are needed to support decoding of B_CONTEXT_PRED in conjunction
      with hybrid transforms since the scan order and tokenization depends on
      the actual direction of prediction obtained from the context. Currently
      the traditional directional modes are used in conjunction with the
      B_CONTEXT_PRED, which also seems to provide the best results.
      
      The gains are small - in the 0.1% range.
      
      Change-Id: I5a7ea80b5218f42a9c0dfb42d3f79a68c7f0cdc2
      d01357bb
  13. 06 Nov, 2012 1 commit
    • Yaowu Xu's avatar
      silent a lot of MSVC compiler warnings · 8a336b0d
      Yaowu Xu authored
      there are still a couple type of warning left, which are related to
      double constants assigned to float type. As those would be addressed
      by the conversion of transforms into integer version. This commit
      has left those un-dealt with.
      
      Change-Id: I48fd9b489c0c27ad6b543f4177423419f929f2bb
      8a336b0d
  14. 02 Nov, 2012 1 commit
    • Yunqing Wang's avatar
      Fix eobs data type · d41b0e64
      Yunqing Wang authored
      The block sizes for decoding tokens are up to 16x16, which means
      eobs is within [0, 256]. Using (signed) char is not enough. Changed
      eobs data type to unsigned short to fix the problem.
      
      Change-Id: I88a7d3098e1f1604c336d6adb88ffec971fb03a6
      d41b0e64
  15. 01 Nov, 2012 2 commits
  16. 31 Oct, 2012 4 commits
  17. 30 Oct, 2012 2 commits
  18. 22 Oct, 2012 3 commits
  19. 19 Oct, 2012 2 commits
    • John Koleszar's avatar
      Remove bc, bc2 from pbi,cpi,xd · e9fd1eac
      John Koleszar authored
      Pass the bool coder to be used explicitly. This avoids cases where two
      different bool coders can be addressed from the same function. Also be
      more consistent with bool coder variable naming, start to standardize
      on 'bc'.
      
      Change-Id: I1c95e2fdbe24ebe8c0f84924daa1728e3b054a31
      e9fd1eac
    • 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
  20. 15 Oct, 2012 1 commit
    • 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