1. 01 Apr, 2011 1 commit
    • Yunqing Wang's avatar
      Use full-pixel MV in mvsadcost calculation · 3d681581
      Yunqing Wang authored
      MV sad cost error is only used in full-pixel motion search,
      which only need full-pixel resolution instead of quarter-pixel
      resolution. This change reduced mvsadcost table size, and
      removed unneccessary pamameter passing since this table is
      constant once it is generated.
      
      Change-Id: I9f931e55f6abc3c99011321f1dfb2f3562e6f6b0
      3d681581
  2. 18 Mar, 2011 1 commit
    • John Koleszar's avatar
      Increase static linkage, remove unused functions · 429dc676
      John Koleszar authored
      A large number of functions were defined with external linkage, even
      though they were only used from within one file. This patch changes
      their linkage to static and removes the vp8_ prefix from their names,
      which should make it more obvious to the reader that the function is
      contained within the current translation unit. Functions that were
      not referenced were removed.
      
      These symbols were identified by:
      
        $ nm -A libvpx.a | sort -k3 | uniq -c -f2 | grep ' [A-Z] ' \
          | sort | grep '^ *1 '
      
      Change-Id: I59609f58ab65312012c047036ae1e0634f795779
      429dc676
  3. 11 Mar, 2011 1 commit
  4. 08 Mar, 2011 1 commit
    • John Koleszar's avatar
      correct zbin boost for splitmv mode · 5d1d9911
      John Koleszar authored
      Disable zbin boost in SPLITMV mode as intended. Was incorrectly looking
      at vp8_ref_frame_order instead of vp8_mode_order when comparing against
      SPLITMV. This condition should have always been false, as SPLITMV is
      not in the range of valid reference frames.
      
      Change-Id: I0408cc7595eff68f00efef6d008e79f5b60d14bf
      5d1d9911
  5. 24 Feb, 2011 2 commits
  6. 14 Feb, 2011 2 commits
    • Scott LaVarnway's avatar
      Improved vp8_rd_pick_intra_mbuv_mode · 94d4fee0
      Scott LaVarnway authored
      Eliminated unnecessary calculations. Very small change
      to performance.
      
      Change-Id: Ib7213d43c64e36955177c4d47950ff472266f822
      94d4fee0
    • Scott LaVarnway's avatar
      Improved rd_pick_intra4x4block · d419b93e
      Scott LaVarnway authored
      Eliminated unnecessary calculations.  Improved performance
      by 10% on keyframes and 1.6% overall for the test clip used.
      
      Change-Id: I87671b26af5e2cc439e81d0fee3b15c7cd2a3309
      d419b93e
  7. 10 Feb, 2011 2 commits
    • John Koleszar's avatar
      Fix relative include paths · 02321de0
      John Koleszar authored
      Allow compiling without adding vp8/{common,encoder,decoder} to the
      include paths.
      
      Change-Id: Ifeb5dac351cdfadcd659736f5158b315a0030b6c
      02321de0
    • Yunqing Wang's avatar
      Improve motion search in real-time mode · 41e6eceb
      Yunqing Wang authored
      Applied better MV prediction in real-time mode, which improves
      the encoding quality.
      
      Used quarter-pixel search instead of iterative sub-pixel search
      for speed >=5 to improve encoding performance.
      
      Tests on the test set showed:
      1. For speed=-5, quality improvement: 1.7% on AvgPSNR and 2.1%
      on SSIM, performance improvement: 3.6% (This counts in the
      performance lose caused by MV prediction calculation in "Improve
      MV prediction in vp8_pick_inter_mode() for speed>3").
      2. For speed=-8, quality improvement: 2.1% on AvgPSNR and 2.5%
      on SSIM. but, 6.9% performance decrease because of MV prediction
      calculation. This should be improved later.
      
      Change-Id: I349a96c452bd691081d8c8e3e54419e7f477bebd
      41e6eceb
  8. 08 Feb, 2011 1 commit
  9. 07 Feb, 2011 1 commit
  10. 01 Feb, 2011 2 commits
  11. 28 Jan, 2011 3 commits
    • Yaowu Xu's avatar
      change the threshold of DC check for encode breakout · 8f279596
      Yaowu Xu authored
      Previously, the DC check is to make sure there is no code-able
      DC shift for quantizer Q0, which has been verified rather
      conservative. This commit changes the criteria to have two
      components, DC and AC, to address the conservativeness. First,
      it checks if all AC energy is enough to contribute a single
      non-zero quantized AC coefficient. Second, for DC, the decision
      to skip further considers two possible scenarios: 1. There is
      no code-able 2nd order DC coefficient at all; 2 The residue is
      relatively flat, but the uniform DC change is very small, i.e.
      less than 1/2 gray level per pixel.
      
      Comparing to previous criteria, the new criteria is about 10%
      to 15% faster in encoding time with a very small quality loss.
      (threshold ~1000 and quality range 33db-45db)
      
      It should be noted that this commit enables "automatic" static
      threshold for encodebreakout if a non-zero small value is passed
      in to encoder.
      
      Change-Id: I0f77719a1ac2c2dfddbd950d84920df374515ce3
      8f279596
    • Yunqing Wang's avatar
      Improve MV prediction in vp8_pick_inter_mode() for speed>3 · 7cbe684e
      Yunqing Wang authored
      Applied same method used in vp8_rd_pick_inter_mode() to improve
      the accuracy of MV prediction.
      
      Change-Id: Ia50ae26208b18482695601f32febd99fe89fbc17
      7cbe684e
    • Paul Wilkins's avatar
      Inconsistent distortion metric in vp8_rd_pick_intra_mbuv_mode · dcb23e2a
      Paul Wilkins authored
      This function was using a variance metric compared to and SSE metric in
      other places (eg. vp8_rd_inter_uv)
      
      Change-Id: I9109fcc5a13bca9db1d7ead500fe14999ab233eb
      dcb23e2a
  12. 27 Jan, 2011 1 commit
    • Johann's avatar
      warning: pointer targets differ in signedness · 73207a1d
      Johann authored
      vp8/encoder/rdopt.c:728: warning: pointer targets in passing argument 3
      of 'macro_block_yrd' differ in signedness
      vp8/encoder/rdopt.c:541: note: expected 'int *' but argument is of type
      'unsigned int *'
      
      distortion is signed when calling macro_block_yrd is both other cases,
      as well as for RDCOST
      
      Change-Id: I5e22358b7da76a116f498793253aac8099cb3461
      73207a1d
  13. 26 Jan, 2011 3 commits
    • Yunqing Wang's avatar
      Remove copies of same functions · cac54404
      Yunqing Wang authored
      Reduce the code size.
      
      Change-Id: I2e1998557a3c8776e262c442fd758c25e17aff7a
      cac54404
    • Paul Wilkins's avatar
      Rationalize vp8_rd_pick_intra16x16mby_mode() · 35bb74a6
      Paul Wilkins authored
      Use the function macro_block_yrd() to calculate error and distortion
      in keeping with what is done for inter frames.
      
      The old code was using a variance metric for once case and an
      SSE function for measuring distortion in the other case.
      
      The function vp8_encode_intra16x16mbyrd() is no longer used.
      
      Change-Id: Ic228cb00a78ff637f4365b43f58fbe5a9273d36f
      35bb74a6
    • Yaowu Xu's avatar
      cap the best quantizer for 2nd order DC · 999e155f
      Yaowu Xu authored
      This commit also removes artificial RDMULT cap for low quantizers.
      The intention is to address some abnormal behavior of mode selections
      at the low quantizer end, where many macroblocks were coded with
      SPLITMV with all partitions using same motion vector including (0,0).
      This change improves the compression quality substantially for high
      quality encodings in both PSNR and SSIM terms. Overall effect on
      mid/low rate range is also positive for all metrics, but smaller
      in magnitude.
      
      Change-Id: I864b29c4bd9ff610d2545fa94a19cc7e80c02667
      999e155f
  14. 25 Jan, 2011 1 commit
    • Yunqing Wang's avatar
      Refine motion vector prediction for NEWMV mode · dcaaadd8
      Yunqing Wang authored
      Adjust checking points in motion vector prediction to better cover
      possible movements, and get a better prediction. Tests on test
      clips showed a 0.1% improvement in SSIM, and no change in PSNR
      and performance.
      
      Change-Id: Ifdab05d35e10faea1445c61bb73debf888c9d2f8
      dcaaadd8
  15. 24 Jan, 2011 1 commit
    • Scott LaVarnway's avatar
      Added vp8_update_zbin_extra · 0ee525d6
      Scott LaVarnway authored
      vp8cx_mb_init_quantizer was being called for every mode checked
      in vp8_rd_pick_inter_mode.  zbin_extra is the only value that
      really needs to be recalculated.  This calculation is disabled
      when using the fast quantizer for mode selection.
      This gave a small performance boost (~.5% to 1%).
      Note: This needs to be verified with segmentation_enabled.
      
      Change-Id: I62716a870b3c82b4a998bdf95130ff0b02106f1e
      0ee525d6
  16. 14 Jan, 2011 2 commits
    • Paul Wilkins's avatar
      Testing of modes with Alt Ref frame · 415371c9
      Paul Wilkins authored
      Previously when a frame was being overlaid on a previously coded
      alt ref frame we only checked the alt ref 0,0 mode. Where there is
      a possibility that the alt ref buffer is a filtered frame we should allow
      the other prediction modes as normal or at the least allow use of
      the last frame buffer.
      
      Change-Id: I4d6227223d125c96b4f3066ec6ec9484fee7768c
      415371c9
    • Paul Wilkins's avatar
      Experimental change to help with ARNR problem. · 72e22b0b
      Paul Wilkins authored
      Allow use of other reference frames for the ARF overlay frame
      when ARNR filtering is enabled
      
      Change-Id: Icd6a9fb38977a88fbe7cc9b9c18198eb454c0273
      72e22b0b
  17. 11 Jan, 2011 2 commits
  18. 10 Jan, 2011 1 commit
    • Yunqing Wang's avatar
      Fix bug in motion search · 3675b229
      Yunqing Wang authored
      The maximum possible MV in 1/8 pel units is (1<<11), which could
      cause mvcost out of its range that is 1023. Change maximum
      possible MV in 1/8 pel units to (1<<11)-8 will fix this problem.
      
      Change-Id: I5788ed1de773f66658c14f225fb4ab5b1679b74b
      3675b229
  19. 07 Jan, 2011 1 commit
    • Scott LaVarnway's avatar
      Removed cpi->target_bits_per_mb · 6dbdfe34
      Scott LaVarnway authored
      cpi->target_bits_per_mb is currently not being used,
      so delete it.  Also removed other unused code in rdopt.c.
      
      Change-Id: I98449f9030bcd2f15451d9b7a3b9b93dd1409923
      6dbdfe34
  20. 28 Dec, 2010 2 commits
    • Yunqing Wang's avatar
      Adjust MV borders for SPLITMV mode · bf53ec49
      Yunqing Wang authored
      Add limits to avoid MV going out of range.
      
      Change-Id: I8a5deb40bf393488d29f694b5a56804d578e68b5
      bf53ec49
    • Yunqing Wang's avatar
      Modify motion estimation for SPLITMV mode · a5a8d929
      Yunqing Wang authored
      1. Search for block8x16/block16x8 uses block8x8's search results.
      2. Check block4x4 only if block8x8 is chosen. (This hurts quality,
         which will be improved in another check-in.)
      3. In block4x4 search, the previous block's result is used as
         MV predictor for next block.
      
      This change improves performance.
      
      Change-Id: I9dc089007ca08129fb6c11fe7692777ebb8647b0
      a5a8d929
  21. 24 Dec, 2010 1 commit
    • Yaowu Xu's avatar
      adjusted sad_per_bit to correlate with quantizer · 0f5264b5
      Yaowu Xu authored
      Re-calibrated sad_per_bit16 and sad_per_bit4 tables to linearly
      correlated to quantizer values, these two variables are used in
      motion search for costing motion vectors. This change has an small
      positive effect on compression.
      
      Change-Id: Ic9b5ea6fb8d5078ef663ba4899db019cc51f4166
      0f5264b5
  22. 16 Dec, 2010 2 commits
    • Scott LaVarnway's avatar
      Changed segmentation check order · 64baa8df
      Scott LaVarnway authored
      In SPLITMV, the 8x8 segment will be checked first.  If the 8x8 rd
      is better than the best, we check the other segments.  Otherwise
      bail.  Adjustments to the thresh_mult were necessary to make
      up for the initial quality loss.
      The performance improved by 20% (average) for good quality,
      speed 0 and speed 1, while the overall quality remained the same.
      
      Change-Id: I717aef401323c8a254fba3e9777d2a316c774cc3
      64baa8df
    • Scott LaVarnway's avatar
      Adjusted breakout RD for SPLITMV · 81cdeb71
      Scott LaVarnway authored
      vp8_rd_pick_best_mbsegmentation looks at y only.  The new
      breakout does not include the frame cost, the prob_skip_false
      cost, or the uv rate.  Performance improved by a few percent
      and the quality remained the same.
      
      Change-Id: I94ff013998ac51e8ecce7130870f7b6600758e15
      81cdeb71
  23. 14 Dec, 2010 2 commits
    • Yunqing Wang's avatar
      Fix a bug in motion search code(2) · 08706a3e
      Yunqing Wang authored
      This fix added MV range checks for NEWMV mode as suggested by Jim.
      To reduce unnecessary MV range checks, I tried Yaowu's suggestion.
      Update UMV borders in NEWMV mode to also cover MV range check.
      Also, in this way, every MV that is valid gets checked in diamond
      search function.
      
      Change-Id: I95a89ce0daf6f178c454448f13d4249f19b30f3a
      08706a3e
    • Yunqing Wang's avatar
      Fix a bug in motion search code · 7fb0f868
      Yunqing Wang authored
      The MV's range is 256. Since the new motion search uses a different
      starting MV than the center ref MV, a MV range checking needs to
      be done to avoid corruption.
      
      Change-Id: I8ae0721d1bd203639e13891e2e54a2e87276f306
      7fb0f868
  24. 09 Dec, 2010 1 commit
    • John Koleszar's avatar
      fix uninitialized read in encode breakout · cb969895
      John Koleszar authored
      Change I3430820b performed an uninitialized read when
      encode_breakout == 0, since the sum and sse wouldn't be set:
      
         if(x->encode_breakout)
             VARIANCE_INVOKE(..., get16x16var)(..., &sum, &sse);
         if (cpi->active_map_enabled && x->active_ptr[0] == 0) {
             ...
         } else if (sse < x->encode_breakout)
      
      Change-Id: I915eb76d1227b4b6d1137a0dedf2c143860098a2
      cb969895
  25. 07 Dec, 2010 1 commit
    • Jim Bankoski's avatar
      vp8e - static threshold play · 718c1971
      Jim Bankoski authored
      Realized no need for new assembly code sum is already
      calculated.
      
      Change-Id: Ie2d94feb4b7c1f77c5359bca29b66228e41638c9
      718c1971
  26. 06 Dec, 2010 1 commit
    • Scott LaVarnway's avatar
      vp8_rd_pick_best_mbsegmentation code restructure · 2fa5d5a2
      Scott LaVarnway authored
      Moved the code from the segmentation loop into a function
      which is now called for each segment. This will allow us
      to change the segment order checking more easily.
      
      Change-Id: I9510d26f0acae5a73043fcca8f1984b121d3e052
      2fa5d5a2
  27. 03 Dec, 2010 1 commit
    • Yunqing Wang's avatar
      Improve MV prediction accuracy to achieve performance gain · c3bbb291
      Yunqing Wang authored
      Add vp8_mv_pred() to better predict starting MV for NEWMV
      mode in vp8_rd_pick_inter_mode(). Set different search
      ranges according to MV prediction accuracy, which improves
      encoder performance without hurting the quality. Also,
      as Yaowu suggested, using diamond search result as full
      search starting point and therefore adjusting(reducing)
      full search range helps the performance.
      
      Change-Id: Ie4a3c8df87e697c1f4f6e2ddb693766bba1b77b6
      c3bbb291