1. 09 Jun, 2011 1 commit
  2. 08 Jun, 2011 4 commits
    • John Koleszar's avatar
      vp8_pick_inter_mode: remove best_bmodes · 001bd51c
      John Koleszar authored
      Since BPRED will be tested at most once, and SPLITMV is not enabled,
      there's nothing to clobber the subblock modes, so there's no need to
      save and restore them.
      
      Change-Id: I7c3615b69190c10bd068a44df5488d6e8b85a364
      001bd51c
    • John Koleszar's avatar
      vp8_pick_intra_mode: correct returned rate · 91907e0b
      John Koleszar authored
      The returned rate was always the 4x4 rate, instead of the rate
      matching the selected mode.
      
      Change-Id: I51da31f80884f5e37f3bcc77d1047d31e612ded4
      91907e0b
    • John Koleszar's avatar
      Move RD intra block mode selection to rdopt.c · 96a42aaa
      John Koleszar authored
      This change is analogous to I0b67dae1f8a74902378da7bdf565e39ab832dda7,
      which made the move for the non-RD path.
      
      Change-Id: If63fc1b0cd1eb7f932e710f83ff24d91454f8ed1
      96a42aaa
    • John Koleszar's avatar
      Move intra block mode selection to pickinter.c · e90d17d2
      John Koleszar authored
      This commit moves the intra block mode selection from encodeframe.c
      to pickinter.c (in the non-RD case). This allowed pick_intra_mbuv_mode
      and pick_intra4x4mby_modes to be made static, and is a step towards
      refactoring intra mode selection in the main pickinter loop. Gave a
      small perf increase (~0.5%).
      
      Change-Id: I0b67dae1f8a74902378da7bdf565e39ab832dda7
      e90d17d2
  3. 06 Jun, 2011 1 commit
  4. 03 Jun, 2011 1 commit
    • Yunqing Wang's avatar
      Adjust bounds checking for hex search in real-time mode · e5c236c2
      Yunqing Wang authored
      Currently, hex search couldn't guarantee the motion vector(MV)
      found is within the limit of maximum MV. Therefore, very large
      motion vectors resulted from big motion in the video could cause
      encoding artifacts. This change adjusted hex search bounds
      checking to make sure the resulted motion vector won't go out
      of the range. James Berry, thank you for finding the bug.
      
      Change-Id: If2c55edd9019e72444ad9b4b8688969eef610c55
      e5c236c2
  5. 02 Jun, 2011 1 commit
    • Scott LaVarnway's avatar
      Removed B_MODE_INFO · 773768ae
      Scott LaVarnway authored
      Declared the bmi in BLOCKD as a union instead of B_MODE_INFO.
      Then removed B_MODE_INFO completely.
      
      Change-Id: Ieb7469899e265892c66f7aeac87b7f2bf38e7a67
      773768ae
  6. 01 Jun, 2011 2 commits
    • Yaowu Xu's avatar
      further clean up of errorperbit and sadperbit · 5b2fb329
      Yaowu Xu authored
      this commit makes the usage errorperbit and sadperbit consistent for
      encoding modes and passes. Removed all different magic weight factors
      associated with errorperbit. Now 1/2 is used for both sadperbit16 and
      sadperbit4, the /2 operation is merged into initializations of the 2
      variables.
      
      Tests on cif set show .23%, 0.18% and 0.19% gain by avg psnr, overall
      psnr and ssim respectively.
      
      Change-Id: Ifa285c3e065ce0a5a77addfc9f95aabf54ee270d
      5b2fb329
    • Yaowu Xu's avatar
      remove some magic weights associated with sad_per_bit · 50916c6a
      Yaowu Xu authored
      sad_per_bit has been used for a number of motion vector search routines
      with different magic weights: 1, 1/2 and 1/4. This commit remove these
      magic numbers and use 1/2 for all motion search routines, also reformat
      a number of source code lines to within 80 column limit.
      
      Test on cif set shows overall effect is neutral on all metrics. <=0.01%
      
      Change-Id: I8a382821fa4cffc9c0acf8e8431435a03df74885
      50916c6a
  7. 31 May, 2011 1 commit
  8. 25 May, 2011 1 commit
  9. 24 May, 2011 2 commits
    • Yunqing Wang's avatar
      Fix a bug happening while encoding at profile=3 · d75eb736
      Yunqing Wang authored
      While profile=3, there is no sub-pixel search. Distortion and SSE
      have to calculated using get_inter_mbpred_error().
      
      Change-Id: Ifb36e17eef7750af93efa7d0e2870142ef540184
      d75eb736
    • Scott LaVarnway's avatar
      MODE_INFO size reduction · e11f21af
      Scott LaVarnway authored
      Declared the bmi in MODE_INFO as a union instead of B_MODE_INFO.
      This reduced the memory footprint by 518,400 bytes for 1080
      resolutions.  The decoder performance improved by ~4% for the
      clip used and the encoder showed very small improvements. (0.5%)
      This reduction was first mentioned to me by John K. and in a
      later discussion by Yaowu.
      This is WIP.
      
      Change-Id: I8e175fdbc46d28c35277302a04bee4540efc8d29
      e11f21af
  10. 20 May, 2011 1 commit
  11. 19 May, 2011 2 commits
    • John Koleszar's avatar
      Remove unused members of VP8_COMP · 04849772
      John Koleszar authored
      Various members that were either completely unreferenced or written
      and not read.
      
      Change-Id: Ie41ebac0ff0364a76f287586e4fe09a68907806e
      04849772
    • Scott LaVarnway's avatar
      Using partition_info instead of blockd info for splitmv · 99b97576
      Scott LaVarnway authored
      The partition_info struct contains info just for SPLITMV,
      so it should be used instead of BLOCKD.  Eventually, I want
      to reduce the size of B_MODE_INFO struct found in BLOCKD, so
      this is the first step toward that goal.
      Also, since SPLITMV is not supported in vp8_pick_inter_mode(),
      the unnecessary mem copies and checks were removed.  For rt
      encodes, this gave a slight performance improvement.
      
      Change-Id: I5585c98fa9d5acbde1c7e0f452a01d9ecc080574
      99b97576
  12. 18 May, 2011 1 commit
    • Yunqing Wang's avatar
      Fix a bug in vp8_clamp_mv function · 9c62f941
      Yunqing Wang authored
      Scott fixed the bug in MV clamping function in encoder, which
      could cause artifacts.
      
      Change-Id: Id05f2794c43c31cdd45e66179c8811f3ee452cb9
      9c62f941
  13. 17 May, 2011 1 commit
  14. 12 May, 2011 1 commit
    • Scott LaVarnway's avatar
      Using int_mv instead of MV · 6b25501b
      Scott LaVarnway authored
      The compiler produces better assembly when using int_mv
      for assignments.  The compiler shifts and ors the two 16bit
      values when assigning MV.
      
      Change-Id: I52ce4bc2bfbfaf3f1151204b2f21e1e0654f960f
      6b25501b
  15. 27 Apr, 2011 1 commit
    • Ronald S. Bultje's avatar
      SSE2/SSSE3 optimizations for build_predictors_mbuv{,_s}(). · 1083fe49
      Ronald S. Bultje authored
      decoding
      
      before
      10.425
      10.432
      10.423
      =10.426
      
      after:
      10.405
      10.416
      10.398
      =10.406, 0.2% faster
      
      encoding
      
      before
      14.252
      14.331
      14.250
      14.223
      14.241
      14.220
      14.221
      =14.248
      
      after
      14.095
      14.090
      14.085
      14.095
      14.064
      14.081
      14.089
      =14.086, 1.1% faster
      
      Change-Id: I483d3d8f0deda8ad434cea76e16028380722aee2
      1083fe49
  16. 21 Apr, 2011 1 commit
    • Scott LaVarnway's avatar
      Removed dc_diff from MB_MODE_INFO · 3698c1f6
      Scott LaVarnway authored
      The dc_diff flag is used to skip loopfiltering.  Instead
      of setting this flag in the decoder/encoder, we now check
      for this condition in the loopfilter.
      
      Change-Id: Ie2b9cdf9e0f4e8b932bbd36e0878c05bffd28931
      3698c1f6
  17. 18 Apr, 2011 1 commit
    • Yunqing Wang's avatar
      Use sub-pixel search's SSE in mode selection · b8f0b599
      Yunqing Wang authored
      Passed SSE from sub-pixel search back to pick_inter_mode
      function, which is compared with the encode_breakout to
      see if we could skip evaluating the remaining modes.
      
      Change-Id: I4a86442834f0d1b880a19e21ea52d17d505f941d
      b8f0b599
  18. 14 Apr, 2011 2 commits
    • Yunqing Wang's avatar
      Reduce unnecessary distortion computation · 918fb548
      Yunqing Wang authored
      In vp8_pick_inter_mode(), for NEWMV mode, use the error result got
      from motion search as distortion. This helps performance in real-
      time mode.
      
      Change-Id: I398c4e46cc5381f7d874e748cf78827ef0e0860c
      918fb548
    • Adrian Grange's avatar
      Fix usage of value returned by vp8_pick_intra4x4mby_modes · 8608de1c
      Adrian Grange authored
      The value of distortion2 returned by vp8_pick_intra4x4mby_modes
      was being overwritten by the value returned by get16x16prederror
      before it was tested.
      
      Change-Id: If00e80332b272c5545c3a7e381c8041e8319b41a
      8608de1c
  19. 13 Apr, 2011 1 commit
    • Adrian Grange's avatar
      Fixed use of early breakout in vp8_pick_intra4x4mby_modes · 88611746
      Adrian Grange authored
      Index i is used to detect early breakout from the first loop, but
      its value is lost due to reuse in the second for loop. I moved
      the position of the second loop and did some format cleanup.
      
      Change-Id: I02780eae1bd89df4b6c000fb8a018b0837aac2e5
      88611746
  20. 12 Apr, 2011 1 commit
    • John Koleszar's avatar
      Bugfix for error accumulator stats · e689a27d
      John Koleszar authored
      Previous to commit de4e9e3b, there was an early return in the alt-ref
      case that was inadvertantly removed when the function was refactored
      to return void. This patch restores the prior behavior.
      
      Change-Id: I783ffd594a4690297e2742f99526fd7ad67698b2
      e689a27d
  21. 11 Apr, 2011 1 commit
  22. 08 Apr, 2011 1 commit
    • Paul Wilkins's avatar
      Error accumulator stats bug. · de4e9e3b
      Paul Wilkins authored
      The error accumulator stats values cpi->prediction_error and
      cpi->intra_error were being populated with rd values not
      distortion values.
      
      These are only "currently" used in a limited way for RT compress
      key frame detection.
      
      Change-Id: I2702ba1cab6e49ab8dc096ba75b6b34ab3573021
      de4e9e3b
  23. 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
  24. 11 Mar, 2011 1 commit
  25. 11 Feb, 2011 1 commit
    • Yunqing Wang's avatar
      Add improved_mv_pred flag in real-time mode · 9d0b2cbb
      Yunqing Wang authored
      As mentioned in check-in "Improve motion search in real-time mode",
      MV prediction calculation causes speed loss for speed 7 and above.
      This change added a flag to turn off this calculation for speed>6
      in real-time mode.
      
      Change-Id: I9f4ae5a8bf449222d1784b54e7d315fc8347b2d1
      9d0b2cbb
  26. 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
  27. 01 Feb, 2011 1 commit
  28. 28 Jan, 2011 1 commit
  29. 14 Jan, 2011 1 commit
    • 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
  30. 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
  31. 27 Oct, 2010 1 commit
    • John Koleszar's avatar
      Add half-pixel variance RTCD functions · 209d82ad
      John Koleszar authored
      NEON has optimized 16x16 half-pixel variance functions, but they
      were not part of the RTCD framework. Add these functions to RTCD,
      so that other platforms can make use of this optimization in the
      future and special-case ARM code can be removed.
      
      A number of functions were taking two variance functions as
      parameters. These functions were changed to take a single
      parameter, a pointer to a struct containing all the variance
      functions for that block size. This provides additional flexibility
      for calling additional variance functions (the half-pixel special
      case, for example) and by initializing the table for all block sizes,
      we don't have to construct this function pointer table for each
      macroblock.
      
      Change-Id: I78289ff36b2715f9a7aa04d5f6fbe3d23acdc29c
      209d82ad
  32. 12 Oct, 2010 1 commit