1. 24 Apr, 2013 - 5 commits
    • Paul Wilkins's avatar
      Extension of segmentation to 8 segments. · 31ee193a
      Paul Wilkins authored
      Also some further simplification following removal
      of top node code.
      
      There is an issue in regards to the shared file vp8cx.h
      in regard to the roi_map as this interface assumes that
      there are only 4 segments. I have left the value here as
      4 for now meaning that the roi_map interface is broken
      for VP9.
      
      Note that this change would have been easier if I hadn't
      had to search for hard wire instances of the number 4
      and <= 3.
      
      Change-Id: Ia8b6deea4be4dbd20deb1656e689dd43a5f190e8
      31ee193a
    • Paul Wilkins's avatar
      Simplify Segment Coding · c77aff12
      Paul Wilkins authored
      Remove top node optimization.
      The improvement this gives is not sufficient to justify
      the extra complexity.
      
      Change-Id: I2bb4a12a50ffd52cacfa4a3e8acbb2e522066905
      c77aff12
    • Paul Wilkins's avatar
      Simple implicit segmentation experiment. · 27bb4777
      Paul Wilkins authored
      Change-Id: Iaef16122732c2a81e0927f9862b51b68dc788712
      27bb4777
    • John Koleszar's avatar
      Move skip_block from BLOCK to MACROBLOCK · c7c98a7f
      John Koleszar authored
      This data is fixed at the MB level, so move it to the common part
      of MACROBLOCK.
      
      Change-Id: Idd8c87118e501cdf0a202bd84c28b502a8234edf
      c7c98a7f
    • John Koleszar's avatar
      Move quantizer data from BLOCK to MACROBLOCK · 5c649f67
      John Koleszar authored
      Quantizers can vary per plane, but not per block. Move these values to
      the per-plane part of MACROBLOCK.
      
      Change-Id: I320a55e38b7b28b29aec751a4aca5ccd0c9b9326
      5c649f67
  2. 23 Apr, 2013 - 7 commits
    • John Koleszar's avatar
      Remove coeff from BLOCK · 48f3e66e
      John Koleszar authored
      Lookup the data per-plane from the MACROBLOCK struct.
      
      Change-Id: I9253c4d3cf886aa9ab4aeab23a2156bfcf994ede
      48f3e66e
    • John Koleszar's avatar
      Convert coeff to per-plane MACROBLOCK data · 138ec38c
      John Koleszar authored
      This commit moves the coeff storage from the MACROBLOCK struct to its
      per-plane part. The next commit will remove the coeff member from the
      BLOCK structure so that it is consistently accessed per-plane.
      
      Also refactors vp9_sb_block_error_c and vp9_sb_uv_block_error_c to be
      variable subsampling aware.
      
      Change-Id: I18c30f87f27c3a012119b6c1970d5fa499804455
      138ec38c
    • Jingning Han's avatar
      Enable rectangular support for comp inter-intra · a26c1edb
      Jingning Han authored
      This commit enables rectangular block prediction of compound
      inter-intra mode. It combines the mb/sb32/sb64 prediction functions
      into a unified version with configurable block width and height.
      This fixes the enc/dec mismatch of the codebase when
      comp-interintra-pred is enabled.
      
      Change-Id: I1d0db2f1f184007802df04fcd12b9dadb3189ff0
      a26c1edb
    • Jingning Han's avatar
      Remove the unused gf_active_ptr from MACROBLOCK · e6ac9180
      Jingning Han authored
      The variable gf_active_ptr is not used anywhere, hence is removed.
      
      Change-Id: I6badc20fade48ae12fd19e7e4cd8fe5e051c20ac
      e6ac9180
    • Ronald S. Bultje's avatar
      Make some sb_type comparisons independent of literal enum values. · 5ba98ebc
      Ronald S. Bultje authored
      Change-Id: I54acef342b8e787e05af0febd7cf0d7d10288383
      5ba98ebc
    • John Koleszar's avatar
      Move src_diff to per-plane MACROBLOCK data · cbd1315a
      John Koleszar authored
      First in a series of commits making certain MACROBLOCK members
      addressable per-plane. This commit also refactors the block subtraction
      functions vp9_subtract_b, vp9_subtract_sby_c, etc to be
      loops-over-planes and variable subsampling aware.
      
      Change-Id: I371d092b914ae0a495dfd852ea1a3d2467be6ec3
      cbd1315a
    • Ronald S. Bultje's avatar
      Remove unused stuffing function. · 00269a24
      Ronald S. Bultje authored
      Change-Id: I2bc8d775f8d698bf8582f4eecabc2329452e8d9b
      00269a24
  3. 22 Apr, 2013 - 9 commits
    • Deb Mukherjee's avatar
      Removing the implicit compound inter experiment · 735febf1
      Deb Mukherjee authored
      Removing this experiment for now, since it has been broken with
      the latest code changes.
      
      Change-Id: I1be2181b56de490fcb577f5905b5e147a8ed82d8
      735febf1
    • Jim Bankoski's avatar
      new version of speed 1 · e7bddba1
      Jim Bankoski authored
      This version of speed 1 only disables modes at higher resolution that
      had distortions >2x the best mode we found...
      
      The hope is that this could be a replacement for speed 0 ...
      
      Change-Id: I7421f1016b8958314469da84c4dccddf25390720
      e7bddba1
    • Dmitry Kovalev's avatar
      Adding get_scan_{4x4, 8x8, 16x16} functions. · 5de7e16c
      Dmitry Kovalev authored
      Change-Id: Id4306ef6d65d4a3984aed50b775bdf48d4f6c438
      5de7e16c
    • Deb Mukherjee's avatar
      Bugfix from reordering frame probs patch · 5fa64bde
      Deb Mukherjee authored
      This fixes an intermittent mismatch issue cause by moving
      the lossless mode decoding bit to after the loop filter
      setup information. We need to ensure that the lossless bit
      is decoded prior to loop filter setup.
      
      Change-Id: I3faa3fff8e1013b7405dac91268350e059ed121e
      5fa64bde
    • John Koleszar's avatar
      Remove vp9_recon_intra_mbuv · 01e41a53
      John Koleszar authored
      Use common vp9_recon_sbuv instead.
      
      Change-Id: I146f79adfdfda2b52257a52fa783727f12afa246
      01e41a53
    • John Koleszar's avatar
      Move pre, second_pre to per-plane MACROBLOCKD data · a443447b
      John Koleszar authored
      Continue moving framebuffers to per-plane data.
      
      Change-Id: I237e5a998b364c4ec20316e7249206c0bff8631a
      a443447b
    • Deb Mukherjee's avatar
      Removes the code_nonzerocount experiment · 0aa79be7
      Deb Mukherjee authored
      This patch does not seem to give any benefits.
      
      Change-Id: I9d2b4091d6af3dfc0875f24db86c01e2de57f8db
      0aa79be7
    • Deb Mukherjee's avatar
      End of orientation zero group experiment · 70d9f116
      Deb Mukherjee authored
      Adds an experiment that codes an end-of-orientation symbol
      for every eligible zero encountered in scan order.
      
      This cleans out various other sub-experiments that were part
      of the origiinal patch, which will be later included if found
      useful.
      
      Results are slightly positive on all sets (0.1 - 0.2% range).
      
      Change-Id: I57765c605fefc7fb9d1b57f1b356843602abefaf
      70d9f116
    • John Koleszar's avatar
      reconinter: remove unnecessary functions, params · 6d5ac8f2
      John Koleszar authored
      Removes the redundant dst pointers from vp9_build_inter_predictors_sb{y,uv}
      and the remaining mb specific functions.
      
      Change-Id: I7b6bf439d9394b85ea79b4fe61a3ffc1025720da
      6d5ac8f2
  4. 19 Apr, 2013 - 15 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
    • Dmitry Kovalev's avatar
      Removing get_segment_id function and using existing vp9_get_pred_mb_segid. · c09f6525
      Dmitry Kovalev authored
      Change-Id: Iff35d4b2f8f65511f80c594958c01fb4673fa033
      c09f6525
    • Paul Wilkins's avatar
      Clean out some legacy code. · 72d8b461
      Paul Wilkins authored
      Removed some unused legacy code relating to GF activity.
      
      Change-Id: I0b0fe90a1a5208aaa81d7393ba6cf75ab412dbda
      72d8b461
    • John Koleszar's avatar
      Remove vp9_recon_mb{,y} · 9ec0f658
      John Koleszar authored
      Use the common sb functions instead.
      
      Change-Id: I4fa0a8ee3c6ada56271dd09bf895b97642f55858
      9ec0f658
    • John Koleszar's avatar
      Remove redundant pointers from void vp9_recon_sb{y,uv} · d747986d
      John Koleszar authored
      Remove the unnecessary _s_ from their names, and add a new
      vp9_recon_sb() that calls the y and uv variants.
      
      Change-Id: I7ffaa5ff5605a8472cac2a53de8cf889353039a6
      d747986d
    • Dmitry Kovalev's avatar
      Renaming vp9_extra_bit_struct to vp9_extra_bit. · 684ddc61
      Dmitry Kovalev authored
      Change-Id: Ie4713da125e954c1d30e1d4cbeb38666fce90ccc
      684ddc61
    • 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
    • Paul Wilkins's avatar
      Mv ref candidates cut to 2. · de80da39
      Paul Wilkins authored
      Further simplification of mvref search to return
      only the top two candidates. Distance weights removed
      as the test order reflects distance anyway.
      
      Change-Id: I0518cab7280258fec2058670add4f853fab7b855
      de80da39
    • 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
      Removal of CONFIG_NEW_MVREF experiment. · aa76bf3d
      Paul Wilkins authored
      This experiment has failed to give much benefit but
      does add complexity so deprecated.
      
      Change-Id: Ic7b929ba706390b9907ef0b4f965bd401ca799a4
      aa76bf3d
    • Paul Wilkins's avatar
      Remove dummy place holder function. · ac0961b7
      Paul Wilkins authored
      void __attribute__((noinline)) hi(void) { }
      Causes build failure in VS2008
      
      Change-Id: Ie2f2a09d90bd5502c492e4d9f4983532a0edbc01
      ac0961b7
    • 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
    • Paul Wilkins's avatar
      Adjustments to key frame sizing. · 21ff7bdc
      Paul Wilkins authored
      Adjustments take heavier account of the frame near a kf
      in deciding boost and limit the total number that can contribute.
      Also adjusted the minq calculations such that in most cases we
      generate a smaller key frame.
      Modified the code that accounts for how static the sequence is and
      added some adjustment based on image size. This is still very
      crude but smaller images tend to behave better with a larger
      delta between KF Q and other frames than larger image formats.
      Changes give sizable gains in overall PSNR  on all the test sets but the
      biggest gains (~3%) were on the std-hd set.
      The gains were smaller for SSIM but still significant.
      Average PSNR results are mixed because this metric can very easily
      be altered by having a very good / lossless coding of one or two frames.
      Some of the YT and YT-HD clips in particular have blank lead ins and
      allowing lossless coding of these appears to make a big difference to
      average PSNR but it reality does not help much at all.
      
      Change-Id: I6bfe485a1d330b47c783832f1717c95c535464ec
      21ff7bdc
    • John Koleszar's avatar
      Removing rounding from UV MV calculation · 2987fa1d
      John Koleszar authored
      Consider the previous behavior for the MV 1 3/8 (11/8 pel). In the
      existing code, the fractional part of the MV is considered separately,
      and rounded is applied, giving a result of 6/8. Rounding is not required
      in this case, as we're increasing the precision from a q3 to a q4, and
      the correct value 11/16 can be represented exactly.
      
      Slight gain observed (+.033 average on derf)
      
      Change-Id: I320e160e8b12f1dd66aa0ce7966b5088870fe9f8
      2987fa1d
    • John Koleszar's avatar
      make buid_inter_predictors block size agnostic (luma) · 4924934d
      John Koleszar authored
      This commit converts the luma versions of vp9_build_inter_predictors_sb
      to use a common function. Update the convolution functions to support
      block sizes larger than 16x16, and add a foreach_predicted_block walker.
      
      Next step will be to calculate the UV motion vector and implement SBUV,
      then fold in vp9_build_inter16x16_predictors_mb and SPLITMV.
      
      At the 16x16, 32x32, and 64x64 levels implemented in this commit, each
      plane is predicted with only a single call to vp9_build_inter_predictor.
      This is not yet called for SPLITMV. If the notion of SPLITMV/I8X8/I4X4
      goes away, then the prediction block walker can go away, since we'll
      always predict the whole bsize in a single step. Implemented using a
      block walker at this stage for SPLITMV, as a 4x4 "prediction block size"
      within the BLOCK_SIZE_MB16X16 macroblock. It would also support other
      rectangular sizes too, if the blocks smaller than 16x16 remain
      implemented as a SPLITMV-like thing. Just using 4x4 for now.
      
      There's also a potential to combine with the foreach_transformed_block
      walker if the logic for calculating the size of the subsampled
      transform is made more straightforward, perhaps as a consequence of
      supporing smaller macroblocks than 16x16. Will watch what happens there.
      
      Change-Id: Iddd9973398542216601b630c628b9b7fdee33fe2
      4924934d
  5. 18 Apr, 2013 - 4 commits