1. 30 Mar, 2015 1 commit
    • Jingning Han's avatar
      Hadamard transform based coding mode decision process · 8c411f74
      Jingning Han authored
      This commit uses Hadamard transform based rate-distortion cost
      estimate for rtc coding mode decision. It improves the compression
      performance of speed -6 for many hard clips at lower bit-rates.
      For example, 5.5% for jimredvga, 6.7% for mmmoving, 6.1% for
      niklas720p. This will introduce extra encoding cycle costs at
      this point.
      
      Change-Id: Iaf70634fa2417a705ee29f2456175b981db3d375
      8c411f74
  2. 21 Mar, 2015 1 commit
    • Yaowu Xu's avatar
      vp9_pred_mv(): misc fixes and optimizations · 9fd8abc5
      Yaowu Xu authored
      1. skip near if it is same as nearest
      2. correct rounding for converting mv to fullpel position
      3. update pred_mv_sad after new mv search.
      
      Overall .1%~.25% compression gains on rtc set for speed 5, 6, 7, 8.
      
      Change-Id: Ic300ca53f7da18073771f1bb993c58cde9deee89
      9fd8abc5
  3. 18 Mar, 2015 1 commit
    • Jingning Han's avatar
      Speed up non-rd mode decision search · 83cbe226
      Jingning Han authored
      This commit makes the encoder to explicitly calculate the SAD
      associated with the LAST_FRAME motion vector and compare it to
      that of the GOLDEN_FRAME given by integral projection motion
      estimation. It skips the expensive sub-pixel motion search over
      GOLDEN_FRAME when the LAST_FRAME can provide fairly good motion
      compensated prediction quality.
      
      For dark720p speed -6 single thread goes from
      33304 b/f, 40.070 dB, 18156 ms ->
      33319 b/f, 40.061 dB, 17611 ms
      
      Change-Id: I01bc94b9b598075567a392111046b97a9bc30efe
      83cbe226
  4. 17 Mar, 2015 1 commit
    • Jingning Han's avatar
      Fix an ioc warning in vp9_pick_inter_mode · ee411414
      Jingning Han authored
      Shut off all the metric checks for golden reference frame, if we
      decide that it is unlikely to be selected for reference.
      
      Change-Id: Ie457cc1fd43935584403b4982659aed80fb9909c
      ee411414
  5. 16 Mar, 2015 5 commits
  6. 12 Mar, 2015 3 commits
  7. 11 Mar, 2015 3 commits
    • Jingning Han's avatar
      Remove unnecessary speed feature checking · 313c28f8
      Jingning Han authored
      This commit removes the pred_mv_sad comparison from rtc motion
      search, given that a stronger comparison has been done at the
      mode search level to eliminate unlikely selected reference frames.
      
      Change-Id: I49b8d24b2174303066fd8eff2102c0648f2869df
      313c28f8
    • Jingning Han's avatar
      Apply fast motion search to golden reference frame · 54eda13f
      Jingning Han authored
      This commit enables the rtc coding mode to run integral projection
      based motion search for golden reference frame. It improves the
      speed -6 compression performance by 1.1% on average, 3.46% for
      jimred_vga, 6.46% for tacomascmvvga, and 0.5% for vidyo clips. The
      speed -6 is about 6% slower.
      
      Change-Id: I0fe402ad2edf0149d0349ad304ab9b2abdf0c804
      54eda13f
    • Yaowu Xu's avatar
      Separate rd_thresh adaption by ref_frame · d549aa3b
      Yaowu Xu authored
      Only update the rd_thresh factors for modes sharing same reference
      frame. This helps overall compression of 6 and 7 by .13% and .19%
      respectively without any noticeable speed difference.
      
      Change-Id: Idb3a3879512c5d7d0880034516079949290690c5
      d549aa3b
  8. 09 Mar, 2015 1 commit
    • 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
  9. 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
  10. 04 Mar, 2015 1 commit
    • 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
  11. 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
  12. 20 Feb, 2015 2 commits
    • Marco's avatar
      Adjustments to cyclic refresh (aq-mode=3). · 0187f4b4
      Marco authored
      Target higher delta-qp for big blocks with zero motion,
      and for segment#1: avoid 64x64 partition size and force 8x8 tx size.
      
      Metrics on RTC set mostly positive: SSIM up by ~4%, PSRN by ~1.5%.
      Doesn't seem to be any change in speed.
      
      Change-Id: I1f68fa3c4f62dab3b90cc58041f05ebb048ae5ac
      0187f4b4
    • Jingning Han's avatar
      Add high bit depth support to rtc sub8x8 block coding · 6f424589
      Jingning Han authored
      This commit adds proper buffer handle to support high bit depth
      in rtc sub8x8 block coding.
      
      Change-Id: Ibaf8a2160194121aec9ca68b8094817fed9ccaea
      6f424589
  13. 19 Feb, 2015 1 commit
    • 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
  14. 13 Feb, 2015 1 commit
  15. 11 Feb, 2015 3 commits
  16. 06 Feb, 2015 1 commit
    • Jingning Han's avatar
      Re-arrange inter mode search order in RTC coding flow · b2762a88
      Jingning Han authored
      This commit makes the ZEROMV mode first in the search order to
      ensure that the zero mv is always checked in the RTC coding mode.
      It improves the average speed -6 compression performance by 0.3%
      in both PSNR and SSIM at no visible speed change.
      
      Change-Id: I465a7e59f4e20cd84fee3f02ced6f98036945949
      b2762a88
  17. 04 Feb, 2015 2 commits
    • Jingning Han's avatar
      Save an extra call for setup_pred_plane function · 4ccfc7d5
      Jingning Han authored
      Reuse the yv12_mb array to fetch the buffer pointers/strides
      corresponding to the current reference frame.
      
      Change-Id: I5276b7494158b2cccef15213be2dc189e9036851
      4ccfc7d5
    • Jingning Han's avatar
      Account for chroma component costs in RTC mode decision · 0c6d3a03
      Jingning Han authored
      This commit allows the encoder to account for additional chroma
      plane costs in the mode decision process, if the current block
      potentially contains significant color change. It improves the
      visual quality at very low bit-rates.
      
      The compression performance of dark720p is improved by 12.39% in
      speed 6. For jimred at 150 kbps, the PSNR of V component (red)
      increased by 0.2 dB, at the expense of about 5% increase in
      encoding time. Note that for sequences where the chroma components
      are fairly consistent, the encoding time increase is negligible.
      
      On average the rtc set compression performance is improved by
      1.172% in PSNR and 1.920% in SSIM.
      
      Change-Id: Ia55b24ef23a25304f7ec9958fbf07fd6e658505c
      0c6d3a03
  18. 31 Jan, 2015 1 commit
    • hkuang's avatar
      Try again to merge branch 'frame-parallel' into master branch. · be6aeada
      hkuang authored
      In frame parallel decode, libvpx decoder decodes several frames on all
      cpus in parallel fashion. If not being flushed, it will only return frame
      when all the cpus are busy. If getting flushed, it will return all the
      frames in the decoder. Compare with current serial decode mode in which
      libvpx decoder is idle between decode calls, libvpx decoder is busy
      between decode calls.
      
      Current frame parallel decode will only speed up the decoding for frame
      parallel encoded videos. For non frame parallel encoded videos, frame
      parallel decode is slower than serial decode due to lack of loopfilter
      worker thread.
      
      There are still some known issues that need to be addressed. For example:
      decode frame parallel videos with segmentation enabled is not right sometimes.
      
      * frame-parallel:
        Add error handling for frame parallel decode and unit test for that.
        Fix a bug in frame parallel decode and add a unit test for that.
        Add two test vectors to test frame parallel decode.
        Add key frame seeking to webmdec and webm_video_source.
        Implement frame parallel decode for VP9.
        Increase the thread test range to cover 5, 6, 7, 8 threads.
        Fix a bug in adding frame parallel unit test.
        Add VP9 frame-parallel unit test.
        Manually pick "Make the api behavior conform to api spec." from master branch.
        Move vp9_dec_build_inter_predictors_* to decoder folder.
        Add segmentation map array for current and last frame segmentation.
        Include the right header for VP9 worker thread.
        Move vp9_thread.* to common.
        ctrl_get_reference does not need user_priv.
        Seperate the frame buffers from VP9 encoder/decoder structure.
        Revert "Revert "Revert "Revert 3 patches from Hangyu to get Chrome to build:"""
       Conflicts:
             test/codec_factory.h
             test/decode_test_driver.cc
             test/decode_test_driver.h
             test/invalid_file_test.cc
             test/test-data.sha1
             test/test.mk
             test/test_vectors.cc
             vp8/vp8_dx_iface.c
             vp9/common/vp9_alloccommon.c
             vp9/common/vp9_entropymode.c
             vp9/common/vp9_loopfilter_thread.c
             vp9/common/vp9_loopfilter_thread.h
             vp9/common/vp9_mvref_common.c
             vp9/common/vp9_onyxc_int.h
             vp9/common/vp9_reconinter.c
             vp9/decoder/vp9_decodeframe.c
             vp9/decoder/vp9_decodeframe.h
             vp9/decoder/vp9_decodemv.c
             vp9/decoder/vp9_decoder.c
             vp9/decoder/vp9_decoder.h
             vp9/encoder/vp9_encoder.c
             vp9/encoder/vp9_pickmode.c
             vp9/encoder/vp9_rdopt.c
             vp9/vp9_cx_iface.c
             vp9/vp9_dx_iface.c
      
      This reverts commit a18da976.
      
      Change-Id: I361442ffec1586d036ea2e0ee97ce4f077585f02
      be6aeada
  19. 23 Jan, 2015 1 commit
  20. 07 Jan, 2015 3 commits
  21. 02 Jan, 2015 1 commit
  22. 30 Dec, 2014 1 commit
  23. 25 Dec, 2014 1 commit
    • Jingning Han's avatar
      Enable sub8x8 inter block search for RTC coding mode · dad89d5c
      Jingning Han authored
      This commit enables sub8x8 inter block coding for RTC mode. The
      use of sub8x8 blocks can be turned on by allowing
      choose_partitioning function to select 4x4/4x8/8x4 block sizes.
      
      Change-Id: Ifbf1fb3888fe4c094fc85158ac3aa89867d8494a
      dad89d5c
  24. 23 Dec, 2014 1 commit
    • Jingning Han's avatar
      Set ref frame scaling factor in RTC inter mode decision · eb1795f6
      Jingning Han authored
      Properly set the corresponding scaling factor of the reference
      frame in the non-RD mode decision process. This allows the mode
      search process to account for the scaled reference frame when
      selecting coding mode.
      
      Change-Id: I9d41bff6931c98e5a82b413e37ac5e6e14b93b23
      eb1795f6
  25. 18 Dec, 2014 2 commits
    • Jingning Han's avatar
      Add a guard on intra mode skip control for RTC mode · 6ec0ef66
      Jingning Han authored
      This commit adds a guard condition to the intra mode test skip
      control in RTC coding mode. If all inter modes are skipped, force
      the encoder to check intra mode. It avoids situations where the
      encoder processes without properly assigning required mode
      information.
      
      Change-Id: Ibb349fee997d6584ce901d08b06e8df3ca9c01b1
      6ec0ef66
    • Jingning Han's avatar
      Remove ARF mode entries from THR_MODES array in non-RD mode · dd0602e0
      Jingning Han authored
      The alternate reference frame is disabled in non-RD mode. No need
      to keep the related entries in the THR_MODES array.
      
      Change-Id: I53386f4bb1c6284f582801f27246c5edf55bc24b
      dd0602e0