1. 23 Apr, 2013 1 commit
    • 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
  2. 22 Apr, 2013 5 commits
  3. 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
  4. 18 Apr, 2013 5 commits
  5. 17 Apr, 2013 7 commits
    • John Koleszar's avatar
      Use BLOCK_SIZE_TYPE in foreach_ walker · ff3f9363
      John Koleszar authored
      Change-Id: I655305c9e22bdd9abc893d3c40d4bc6616aa1d35
      ff3f9363
    • Dmitry Kovalev's avatar
      Adding DEFAULT_PRED_PROB_{0, 1, 2} constants. · ecff8d71
      Dmitry Kovalev authored
      Also using ALLOWED_REFS_PER_FRAME instead of 3.
      
      Change-Id: I810dd8521d8138edb9dbd78edede49b62f706554
      ecff8d71
    • Dmitry Kovalev's avatar
      Changing argument type of vp9_get_mv_joint from MV to MV*. · 0db175ff
      Dmitry Kovalev authored
      Change-Id: I28c3026946fc1bde7074e6e0198da93bb0d75dfe
      0db175ff
    • Adrian Grange's avatar
      Make alt_extra_bits a local variable · a4c0b353
      Adrian Grange authored
      alt_extra_bits is now only used in a local context so
      remove it from the twopass_rc structure.
      
      Change-Id: I5bbf0a3dba9712a3da45760f7bb865243705b53e
      a4c0b353
    • Ronald S. Bultje's avatar
      Add SSE2 versions for rectangular sad and sad4d functions. · 0c481f4d
      Ronald S. Bultje authored
      About 11% overall encoder speedup with the sbsegment experiment enabled.
      
      Change-Id: Iffb1bdba6932d9f11a6c791cda8697ccf9327183
      0c481f4d
    • Ronald S. Bultje's avatar
      Fairly basic integration of rectangular blocks in encoding RD loop. · e6934722
      Ronald S. Bultje authored
      Adds RD integration for 32x16, 16x32, 64x32 and 32x64 rectangular blocks.
      Derf almost +0.6%, HD a little over +1.0%, STDHD +1.3%.
      
      Change-Id: Id651fdb6a655fdbb5c47009757e63317acfb88a5
      e6934722
    • Jingning Han's avatar
      Recursive partition syntax coding · 90a91cc6
      Jingning Han authored
      Enable recursive partition information coding from SB64X64 down to
      MB16X16. The bit-stream syntax is now supporting rectangular block
      sizes. It starts from SB64X64 and recursively describes the partition
      type of the current block. If the partition type is PARTITION_NONE,
      the block is coded as a single unit; if it is PARTITION_HORZ or
      PARTITION_VERT, the block is segmented into two independently coded
      rectangular units, with no further partition needed; otherwise, the
      block is segmented into 4 square blocks. i.e., PARTITION_SPLIT case,
      each can be potentially further partitioned.
      
      Forward adaptive probability modeling is used for the partition
      information coding, conditioned on the current block size.
      
      Change-Id: I499365fb547839d555498e3bcc0387d8a3587d87
      90a91cc6
  6. 16 Apr, 2013 7 commits