1. 13 Feb, 2013 1 commit
    • Paul Wilkins's avatar
      Remove NEWCOEFCONTEXT experiment. · 6a9f0c61
      Paul Wilkins authored
      Removal of the  NEWCOEFCONTEXT experiment to
      reduce code clutter and make it easier to experiment with
      some other changes to the coefficient coding context.
      
      Change-Id: Icd17b421384c354df6117cc714747647c5eb7e98
      6a9f0c61
  2. 12 Feb, 2013 1 commit
  3. 28 Jan, 2013 1 commit
    • Paul Wilkins's avatar
      Segment Skip Flag · 0ff9b033
      Paul Wilkins authored
      First step in simplifying the segment mode and
      segment EOB flags into a simpler segment skip
      flag that implies 0,0 mv and EOB at position 0.
      
      Change-Id: Ib750cac31a7a02dc21082580498efd9f7d8d72a5
      0ff9b033
  4. 10 Jan, 2013 1 commit
  5. 08 Jan, 2013 1 commit
  6. 20 Dec, 2012 1 commit
    • 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
  7. 19 Dec, 2012 1 commit
    • John Koleszar's avatar
      Use boolcoder API instead of inlining · 05ec800e
      John Koleszar authored
      This patch changes the token packing to call the bool encoder API rather
      than inlining it into the token packing function, and similarly removes
      a special get_signed case from the detokenizer. This allows easier
      experimentation with changing the bool coder as a whole.
      
      Change-Id: I52c3625bbe4960b68cfb873b0e39ade0c82f9e91
      05ec800e
  8. 18 Dec, 2012 3 commits
  9. 17 Dec, 2012 1 commit
  10. 13 Dec, 2012 1 commit
  11. 11 Dec, 2012 1 commit
  12. 08 Dec, 2012 3 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
      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
  13. 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
  14. 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
  15. 28 Nov, 2012 2 commits
  16. 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
  17. 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
  18. 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
  19. 21 Nov, 2012 1 commit
  20. 17 Nov, 2012 7 commits
  21. 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
  22. 14 Nov, 2012 1 commit
  23. 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
  24. 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
  25. 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