1. 19 Apr, 2013 - 10 commits
    • 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
    • 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
      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
  2. 18 Apr, 2013 - 3 commits
  3. 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
  4. 16 Apr, 2013 - 8 commits
  5. 15 Apr, 2013 - 8 commits
  6. 12 Apr, 2013 - 3 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
    • Ronald S. Bultje's avatar
      Move prediction hit counting to update_state(). · 79fd8c29
      Ronald S. Bultje authored
      The probabilities derived from these statistics are used in bitstream
      writing; therefore, we should only do this when we actually decide to
      use macroblock coding (over superblock coding). Derf gains +0.15%.
      
      Change-Id: I196814c070a7c79889590658ce10a6eb07454389
      79fd8c29
  7. 11 Apr, 2013 - 1 commit
    • Jingning Han's avatar
      Make intra predictor support rectangular blocks · 815e95fb
      Jingning Han authored
      The intra predictor supports configurable block sizes. It can handle
      intra prediction down to 4x4 sizes, when enabled in BLOCK_SIZE_TYPE.
      
      Change-Id: I7399ec2512393aa98aadda9813ca0c83e19af854
      815e95fb