1. 11 Mar, 2015 1 commit
  2. 10 Mar, 2015 1 commit
    • Adrian Grange's avatar
      Fix vp9_compute_qdelta_by_rate loop behavior · 78df7122
      Adrian Grange authored
      The return value from vp9_compute_qdelta_by_rate, which is
      a delta value for the quantizer, could never be 0 if
      (qindex == rc->worst_quality).
      
      This occurs because target_index was setup unconditionally
      in the loop and yet the loop counter stopped at
      (rc->worst_quality - 1).
      
      Change-Id: I6b59cd9b5811ff33357e71cd7d814c5e53d291f2
      78df7122
  3. 09 Mar, 2015 2 commits
    • Jingning Han's avatar
      Skip golden ref frame check when it is same as last ref frame · 6245a91e
      Jingning Han authored
      When golden reference frame is refreshed, the next frame has both
      its last and golden reference frames point to the same reference
      frame in real-time coding mode. Experiments suggest that using
      two separate reference frames for frames right after golden refresh
      frame does not provide further compression performance advantage.
      This commit hence retains the current encoder implementation and
      shuts off the mode search over golden reference frame in this case.
      
      It makes the encoder run slightly faster at no coding performance
      change.
      
      Change-Id: I1561f7799253a10e675d05c63c1749fe9e85b472
      6245a91e
    • Alex Converse's avatar
      Don't waste time partitioning skip superblocks. · 06b59299
      Alex Converse authored
      Force 64x64 partitioning when a whole superblock is SEGMENT_LVL_SKIP. This
      drops encode times of screens mostly at rest by 20%.
      
      Change-Id: Ieba554b0b8a0c1679aae784a8bd11f038ab942c3
      06b59299
  4. 07 Mar, 2015 1 commit
  5. 06 Mar, 2015 1 commit
    • Yunqing Wang's avatar
      Modify the setting of transform skip flags in non-rd mode · 268f260d
      Yunqing Wang authored
      While searching for the best mode in non-rd case, SSE of
      a partition block is calculated and the transform size is set.
      This patch rewrites the skip checking conditions based on
      transform size instead of partition size to be more precise.
      
      Small gains were seen in rtc set borg test (speed 6).
      AVG PSNR: 0.087%, overall PSNR: 0.073%, SSIM: 0.146%.
      No noticeable speed change.
      
      Change-Id: I5603ca5339c784dfa02263f4005988ccd8c32f6e
      268f260d
  6. 05 Mar, 2015 6 commits
  7. 04 Mar, 2015 5 commits
    • Adrian Grange's avatar
      Small rationalization of code in vp9_first_pass · fed9e1fe
      Adrian Grange authored
      Change-Id: I87cc0e038171c60a957298827e312fead500f7fb
      fed9e1fe
    • Jingning Han's avatar
      Move integral projection motion search to vp9_mcomp.c · 2deecdd5
      Jingning Han authored
      Make it a general purpose fast motion estimation function, to be
      used in the mode search process.
      
      Change-Id: Ib354cb0e664dc61c30c0b2314297835ee75b157a
      2deecdd5
    • Jingning Han's avatar
      Use SAD value to set chroma cost flag · 7d8061a4
      Jingning Han authored
      This saves an extra 64x64 variance calculation and replaces two
      32x32 variance functions with sad functions. The compression
      performance change is unnoticeable.
      
      Change-Id: I6d33868695664ec73b56c42945162ae61c484856
      7d8061a4
    • Adrian Grange's avatar
      Make encoder buffer allocation dynamic · 3807dd82
      Adrian Grange authored
      Frame buffers are now allocated dynamically on-demand.
      
      Entries in the reference frame map, cm->ref_frame_map,
      may now be set to -1 (INVALID_IDX) to indicate that
      there is not a valid reference buffer in that "slot".
      
      All slots in the reference frame map are now initialized
      to the empty state (-1) and each buffer is initialized
      to have a reference count of 0.
      
      Change-Id: Id1afe98de98db4ae8b2dfefed7889c3b28c68582
      3807dd82
    • Jingning Han's avatar
      Properly handle the boundary blocks for integral projection search · e5fe1658
      Jingning Han authored
      Use rectangular block size for integral projection motion estimation
      if the the 64x64 block has over half block outside the frame. This
      avoids the issue that the motion information of these blocks is
      dominated by the extended pixels, instead of the pixels of interest.
      
      Change-Id: I22f4d2bb7f6a20db9b3f5e2e5463a7f4b9d1b737
      e5fe1658
  8. 03 Mar, 2015 4 commits
  9. 01 Mar, 2015 1 commit
    • Jingning Han's avatar
      Use variance metric for integral projection vector match · 1790d452
      Jingning Han authored
      This commit replaces the SAD with variance as metric for the
      integral projection vector match. It improves the search accuracy
      in the presence of slight light change. The average speed -6
      compression performance for rtc set is improved by 1.7%. No speed
      changes are observed for the test clips.
      
      Change-Id: I71c1d27e42de2aa429fb3564e6549bba1c7d6d4d
      1790d452
  10. 27 Feb, 2015 2 commits
    • Jingning Han's avatar
      Fix source frame border extension · fe85fabb
      Jingning Han authored
      This commit fixes an issue in source frame border extension. It
      causes certain frame resolution such as 640x480 to have a portion
      of the right/bottom extension filled by zeros, which misleads
      motion search and degrades transform coding performance when large
      block size is used.
      
      This fix improves the speed 2 compression performance of a few
      yt sequence, typically ranging from 1% - 2%, up to 5% at median
      to low bit-rate.
      
      Change-Id: Id6b09a5695d9e7651c6dfbc2c6a72288b08af7fb
      fe85fabb
    • Adrian Grange's avatar
      Fix calc_highbd_psnr · 54293ee3
      Adrian Grange authored
      Should use the crop dimensions of the frame rather
      than the extended size.
      
      Change-Id: I49ed041a46ff0753d43e074020857b7ff2f95e17
      54293ee3
  11. 26 Feb, 2015 4 commits
  12. 25 Feb, 2015 3 commits
  13. 24 Feb, 2015 2 commits
    • Jingning Han's avatar
      Re-distribute hierarchical vector match pattern · f87e315e
      Jingning Han authored
      This commit modifies the hierarchical vector match patter. It
      avoids repeated SAD computation at same points. The function
      vp9_vector_sad_sse2 is called 12 times per 64x64 block, instead
      of 15 times as before. The effective coverage remains the same.
      
      Change-Id: I91ad9d27d40db8963c907d02af84e10702136994
      f87e315e
    • Yunqing Wang's avatar
      Fix ssse3 quantize_fp functions while skip=1 · 58e0159c
      Yunqing Wang authored
      In ssse3 functions, DEFINE_ARGS macro hard codes qcoeff and dqcoeff
      to r3 and r4. If skip is 1, qcoeff and dqcoeff need to be loaded
      from the stack, which doesn't work because of the above definitions.
      Currently, skip=1 case is not used in the encoder. This patch fixed
      the issue, so it can be turned on later.
      
      Change-Id: I998d696b1a7a85dca2b3bcee790b21c21e039147
      58e0159c
  14. 23 Feb, 2015 1 commit
    • paulwilkins's avatar
      Account for rate error in GF group Q calculation. · 8d7f53f0
      paulwilkins authored
      When GF group adaptive maxQ is enabled this patch accounts
      somewhat for accumulated error in the rate control.
      
      This improves accuracy quite a bit on many clips especially
      when there is  overshoot.
      
      Examples when the overshoot and undershoot command line
      parameters are set to 100:
      
      Hall @ 1200 overshoot is reduced from 67-24%.
      Akiyo @ 400 undershoot is reduced from 28%-15%.
      
      Setting a lower value for undershoot or overshoot still
      reduces the error further.
      
      Impact on metrics is mixed with some gains in average psnr
      but generally a little lower (e.g. 0.5%) on overall and ssim.
      
      The GF group adaptation is still off by default in this patch.
      Compared to with the head, enabling this mode now gives
      big average psnr gains on the YT sets (e.g. YT_HD >11.2%),
      a drop in overall PSNR (YT-HD 3.9%) and a smaller drop or
      neutral for SSIM.
      
      Change-Id: If4b32cd0740d3fb941317b374f9c2951954eee90
      8d7f53f0
  15. 20 Feb, 2015 4 commits
  16. 19 Feb, 2015 2 commits
    • Adrian Grange's avatar
      Fix control string in firstpass stats fprintf · 2ae314fe
      Adrian Grange authored
      20 items in the control string but only 19 arguments.
      
      Change-Id: I51dab9aa1c58c653b52395005a9cb41f09feb484
      2ae314fe
    • Yunqing Wang's avatar
      Improve skip_txfm thresholds in the non-rd mode selection · 81fc5bf8
      Yunqing Wang authored
      Modified the thresholds of deciding whether or not to skip
      the transforms in model_rd_for_sb_y(). Used zbin[] instead
      of dequant[] to be more precise. Also, modified the checking
      coditions.
      
      Rtc set borg test results (at speed 6) showed:
      average PSNR gain: 0.138%, overall PSNR gain: 0.158%,
      and SSIM gain: 0.177%.
      
      The data rate test was modified slightly as suggested by
      Marco.
      
      Change-Id: Ieaf633ab77f4838cb3c45cf69065b29d55f8ae6c
      81fc5bf8