1. 01 Aug, 2011 1 commit
  2. 11 Jul, 2011 1 commit
  3. 08 Jul, 2011 1 commit
  4. 06 Jun, 2011 1 commit
  5. 01 Jun, 2011 1 commit
    • 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
  6. 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
  7. 09 May, 2011 1 commit
  8. 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
  9. 14 Apr, 2011 1 commit
    • 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
  10. 13 Apr, 2011 1 commit
    • John Koleszar's avatar
      Refactor lookahead ring buffer · 88841f10
      John Koleszar authored
      This patch cleans up the source buffer storage and copy mechanism to
      allow access through a standard push/pop/peek interface. This approach
      also avoids an extra copy in the case where the source is not a
      multiple of 16, fixing issue #102.
      
      Change-Id: I05808c39f5743625cb4c7af54cc841b9b10fdbd9
      88841f10
  11. 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
  12. 10 Mar, 2011 1 commit
    • Adrian Grange's avatar
      Removed firstpass motion map · ed40ff9e
      Adrian Grange authored
      The firstpass motion map consists of an 8-bit flag for
      each MB indicating how strongly the firstpass code
      believes it should be filtered during the second pass
      ARNR filtering.
      
      For long or large format material the motion map can
      become extremely large and hamper the operation of
      the encoding process.
      
      This change removes the motion map altogether, leaving
      the second pass to rely on the magnitude of the motion
      compensated error to determine the filter weight to
      use for the MB during ARNR filtering.
      
      Tests on the derf set indicate that the effect of this
      change is neutral, with some small wins and losses. The
      motion map has therefore been removed based on
      a cost/benefit evaluation.
      
      Change-Id: I53e07d236f5ce09a6f0c54e7c4ffbb490fb870f6
      ed40ff9e
  13. 18 Feb, 2011 1 commit
    • John Koleszar's avatar
      clean up unused files · cbf923b1
      John Koleszar authored
      Removed a number of files that were unused or little-used.
      
      Change-Id: If9ae5e5b11390077581a9a879e8a0defe709f5da
      cbf923b1
  14. 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
  15. 09 Feb, 2011 1 commit
  16. 14 Jan, 2011 1 commit
    • Adrian Grange's avatar
      ARNR filter pointer update bug fix · 2c1b06e6
      Adrian Grange authored
      In cases where the frame width is not a multiple of 16 the
      ARNR filter would go wrong.
      
      In vp8_temporal_filter_iterate_c when updating pointers
      at the end of a row of MBs,  the image size was
      incorrectly used rather than using Num_MBs_In_Row
      times 16 (Y) or 8 (U,V).
      
      This worked when width is multiple of 16 but failed
      otherwise.
      
      Change-Id: I008919062715bd3d17c7aa2562ab58d1cb37053a
      2c1b06e6
  17. 06 Jan, 2011 1 commit
    • Johann's avatar
      x86 sse2 temporal_filter_apply · 8b0cf5f7
      Johann authored
      count can be reduced to short because the max number of filtered frames
      is set to 15. the max value for any frame is 32 (modifier = 16,
      filter_weight = 2). 15*32 = 480 which requires 9 bits
      
      this function goes from about 7000 us / 1000 iterations for the C code
      to < 275 us / 1000 iterations for sse2 for block_size = 16 and from
      about 1800 us / 1000 iters to < 100 us / 1000 iters for block_size = 8
      
      Change-Id: I64a32607f58a2d33c39286f468b04ccd457d9e6e
      8b0cf5f7
  18. 22 Dec, 2010 3 commits
    • Johann's avatar
      improve integer version of filter · 20b855c3
      Johann authored
      the lookup table is based on floating point calculations (see source)
      
      by moving the *3 before the downshift and adding the rounding bit, the
      delta (LUT - integer) goes from:
      ______________________________________
      __ 1__ 1______________________________
      __ 1__ 1______________________________
      ____ 1______ 1________________________
      ____ 1 2__ 2 1________________________
      ______ 1 1 2__ 2__ 2__ 2 1 1__________
      ________ 1 1 2 2__ 1 2 3 1 2__ 2__ 2__
      to:
      __-1__-1______________________________
      ______________________________________
      ____-1______-1________________________
      ______________________________________
      ________-1______________-1____________
      ______________________________________
      
      it's important to be able to use the integer version because the LUT
      more or less precludes SIMD optimizations
      
      Change-Id: I45a81127dc7b72a06fba951649135d9d918386c0
      20b855c3
    • Johann's avatar
      temporal filter naming changes · 4b6219cb
      Johann authored
      be more consistant with the naming pattern, especially wrt rtcd
      
      Change-Id: I3df50686a09f1dab0a9620b5adbb8a1577b40f2f
      4b6219cb
    • Johann's avatar
      abstract apply_temporal_filter · 092b5bef
      Johann authored
      allow for optimized versions of apply_temporal_filter
      (now vp8_apply_temporal_filter_c)
      
      the function was previously declared as static and appears to have been
      inlined. with this change, that's no longer possible. performance takes
      a small hit.
      
      the declaration for vp8_cx_temp_filter_c was moved to onyx_if.c because
      of a circular dependency. for rtcd, temporal_filter.h holds the
      definition for the rtcd table, so it needs to be included by onyx_int.h.
      however, onyx_int.h holds the definition for VP8_COMP which is needed
      for the function prototype. blah.
      
      Change-Id: I499c055fdc652ac4659c21c5a55fe10ceb7e95e3
      092b5bef
  19. 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
  20. 15 Nov, 2010 1 commit
    • Paul Wilkins's avatar
      Bad cost tables used in ARNR filtering. · 373f5c31
      Paul Wilkins authored
      The use of incorrect mv costing tables in the ARNR sub-pel
      filtering code led to corruption of the altref buffer in some cases,
      particularly at low data rates.
      
      The average gain from this fix is about 0.3% but there are a few
      extreme cases where nasty and visible artifacts manifested and
      for these few data points the improvement is > 10%.
      
      PGW and AWG
      
      Change-Id: I95cc02b196a433e71d0d2bd2b933fe68ed31e796
      373f5c31
  21. 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
  22. 25 Oct, 2010 2 commits
    • Johann's avatar
      quiet compiler · 385865f8
      Johann authored
      clean up compiler warnings, man in the yellow hat warnings, and start to
      remove unused #includes
      
      Change-Id: I6267e98d9b3024b6fb1ef2732b29067a33cb96f6
      385865f8
    • Johann's avatar
      isolate new temporal filtering code · e81e30c2
      Johann authored
      onyx_if is getting pretty big. split out the temporal code to make it
      easier to look at.
      
      Change-Id: I207c3a94c90e91b32e3ea5e1836a53b7a990fabd
      e81e30c2