1. 09 Mar, 2015 1 commit
    • paulwilkins's avatar
      Allow q adjustment for VPX_CQ and VPX_CBR. · 2cff9c4e
      paulwilkins authored
      Adjustment previously only enabled in VBR mode.
      This patch allows adjustment of min and max q for CBR
      and adjustment of max q only for CQ mode.
      Change-Id: Id5e583f3d50453cd544fc57249acacd946457482
  2. 05 Mar, 2015 5 commits
  3. 04 Mar, 2015 5 commits
    • Adrian Grange's avatar
      Small rationalization of code in vp9_first_pass · fed9e1fe
      Adrian Grange authored
      Change-Id: I87cc0e038171c60a957298827e312fead500f7fb
    • 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
    • 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
    • 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
    • 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
  4. 03 Mar, 2015 4 commits
  5. 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
  6. 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
    • 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
  7. 26 Feb, 2015 4 commits
  8. 25 Feb, 2015 3 commits
  9. 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
    • 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
  10. 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
  11. 20 Feb, 2015 4 commits
  12. 19 Feb, 2015 4 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
    • 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
      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
      Change-Id: Ieaf633ab77f4838cb3c45cf69065b29d55f8ae6c
    • Jingning Han's avatar
      Integral projection based motion estimation · ed2dc59c
      Jingning Han authored
      This commit introduces a new block match motion estimation
      using integral projection measurement. The 2-D block and the nearby
      region is projected onto the horizontal and vertical 1-D vectors,
      respectively. It then runs vector match, instead of block match,
      over the two separate 1-D vectors to locate the motion compensated
      reference block.
      This process is run per 64x64 block to align the reference before
      choosing partitioning in speed 6. The overall CPU cycle cost due
      to this additional 64x64 block match (SSE2 version) takes around 2%
      at low bit-rate rtc speed 6. When strong motion activities exist in
      the video sequence, it substantially improves the partition
      selection accuracy, thereby achieving better compression performance
      and lower CPU cycles.
      The experiments were tested in RTC speed -6 setting:
      cloud 1080p 500 kbps
      17006 b/f, 37.086 dB, 5386 ms ->
      16669 b/f, 37.970 dB, 5085 ms (>0.9dB gain and 6% faster)
      pedestrian_area 1080p 500 kbps
      53537 b/f, 36.771 dB, 18706 ms ->
      51897 b/f, 36.792 dB, 18585 ms (4% bit-rate savings)
      blue_sky 1080p 500 kbps
      70214 b/f, 33.600 dB, 13979 ms ->
      53885 b/f, 33.645 dB, 10878 ms (30% bit-rate savings, 25% faster)
      jimred 400 kbps
      13380 b/f, 36.014 dB, 5723 ms ->
      13377 b/f, 36.087 dB, 5831 ms  (2% bit-rate savings, 2% slower)
      Change-Id: Iffdb6ea5b16b77016bfa3dd3904d284168ae649c
    • Jingning Han's avatar
      Fix a check condition in nonrd_pick_partition · 83559e73
      Jingning Han authored
      Change-Id: Ic92fb4b16948f745c218351b24fdafecf9abce3a
  13. 13 Feb, 2015 2 commits
    • Yaowu Xu's avatar
      Fix an encoder/decode mismatch bug · 4bc7f482
      Yaowu Xu authored
      This commit prevent the encoder to update last_frame_type when a frame
      is dropped in the encoder. Prior to this fix, if there is a dropped
      frame immediatedly after a key frame, decoder would have the value of
      last_frame_type as key frame, different from encoder as the dropped
      frame in encoder would have updated the value to an inter frame. This
      leads to different probability update in encoder and decoder, thereby
      encoder/decoder mismatch.
      This fixes issue #941
      Change-Id: I27115224b138bec43ae3916c016574f5740822b0
    • Marco's avatar
      Replace some operations with shift in encoder_breakout. · b1940bf5
      Marco authored
      Replaced a divide by 9 with 8, so some very small difference,
      but otherwise no change in behavior.
      Change-Id: I1079ae3c41e0789ff0bc6fa9940a238b6bca0f5b
  14. 12 Feb, 2015 2 commits
    • Jingning Han's avatar
      Fix ioc issue in block_rd_txfm · 5041aa0f
      Jingning Han authored
      Force 64-bit precision in the intermediate steps.
      Change-Id: I666113d9adcef8975da201d5aa1a13b783d09594
    • Marco's avatar
      Add skin detection. · 56435bb7
      Marco authored
      Simple skin detection, from vp8; works reasonable on most of the
      RTC clips, but could miss sometimes.
      Added debug flag to write out skin map over source input.
      Change-Id: I2caea7592f1c459047aac46627eeb24a94946464