1. 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
  2. 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
  3. 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
    • 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
  4. 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
      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
  5. 13 Feb, 2015 1 commit
  6. 11 Feb, 2015 3 commits
  7. 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
  8. 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
    • 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
  9. 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:"""
      This reverts commit a18da976.
      Change-Id: I361442ffec1586d036ea2e0ee97ce4f077585f02
  10. 23 Jan, 2015 1 commit
  11. 07 Jan, 2015 3 commits
  12. 02 Jan, 2015 1 commit
  13. 30 Dec, 2014 1 commit
  14. 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
  15. 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
  16. 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
      Change-Id: Ibb349fee997d6584ce901d08b06e8df3ca9c01b1
    • 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
  17. 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.
      16551 b/f, 40.451 dB, 6261 ms -> 16550 b/f, 40.459 dB, 6190 ms
      33316 b/f, 38.795 dB, 6335 ms -> 33310 b/f, 38.798 dB, 6237 ms
      33265 b/f, 41.055 dB, 7176 ms -> 33267 b/f, 41.064 dB, 7084 ms
      33329 b/f, 39.729 dB, 11235 ms -> 33331 b/f, 39.733 dB, 10731 ms
      Change-Id: If2a4090a371cd28f579be219c013b972d7d9b97f
    • 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
  18. 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
      Change-Id: I15ed4288a6b3cb0832104a5e6d5d9a25cd1a5b2b
  19. 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
    • 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
    • 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
  20. 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
  21. 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
  22. 05 Dec, 2014 2 commits
  23. 04 Dec, 2014 1 commit
  24. 25 Nov, 2014 3 commits
    • Jingning Han's avatar
      Cosmetic change in vp9_pick_inter_mode · a04ed984
      Jingning Han authored
      Change-Id: Ic072585ebffdb36982ed7b8b9f875ca6c1c656c4
    • Jingning Han's avatar
      Adaptively adjust mode test kick-off thresholds in RTC coding · 92a7cfc8
      Jingning Han authored
      This commit allows the encoder to increase the mode test kick-off
      thresholds if the previous best mode renders all zero quantized
      coefficients, thereby saving motion search runs when possible.
      The compression performance of speed -5 and -6 is down by -0.446%
      and 0.591%, respectively. The runtime of speed -6 is improved by
      10% for many test clips.
      vidyo1, 1000 kbps
      16578 b/f, 40.316 dB, 7873 ms -> 16575 b/f, 40.262 dB, 7126 ms
      nik720p, 1000 kbps
      33311 b/f, 38.651 dB, 7263 ms -> 33304 b/f, 38.629 dB, 6865 ms
      dark720p, 1000 kbps
      33331 b/f, 39.718 dB, 13596 ms -> 33324 b/f, 39.651 dB, 12000 ms
      mmoving, 1000 kbps
      33263 b/f, 40.983 dB, 7566 ms -> 33259 b/f, 40.978 dB, 7531 ms
      Change-Id: I7591617ff113e91125ec32c9b853e257fbc41d90
    • Yunqing Wang's avatar
      vp9_ethread: modify VP9_COMP structure · edbd61e1
      Yunqing Wang authored
      This patch modified struct VP9_COMP. Created a struct ThreadData
      to include data that need to be copied for each thread. In
      multiple thread case, one thread processes one tile. all threads
      share one copy of VP9_COMP,
      (refer to VP9_COMP *cpi in the code)
      but each thread has its own copy of ThreadData,
      (refer to ThreadData *td in the code).
      Therefore, within the scope of encode_tiles(), both cpi and td
      need to be passed as function parameters.
      In single thread case, the FRAME_COUNTS pointer in ThreadData
      points to "counts" in VP9_COMMON.
      Change-Id: Ib37908b2d8e2c0f4f9c18f38017df5ce60e8b13e
  25. 24 Nov, 2014 2 commits
    • Jingning Han's avatar
      Remove redundant intra mode penalty from vp9_pick_inter_mode · 25be81e2
      Jingning Han authored
      The intra mode penalty is covered by intra_cost_penalty. This
      commit removes the other intra cost threshold, provided that the
      constant 50 is negligible in normal rate-distortion cost.
      Change-Id: I9b8b7483c43b9a41741622e7057def1f7d51bb72
    • Jingning Han's avatar
      Key frame non-RD mode decision process · 2fbdfd2c
      Jingning Han authored
      This commit makes a non-RD coding mode decision process for key
      frame coding. It can be optionally turned on in speed -6 and above.
      Change-Id: I0847258b392877a0210b4768bef88ebc9ad009b5
  26. 21 Nov, 2014 1 commit
    • Jingning Han's avatar
      Rework forward txfm/quantization skip system in RTC coding mode · 7428cebe
      Jingning Han authored
      This commit allows more aggressive decision to skip forward
      transform and quantization for luma component in RTC coding mode.
      The chroma components remains going through the normal coding
      routine, since they are not included in the non-RD mode search
      It reduces the runtime cost by 2% - 10%. In speed -6,
      vidyo1 1000 kbps
      16576 b/f, 40.281 dB, 8402 ms -> 16576 b/f, 40.323 dB, 7764 ms
      nik720p 1000 kbps
      33337 b/f, 38.622 dB, 7473 ms -> 33299 b/f, 38.660 dB, 7314 ms
      dark720p 1000 kbps
      33330 b/f, 39.785 dB, 13505 ms -> 33325 b/f, 39.714 dB, 13105 ms
      The compression performance of speed -6 is improved by 0.44% in
      PSNR and 1.31% in SSIM.
      Change-Id: Iae9e3738de6255babea734e5897f29118bebc6d7