1. 19 Apr, 2013 4 commits
    • John Koleszar's avatar
      Move dst to per-plane MACROBLOCKD data · d12376aa
      John Koleszar authored
      First in a series of commits moving the framebuffers pointers to
      per-plane data, so that they can be indexed numerically rather than
      by name.
      
      Change-Id: I6e0d60fd4d51e6375c384eb7321776564df21775
      d12376aa
    • Jim Bankoski's avatar
      catch all for new block sizes · afb04eb2
      Jim Bankoski authored
      Just make sure we don't stop them from testing in speed 1.
      
      Change-Id: Iec9b3dba0a32616ff7a451207e0f54b81bb72575
      afb04eb2
    • Jim Bankoski's avatar
      set up a new speed 1 · b6ef0823
      Jim Bankoski authored
      slightly worse results for faster encodes
      
      Change-Id: I25ea82a18ce20635dbcd328808c1d05ac1f58fd7
      b6ef0823
    • Paul Wilkins's avatar
      Simplification of MVref search. · 92e8a3f5
      Paul Wilkins authored
      As we are no longer able to sort the candidate
      mvrefs in both encoder and decode and given
      that the cost of explicit signalling has proved
      prohibitive, it no longer makes sense to find more
      than 2 candidates.
      
      This patch:
      
      Modifies and simplifies add_candidate_mv()
      
      Removes the forced addition of a 0 vector in the
      MAX_MV_REF_CANDIDATES-1 position (in preparation
      to reducing MAX_MV_REF_CANDIDATES to 2).
      
      Re-orders the addition of candidates slightly.
      
      This actually gives small gains (circa 0.2% on std-hd)
      
      A subsequent patch will remove NEW_MVREF experiment,
      reduce MAX_MV_REF_CANDIDATES to 2 and remove distance
      weights as these are implicit now in the order.
      
      Change-Id: I3dbe1a6f8a1a18b3c108257069c22a1141a207a4
      92e8a3f5
  2. 18 Apr, 2013 2 commits
  3. 17 Apr, 2013 1 commit
  4. 16 Apr, 2013 3 commits
  5. 15 Apr, 2013 4 commits
  6. 12 Apr, 2013 2 commits
    • Jingning Han's avatar
      Enable inter predictor for rectangular block size · 3ba9dd41
      Jingning Han authored
      Combine superblock inter predictors into a unified function that
      allows configurable block width and height. The inter predictions
      of block sizes smaller than 16x16 are handled differently. To be
      continued on merging them later.
      
      Change-Id: I14075959dd5e221f00c205c99ca35c1c31ef728e
      3ba9dd41
    • Yaowu Xu's avatar
      Rename B_PRED to I4X4_PRED · 7de5edd1
      Yaowu Xu authored
      So it is consistent with I8x8_PRED.
      
      Change-Id: Iefa65124b2419690d83e526c611129c0ede29d11
      7de5edd1
  7. 11 Apr, 2013 6 commits
  8. 10 Apr, 2013 2 commits
    • Ronald S. Bultje's avatar
      Make RD superblock mode search size-agnostic. · b4f6098e
      Ronald S. Bultje authored
      Merge various super_block_yrd and super_block_uvrd versions into one
      common function that works for all sizes. Make transform size selection
      size-agnostic also. This fixes a slight bug in the intra UV superblock
      code where it used the wrong transform size for txsz > 8x8, and stores
      the txsz selection for superblocks properly (instead of forgetting it).
      Lastly, it removes the trellis search that was done for 16x16 intra
      predictors, since trellis is relatively expensive and should thus only
      be done after RD mode selection.
      
      Gives basically identical results on derf (+0.009%).
      
      Change-Id: If4485c6f0a0fe4038b3172f7a238477c35a6f8d3
      b4f6098e
    • Ronald S. Bultje's avatar
      Make SB coding size-independent. · a3874850
      Ronald S. Bultje authored
      Merge sb32x32 and sb64x64 functions; allow for rectangular sizes. Code
      gives identical encoder results before and after. There are a few
      macros for rectangular block sizes under the sbsegment experiment; this
      experiment is not yet functional and should not yet be used.
      
      Change-Id: I71f93b5d2a1596e99a6f01f29c3f0a456694d728
      a3874850
  9. 08 Apr, 2013 1 commit
    • Jingning Han's avatar
      Clamp inferred motion vectors only · 12bf0796
      Jingning Han authored
      Clamp only the motion vectors inferred from neighboring reference
      macroblocks. The motion vectors obtained through motion search in
      NEWMV mode are constrained during the search process, which allows
      a relatively larger referencing region than the inferred mvs.
      Hence further clamping the best mv provided by the motion search may
      affect the efficacy of NEWMV mode.
      
      Synchronized the decoding process. The decoded mvs in NEWMV modes
      should be guaranteed to fit in the effective range. Put a mv range
      clamping function there for security purpose.
      
      This improves the coding performance of high motion sequences, e.g.,
      derf set:
      foreman 0.233%
      husky   0.175%
      icd     0.135%
      mother_daughter 0.337%
      pamphlet        0.561%
      
      stdhd set:
      blue_sky 0.408%
      city     0.455%
      also saw sunflower goes down by -0.469%.
      
      Change-Id: I3fcbba669e56dab779857a8126a91b926e899cb5
      12bf0796
  10. 05 Apr, 2013 2 commits
    • Ronald S. Bultje's avatar
      Remove full-pixel-related code. · 36c3a67c
      Ronald S. Bultje authored
      This is a VP8-only feature (part of profile 3) that is unsupported in
      VP9.
      
      Change-Id: I78016eede8d9c834d44d4c517f3e8b8fc2a378b1
      36c3a67c
    • John Koleszar's avatar
      Move EOB to per-plane data · 05a79f2f
      John Koleszar authored
      Continue migrating data from BLOCKD/MACROBLOCKD to the per-plane
      structures.
      
      Change-Id: Ibbfa68d6da438d32dcbe8df68245ee28b0a2fa2c
      05a79f2f
  11. 04 Apr, 2013 2 commits
  12. 28 Mar, 2013 2 commits
    • 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
    • Ronald S. Bultje's avatar
      Fix mix-up in pt token indexing. · 9eea9fa2
      Ronald S. Bultje authored
      This fixes uninitialized reads in the trellis, and probably makes the
      trellis do something again.
      
      Change-Id: Ifac8dae9aa77574bde0954a71d4571c5c556df3c
      9eea9fa2
  13. 27 Mar, 2013 1 commit
    • Dmitry Kovalev's avatar
      Removing redundant function arguments. · 17cddb4e
      Dmitry Kovalev authored
      Almost all arguments for vp9_build_inter32x32_predictors_sb and
      vp9_build_inter64x64_predictors_sb can be deduced from the first macroblock
      argument.
      
      Change-Id: I5d477a607586d05698d5b3b9b9bc03891dd3fe83
      17cddb4e
  14. 26 Mar, 2013 4 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
      Add col/row-based coefficient scanning patterns for 1D 8x8/16x16 ADSTs. · d9094d8f
      Ronald S. Bultje authored
      These are mostly just for experimental purposes. I saw small gains (in
      the 0.1% range) when playing with this on derf.
      
      Change-Id: Ib21eed477bbb46bddcd73b21c5c708a5b46abedc
      d9094d8f
    • Ronald S. Bultje's avatar
      Redo banding for all transforms. · 3120dbdd
      Ronald S. Bultje authored
      Now that the first AC coefficient in both directions use the same DC
      as their context, there no longer is a purpose in letting both have
      their own band. Merging these two bands allows us to split bands for
      some of the very high-frequency AC bands.
      
      In addition, I'm redoing the banding for the 1D-ADST col/row scans. I
      don't think the old banding made any sense at all (it merged the last
      coefficient of the first row/col in the same band as the first two of
      the second row/col), which was clearly an oversight from the band being
      applied in scan-order (rather than in their actual position). Now,
      coefficients at the same position will be in the same band, regardless
      what scan order is used. I think this makes most sense for the purpose
      of banding, which is basically "predict energy for this coefficient
      depending on the energy of context coefficients" (i.e. pt).
      
      After full re-training, together with previous patch, derf gains about
      1.2-1.3%, and hd/stdhd gain about 0.9-1.0%.
      
      Change-Id: I7a0cc12ba724e88b278034113cb4adaaebf87e0c
      3120dbdd
    • 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
  15. 20 Mar, 2013 1 commit
  16. 18 Mar, 2013 2 commits
    • Paul Wilkins's avatar
      Changes to rd error_per_bit calculation. · d8ffee45
      Paul Wilkins authored
      Specifically changes to retain more precision
      especially at low Q through to the point of use.
      
      Change-Id: Ief5f010f2ca4daaabef49520e7edb46c35daf397
      d8ffee45
    • Paul Wilkins's avatar
      Adapt ARNR filter length and strength. · cdb322dd
      Paul Wilkins authored
      Adjust the filter length and strength for each
      ARF group based on a measure of difficulty (the boost)
      and the active q range.
      
      Remove lower limit on RDMULT value.
      
      Average gains on the different sets in range 0.4%-0.9%.
      However the ARNR changes give a very big boost on a
      few clips.
      
      Eg. Soccer ~5%, in derf set and Cyclist ~ 10% in the std-hd set
      
      Change-Id: I2078d78798e27ad2bcc2b32d703ea37b67412ec4
      cdb322dd
  17. 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