1. 05 Apr, 2013 1 commit
  2. 04 Apr, 2013 5 commits
    • Deb Mukherjee's avatar
      Fixing the newbintramodes experiment · ffc92da4
      Deb Mukherjee authored
      Adds back special casing B_PRED mode decoding but protected
      within the experimental macro.
      
      Change-Id: If98dc8e56b0ecfb1202540c2b7dfdd070cb81ca0
      ffc92da4
    • Dmitry Kovalev's avatar
      Simplifying get_delta_q function. · 52128c58
      Dmitry Kovalev authored
      Change-Id: I3a1e9cc5c3ed5be01ff75a84a6c82ec02c75af9c
      52128c58
    • Dmitry Kovalev's avatar
      Fixing bug introduced by previous commit. · f857e074
      Dmitry Kovalev authored
      Inside decode_sb_4x4 it should be
      "get_tx_type_4x4(mb, y_idx * y_size + x_idx)"
      but it was
      "get_tx_type_4x4(mb, y_idx * (2 * y_size) + x_idx)".
      Also making code of decode_sb_4x4, decode_sb_8x8, and decode_sb_16x16
      formatted in the same way.
      
      Change-Id: I15c7bef4fb575f7e9da19f953912324cb35d24dd
      f857e074
    • Dmitry Kovalev's avatar
      General code cleanup. · d5a01730
      Dmitry Kovalev authored
      Making code more readable in different places.
      
      Change-Id: Iea92c9a35e64d257ee358879fc04fc926843d52e
      d5a01730
    • Dmitry Kovalev's avatar
      Adding decode_sb_16x16 function. · 50e02b94
      Dmitry Kovalev authored
      Moving command code from decode_sb32 and decode_sb64 into new
      decode_sb_16x16 function.
      
      Change-Id: I57a161300af085557adec2fe600f3c10a145faf2
      50e02b94
  3. 03 Apr, 2013 5 commits
    • John Koleszar's avatar
      Remove special case vp9_decode_coefs_4x4 · 1e5f25ec
      John Koleszar authored
      This code was only called in the BPRED case, but had no real special
      case associated with it. Made BPRED behave like all other modes. No
      bitstream change.
      
      Change-Id: I87ba11fe723928b6314d094979011228d5ba006f
      1e5f25ec
    • Yunqing Wang's avatar
      Modify vp9_setup_interp_filters function · 4ca882f3
      Yunqing Wang authored
      Took vp9_setup_scale_factors_for_frame() out from
      vp9_setup_interp_filters(), so that it is only called once per
      frame instead of per macroblock. Decoder tests showed a 1.5%
      performance gain.
      
      Change-Id: I770cb09eb2140ab85132f82aed388ac0bdd3a0aa
      4ca882f3
    • Dmitry Kovalev's avatar
      Reimplementation of setup_frame_size. · da0232fd
      Dmitry Kovalev authored
      General code cleanup in loopfilter code. Modification of setup_frame_size,
      so now VP9_COMMON is modified in one place after all width/height checks
      passed.
      
      Change-Id: Iedf32df43a912d7aae788ed276ac6c429973f6fe
      da0232fd
    • Dmitry Kovalev's avatar
      Adding setup_pred_probs and read_txfm_mode functions. · 59b2928d
      Dmitry Kovalev authored
      Decomposition vp9_decode_frame function, moving code into read_txfm_mode
      and setup_pred_probs functions.
      
      Change-Id: I90970dea43cbcef4d6d61fdef267c2094ddee65d
      59b2928d
    • Dmitry Kovalev's avatar
      Renaming sb32_coded and sb64_coded fields. · dca8ad17
      Dmitry Kovalev authored
      Renaming sb32_coded to prob_sb32_coded and sb64_coded to prob_sb64_coded.
      
      Change-Id: I6de5cad00a57c3e066d53467f8c38cb6073dce11
      dca8ad17
  4. 02 Apr, 2013 3 commits
    • Dmitry Kovalev's avatar
      Lower case names for struct members. · 626635c2
      Dmitry Kovalev authored
      Lower case member names inside VP9D_CONFIG and VP9D_COMP structs.
      
      Change-Id: I75af9ad2d929a35c357207a3fd9ebedddabf79c3
      626635c2
    • Dmitry Kovalev's avatar
      Adding functions with common code for superblock decoding. · 9738e2db
      Dmitry Kovalev authored
      Adding decode_sb_8x8 and decode_sb_4x4 with common code for superblock
      decoding. Renaming decode_superblock32 to decode_sb32 and
      decode_superblock64 to decode_sb64.
      
      Change-Id: Id006d7e398b9bfa3acec4326e1e0c537ebfefdd3
      9738e2db
    • Dmitry Kovalev's avatar
      Code cleanup. · 50e54c11
      Dmitry Kovalev authored
      Adding multiple16 function, removing redundant code, better formatting.
      
      Change-Id: I50195b78ac8ab803e3d05c8fb05a7ca134fab386
      50e54c11
  5. 28 Mar, 2013 1 commit
    • Deb Mukherjee's avatar
      Framework changes in nzc to allow more flexibility · fe9b5143
      Deb Mukherjee authored
      The patch adds the flexibility to use standard EOB based coding
      on smaller block sizes and nzc based coding on larger blocksizes.
      The tx-sizes that use nzc based coding and those that use EOB based
      coding are controlled by a function get_nzc_used().
      By default, this function uses nzc based coding for 16x16 and 32x32
      transform blocks, which seem to bridge the performance gap
      substantially.
      
      All sets are now lower by 0.5% to 0.7%, as opposed to ~1.8% before.
      
      Change-Id: I06abed3df57b52d241ea1f51b0d571c71e38fd0b
      fe9b5143
  6. 27 Mar, 2013 3 commits
  7. 26 Mar, 2013 6 commits
    • Deb Mukherjee's avatar
      Implicit weighted prediction experiment · 23144d23
      Deb Mukherjee authored
      Adds an experiment to use a weighted prediction of two INTER
      predictors, where the weight is one of (1/4, 3/4), (3/8, 5/8),
      (1/2, 1/2), (5/8, 3/8) or (3/4, 1/4), and is chosen implicitly
      based on consistency of the predictors to the already
      reconstructed pixels to the top and left of the current macroblock
      or superblock.
      
      Currently the weighting is not applied to SPLITMV modes, which
      default to the usual (1/2, 1/2) weighting. However the code is in
      place controlled by a macro. The same weighting is used for Y and
      UV components, where the weight is derived from analyzing the Y
      component only.
      
      Results (over compound inter-intra experiment)
      derf: +0.18%
      yt: +0.34%
      hd: +0.49%
      stdhd: +0.23%
      
      The experiment suggests bigger benefit for explicitly signaled weights.
      
      Change-Id: I5438539ff4485c5752874cd1eb078ff14bf5235a
      23144d23
    • Ronald S. Bultje's avatar
      Use above/left (instead of previous in scan-order) as token context. · 790fb132
      Ronald S. Bultje authored
      Pearson correlation for above or left is significantly higher than for
      previous-in-scan-order (absolute values depend on position in scan, but
      in general, we gain about 0.1-0.2 by using either above or left; using
      both basically just makes this even better). For eob branch skipping,
      we continue to use the previous token in scan order.
      
      This helps about 0.9% on derf after re-training on a limited data set.
      Full re-training and results on larger-resolution clips are pending.
      
      Note that this commit breaks trellis, so we can probably get further
      gains out of it by fixing trellis at some later point.
      
      Change-Id: Iead68e296fc3a105cca746b5e3da9555d6010cfe
      790fb132
    • Dmitry Kovalev's avatar
      Decomposition of vp9_decode_frame function. · 4a3d7860
      Dmitry Kovalev authored
      Moving code from vp9_decode_frame function into setup_loopfilter and
      setup_segmentation functions. A little bit of cleanup.
      
      Change-Id: I2cce1813e4d7aeec701ccf752bf57e3bdd41b51c
      4a3d7860
    • John Koleszar's avatar
      Add an in-loop deringing experiment · 441e2eab
      John Koleszar authored
      Adds a per-frame, strength adjustable, in loop deringing filter. Uses
      the existing vp9_post_proc_down_and_across 5 tap thresholded blur
      code, with a brute force search for the threshold.
      
      Results almost strictly positive on the YT HD set, either having no
      effect or helping PSNR in the range of 1-3% (overall average 0.8%).
      Results more mixed for the CIF set, (-0.5 min, 1.4 max, 0.1 avg).
      This has an almost strictly negative impact to SSIM, so examining a
      different filter or a more balanced search heuristic is in order.
      
      Other test set results pending.
      
      Change-Id: I5ca6ee8fe292dfa3f2eab7f65332423fa1710b58
      441e2eab
    • Deb Mukherjee's avatar
      Bugfix in model coef prob experiment · d14c7265
      Deb Mukherjee authored
      Fixes an issue with model based update that got into
      the original patch that was merged.
      
      Change-Id: Ie42d3d0aff2e48cd187d96664dbd3e9d6d3ac22f
      d14c7265
    • 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
  8. 25 Mar, 2013 1 commit
    • Dmitry Kovalev's avatar
      Code cleanup. · 7cc14e59
      Dmitry Kovalev authored
      Lower case variable names, code simplification by using already defined
      clamp and read_le16 functions.
      
      Change-Id: I8fd544365bd8d1daed86d7b2ae0843e4ef80df08
      7cc14e59
  9. 20 Mar, 2013 1 commit
  10. 18 Mar, 2013 1 commit
    • John Koleszar's avatar
      Replace scaling byte with explicit display size · 8a3f55f2
      John Koleszar authored
      If the intended display size is different than the size the frame is
      coded at, then send that size explicitly in the bitstream. Adds a new
      bit to the frame header to indicate whether the extra size fields
      are present.
      
      Change-Id: I525c66f22d207efaf1e5f903c6a2a91b80245854
      8a3f55f2
  11. 16 Mar, 2013 1 commit
    • Deb Mukherjee's avatar
      Context-pred fix to not use top/left on edges · b1921b2f
      Deb Mukherjee authored
      This fix resolves some of the mismatch issues being seen
      recently. While this is the right thing to do when tiling
      is used for this experiment, it is not the underlying cause
      of the the mismatches.
      Something else is causing writing outside of the allowable
      frame area in the encoder leading to this mismatch.
      
      Change-Id: If52c6f67555aa18ab8762865384e323b47237277
      b1921b2f
  12. 14 Mar, 2013 2 commits
    • Dmitry Kovalev's avatar
      Cleaning up frame decoding functionality. · 9285703e
      Dmitry Kovalev authored
      Change-Id: I25424904fb8541fc19d00d9fbc592379374b98c0
      9285703e
    • John Koleszar's avatar
      Fix pulsing issue with scaling · 9b7be888
      John Koleszar authored
      Updates the YV12_BUFFER_CONFIG structure to be crop-aware. The
      exiting width/height parameters are left unchanged, storing the
      width and height algined to a 16 byte boundary. The cropped
      dimensions are added as new fields.
      
      This fixes a nasty visual pulse when switching between scaled and
      unscaled frame dimensions due to a mismatch between the scaling
      ratio and the 16-byte aligned sizes.
      
      Change-Id: Id4a3f6aea6b9b9ae38bdfa1b87b7eb2cfcdd57b6
      9b7be888
  13. 13 Mar, 2013 1 commit
    • Yaowu Xu's avatar
      removed reference to "LLM" and "x8" · 00555263
      Yaowu Xu authored
      The commit changed the name of files and function to remove obselete
      reference to LLM and x8.
      
      Change-Id: I973b20fc1a55149ed68b5408b3874768e6f88516
      00555263
  14. 12 Mar, 2013 1 commit
    • Dmitry Kovalev's avatar
      Code cleanup. · 2891d70b
      Dmitry Kovalev authored
      Removing redundant code, introducing new functions for better
      decomposition, adding 'clamp' function to vp9_common.h.
      
      Change-Id: Ic3b8ca13bbc38f60f0c9c43910b5802005e31aaf
      2891d70b
  15. 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
  16. 07 Mar, 2013 2 commits
    • 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
  17. 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
  18. 04 Mar, 2013 1 commit
    • 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
  19. 28 Feb, 2013 1 commit
  20. 27 Feb, 2013 2 commits
    • 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