1. 12 Mar, 2015 1 commit
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 13 Feb, 2015 1 commit
  10. 11 Feb, 2015 3 commits
  11. 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
  12. 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
  13. 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
  14. 23 Jan, 2015 1 commit
  15. 07 Jan, 2015 3 commits
  16. 02 Jan, 2015 1 commit
  17. 30 Dec, 2014 1 commit
  18. 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
  19. 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
  20. 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
  21. 17 Dec, 2014 2 commits
    • Jingning Han's avatar
      Rework mode search threshold update for RTC coding mode · 455514a6
      Jingning Han authored
      In RTC coding mode, the alternate reference frame modes and compound
      inter prediction modes are disabled. This commit reworks the
      related mode search threshold update process to skip interacting
      with these coding modes. It provides about 1.5% speed-up for speed
      -6 on average.
      
      vidyo1
      16551 b/f, 40.451 dB, 6261 ms -> 16550 b/f, 40.459 dB, 6190 ms
      
      nik720p
      33316 b/f, 38.795 dB, 6335 ms -> 33310 b/f, 38.798 dB, 6237 ms
      
      mmmoving
      33265 b/f, 41.055 dB, 7176 ms -> 33267 b/f, 41.064 dB, 7084 ms
      
      dark720
      33329 b/f, 39.729 dB, 11235 ms -> 33331 b/f, 39.733 dB, 10731 ms
      
      Change-Id: If2a4090a371cd28f579be219c013b972d7d9b97f
      455514a6
    • Jingning Han's avatar
      Properly store the tx_size of selected intra mode · 56a8bc54
      Jingning Han authored
      Use a temporary variable to store the transform size associated
      with the best intra mode and restore the mode_info if the overall
      best mode is intra mode.
      
      Change-Id: I2606e0061ad32f91b095462902b1eb734b128eea
      56a8bc54
  22. 16 Dec, 2014 1 commit
    • Jingning Han's avatar
      Fix intra mode update process in vp9_pick_inter_mode · df3e3ab6
      Jingning Han authored
      When multiple intra modes are tested, the previous mode info
      update process may overwrite the selected best intra mode and make
      the final selection use an inter mode. This commit fixes this
      issue by moving the mode_info reset outside the intra mode search
      loop.
      
      Change-Id: I15ed4288a6b3cb0832104a5e6d5d9a25cd1a5b2b
      df3e3ab6
  23. 15 Dec, 2014 3 commits
    • Jingning Han's avatar
      Initialize best_tx_size with invalid value · c2c7596f
      Jingning Han authored
      If vp9_pick_inter_mode works properly, it should at least check
      one coding mode and hence get best_tx_size assigned a valid value.
      There is no need to initialize best_tx_size with a legitimate
      value before starting the mode search.
      
      Change-Id: Ic0496cd89672ea9c2c512a9bd1da952190af9cba
      c2c7596f
    • Jingning Han's avatar
      Use right shift to replace division in vp9_pick_inter_mode · 83e2c62a
      Jingning Han authored
      Make the variable reduction_fac log2 based and explicitly use
      right shift when computing intra_cost_penalty.
      
      Change-Id: I208f1fb879a02debb3b3fc64f9fd06260dcf1c86
      83e2c62a
    • Jingning Han's avatar
      Simplify rate-distortion modeling function · eefe8692
      Jingning Han authored
      Use left shift to replace one multiplication. The computation
      outcome remains identical.
      
      Change-Id: I1e1737af0a245de0d2a2bde10f0c171477199fc1
      eefe8692
  24. 10 Dec, 2014 1 commit
    • Jingning Han's avatar
      Use use_prev_frame_mvs flag for ref mv search branch · 0cac834b
      Jingning Han authored
      Replace error_resilient flag with use_prev_frame_mvs in
      vp9_pick_inter_mode reference motion vector search selection.
      This effectively turns off the simplified ref mv search in the
      settings of frame resizing, even if error-resilient mode is off.
      
      Change-Id: I7fed814ee7bc0cb419a03b846e0fc2de46ba7686
      0cac834b
  25. 06 Dec, 2014 1 commit
    • Jingning Han's avatar
      Remove redundant rdcost reset · 17bedc54
      Jingning Han authored
      The initial reset of this_rdc in vp9_pick_inter_mode is not needed,
      since it will be re-assign when used.
      
      Change-Id: Ic0e12d741cbab292fc214c1eabb48b129af7839b
      17bedc54
  26. 05 Dec, 2014 2 commits
  27. 04 Dec, 2014 1 commit