1. 07 Jan, 2015 1 commit
  2. 02 Jan, 2015 1 commit
  3. 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
  4. 22 Dec, 2014 1 commit
  5. 19 Dec, 2014 1 commit
  6. 18 Dec, 2014 2 commits
    • Paul Wilkins's avatar
      Removal of legacy zbin_extra / zbin_oq_value. · e9b586e2
      Paul Wilkins authored
      zbin extra / zbin_oq_value was widely passed around,
      hence removal touches a lot of code.
      Change-Id: Idc94359735b60c38a160e4385ae09d5ca8b6b8e5
    • Paul Wilkins's avatar
      Remove mode dependent zbin boost. · 60e9b731
      Paul Wilkins authored
      Initial patch to remove get_zbin_mode_boost() and
      For now sets a dummy value of 0 for zbin extra pending
      a further clean up patch.
      Change-Id: I64a1e1eca2d39baa8ffb0871b515a0be05c9a6af
  7. 17 Dec, 2014 1 commit
    • Paul Wilkins's avatar
      Deleted unused #define · b7631212
      Paul Wilkins authored
      FAST_MOTION_MV_THRESH no longer referenced.
      Change-Id: Idee6ee5a59ba330904c42b20c9ec35b6fc16f7a2
  8. 16 Dec, 2014 1 commit
    • Peter de Rivaz's avatar
      Fix for crash in highbitdepth rt mode · e3d19bfc
      Peter de Rivaz authored
      Change 72141 introduced a new use of vp9_avg_4x4.
      This call needs to switch to using vp9_highbd_avg_4x4
      when performing high bitdepth encodes.
      Change-Id: I6a8ba4b62f8a75d0a917b365a55245e2f0438ea1
  9. 12 Dec, 2014 2 commits
    • James Zern's avatar
      vp9: move encoder-only member from common · 72ece130
      James Zern authored
      allow_comp_inter_inter VP9_COMMON -> VP9_COMP
      Change-Id: I6d9dc25d1cdd7e2ab62f5be69cd9fa883d21dbb6
    • Jingning Han's avatar
      Fix PICK_MODE_CONTEXT index in non-RD coding mode · e2c2a656
      Jingning Han authored
      This commit fixes a bug in the PICK_MODE_CONTEXT index for
      horizontal partition case. The compression performance change
      is less than 0.01% level, since most blocks are selected to
      use square block size in RTC coding mode.
      Change-Id: I67effc18ae8795fccdd82a55f4efc609fa5cb3e1
  10. 11 Dec, 2014 3 commits
    • Marco's avatar
      Allow for 4x4 prediction blocks for key frame, speed 6. · 7e99cd2a
      Marco authored
      For key frame under variance source partition: 4x4 prediction blocks
      may be selected when variance of 8x8 block is very high (threshold is set fairly high for now).
      Testing on some RTC clips shows this helps to reduce some ringing artifacts on key frame.
      Encoded key frame size increases about ~10%. Key frame PSNR increases about ~0.1-0.2dB.
      Change-Id: I56e203fac32ea6ef69897fb3ea269c59cb50d174
    • Jingning Han's avatar
      Replace division with bit shift in choose_partitioning · d5c396a9
      Jingning Han authored
      This commit explicitly uses the bit shift operation instead of
      division for computing block variance.
      Change-Id: Id19c0ff27dd1d1ae4aceee6657e1aad0d406bd74
    • Jingning Han's avatar
      Refactor choose_partitioning computing scheme · 377d2f02
      Jingning Han authored
      This commit refactors the choose_partitioning function. It removes
      redundant memset calls and makes the encoder to calculate
      variance value per block only when it is needed. It reduces the
      average runtime cost of choose_partitioning by 60%. Overall it
      reduces speed -6 runtime by 2-5%.
      Change-Id: I951922c50d901d0fff77a3bafc45992179bacef9
  11. 09 Dec, 2014 6 commits
    • Jingning Han's avatar
      Refactor update_state_rt · e728678c
      Jingning Han authored
      Update the frame motion vector only if previous frame motion vector
      is needed for next frame reference motion vector.
      Change-Id: Ica50f9d7b46ad4f815bba0d9e30f5546df29546f
    • Jingning Han's avatar
      Make RTC coding flow support sub8x8 in key frame coding · 225cdef6
      Jingning Han authored
      This commit enables the use of sub8x8 blocks in RTC key frame
      encoding. It requires the block size to be preset and will decide
      the coding mode and encode the bit-stream.
      Change-Id: I35aaf8ee2d4d6085432410c7963f339f85a2c19b
    • Jingning Han's avatar
      Cosmetic naming change · 4bacaab4
      Jingning Han authored
      Rename set_modeinfo_offsets as set_mode_info_offsets, to be more
      consistent with naming convention.
      Change-Id: I68ca1f36c4a78127d9439a50c1506a2afd07927d
    • Jingning Han's avatar
      Take out redundant setting of mode_info from set_block_size · f051a7be
      Jingning Han authored
      The later encoding process will take the top-left block's
      mode_info for pre-determined block size.
      Change-Id: I76a90f9ce7f3b2dbc2975b52442114e461c465b5
    • Paul Wilkins's avatar
      Substantial restructuring of AQ mode 2. · e68c8dcf
      Paul Wilkins authored
      The restructure moves the decision into the rd pick
      modes loop and makes a decision based at the 16x16
      block level instead of only the 64x64 level.
      This gives finer granularity and better visual results
      on the clips I have tested. Metrics results are worse
      than the old AQ2 especially for PSNR and this mode
      now falls between AQ0 and AQ1 in terms of visual
      impact and metrics results.
      Further tuning of this to follow.
      It should be noted that if there are multiple iterations
      of the recode loop the segment for a MB could change
      in each loop if the previous loop causes a change in the
      complexity / variance bin of the block. Also where a block
      gets a delta Q this will alter the rd multiplier for this block
      in subsequent recode iterations and frames where the
      segmentation is applied.
      Change-Id: I20256c125daa14734c16f7cc9aefab656ab808f7
    • Jingning Han's avatar
      Remove unused rd cost calculation from nonrd_use_partition · 1395ded2
      Jingning Han authored
      The per block rd cost calculation is not needed when partition
      size is preset.
      Change-Id: Ie5575248bbffb584e908aa13097f697ace6ec747
  12. 06 Dec, 2014 1 commit
  13. 05 Dec, 2014 2 commits
    • Jingning Han's avatar
      Remove redundant vp9_zero in choose_partitioning · 9d88b308
      Jingning Han authored
      It makes the overall speed -6 about 2% faster with no compression
      performance change.
      Change-Id: I680a967b421caa2c5a5cdb821311c4726a2df45a
    • Jingning Han's avatar
      Use hybrid RD and non-RD coding flow for key frame coding · 07711e9b
      Jingning Han authored
      When block size is below 16x16, the encoder swap from non-RD to
      RD mode for key frame coding. This largely brough back the key
      frame compression performance. For vidyo1 at 1000 kbps, the key
      frame coding statistics are changed
      9978F, 34.183 dB, 36807 us -> 9838F, 35.020 dB, 61677 us
      As compared to the full RD case
      7187F, 34.930 dB, 214470 us
      The overall rtc set coding performance (single key frame setting)
      is improved by 1.5%.
      Change-Id: I78a4ecf025d7b24ec911e85be94e01da05e77878
  14. 04 Dec, 2014 2 commits
    • hkuang's avatar
      Merge set_prev_mi function into encoder function. · 62de07c8
      hkuang authored
      Change-Id: Ifcf2efbb232ea4cabcdebbe77e0820d121e4a6da
    • Yunqing Wang's avatar
      vp9_ethread: the tile-based multi-threaded encoder · eba9c762
      Yunqing Wang authored
      Currently, VP9 supports column-tile encoding, which allows a frame
      to be encoded in multiple column tiles independently. The number of
      column tiles are set by encoder option "--tile-columns". This
      provides a way to encode a frame in parallel.
      Based on previous set of patches, this patch implemented the tile-
      based multi-threaded encoder. Each thread processes one or more
      For HD clips:
      --tile-columns=2 --threads=1/2/3/4
      While using 4 threads, tests showed that the encoder achieved
      2.3X - 2.5X speedup at good-quality speed 3, and 2X speedup at
      realtime speed 5.
      Change-Id: Ied987f8f2618b1283a8643ad255e88341733c9d4
  15. 03 Dec, 2014 2 commits
    • Jingning Han's avatar
      Fix indent in source_var_based_partition_search_method · 17176cd4
      Jingning Han authored
      Change-Id: I6e5e0571d6967b9b992966336715e35bb97f187e
    • Marco's avatar
      Enable non-rd mode coding on key frame, for speed 6. · 8fd3f9a2
      Marco authored
      For key frame at speed 6: enable the non-rd mode selection in speed setting
      and use the (non-rd) variance_based partition.
      Adjust some logic/thresholds in variance partition selection for key frame only (no change to delta frames),
      mainly to bias to selecting smaller prediction blocks, and also set max tx size of 16x16.
      Loss in key frame quality (~0.6-0.7dB) compared to rd coding,
      but speeds up key frame encoding by at least 6x.
      Average PNSR/SSIM metrics over RTC clips go down by ~1-2% for speed 6.
      Change-Id: Ie4845e0127e876337b9c105aa37e93b286193405
  16. 02 Dec, 2014 1 commit
    • Peter de Rivaz's avatar
      Added high bitdepth sse2 transform functions · 7e40a55e
      Peter de Rivaz authored
      Also removes some spurious changes in common/vp9_blockd.h which
      was introduced by a rebase issue between nextgen and master branches.
      Change-Id: If359f0e9a71bca9c2ba685a87a355873536bb282
      (cherry picked from commit 005d80cd05269a299cd2f7ddbc3d4d8b791aebba)
      (cherry picked from commit 08d2f548007fd8d6fd41da8ef7fdb488b6485af3)
      (cherry picked from commit 4230c2306c194c058f56433a5275aa02a2e71d56)
  17. 26 Nov, 2014 1 commit
  18. 25 Nov, 2014 1 commit
    • 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
  19. 24 Nov, 2014 1 commit
    • 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
  20. 21 Nov, 2014 2 commits
    • Paul Wilkins's avatar
      Remove rate component adjustment for AQ1 · f5209d7e
      Paul Wilkins authored
      In AQ1 a rate adjustment was applied for blocks coded with a
      deltaq. This tends to skew the partition selection and cause
      rate overshoot.
      For example, consider a 64x64 super block where some but not all
      sub blocks are in a low q segment and some are in a high q segment.
      The choice of Q when considering large partition and transform sizes
      is defined by the lowest sub block segment id (currently this implies the
      lowest Q). If some parts of the larger partition are very hard this will
      cause a high rate component.
      The correct behavior here is for the rd code to discard the large partition
      choice and break down to sub blocks where some have low and some
      have high Q.  However the rate correction factor above mask the high
      cost of coding at a larger partition size.
      Change-Id: Ie077edd0b1b43c094898f481df772ea280b35960
    • Paul Wilkins's avatar
      Add variance restriction to AQ2. · d0312379
      Paul Wilkins authored
      Add an additional restriction to bit/complexity based
      segmentation based on spatial variance.
      Only lower Q when both the number of bits spent
      in the initial encoding pass and the spatial complexity are
      below a threshold. This will prevent the low Q segments
      being used just because there is a surfeit of bits.
      Small metrics gains especially opsnr.
      derf ~0.2% std-hd ~0.3%
      Change-Id: I6a8496d466d673f9b0e2b2ca6304ea7b6d8e1cce
  21. 20 Nov, 2014 3 commits
  22. 15 Nov, 2014 1 commit
    • Yunqing Wang's avatar
      vp9_ethread: combine encoder counts in separate struct · d0b547c6
      Yunqing Wang authored
      Several frame counters in encoder are updated at SB level. Combine
      those counters and put them in a separate struct, which allows us
      to allocate one copy for each thread.
      Change-Id: I00366296a13c0ada4d8fa12f5e07728388b6cab7
  23. 14 Nov, 2014 1 commit
  24. 13 Nov, 2014 1 commit
    • Yunqing Wang's avatar
      vp9_ethread: modify the cyclic refresh struct · 8ee605f1
      Yunqing Wang authored
      Two members in struct CYCLIC_REFRESH
        int64_t projected_rate_sb;
        int64_t projected_dist_sb;
      are updated at the superblock level, which makes them shared data
      in the multi-thread situation, and requires extra work to handle
      them. However, those values are updated and used immediately, and
      therefore can be removed. This patch cleaned up the code and
      removed the two members.
      Change-Id: I2c6ee4552bf49fb63ce590cdb47f9723974fffb1
  25. 07 Nov, 2014 1 commit