1. 14 Sep, 2017 1 commit
    • Hui Su's avatar
      VP9 level targeting: add a new AUTO mode · c3a6943c
      Hui Su authored
      In the new AUTO mode, restrict the minimum alt-ref interval and max column
      tiles adaptively based on picture size, while not applying any rate control
      This mode aims to produce encodings that fit into levels corresponding to
      the source picture size, with minimum compression quality lost. However, the
      bitstream is not guaranteed to be level compatible, e.g., the average bitrate
      may exceed level limit.
      Change-Id: I02080b169cbbef4ab2e08c0df4697ce894aad83c
  2. 16 Aug, 2017 1 commit
    • paulwilkins's avatar
      Prevent parameters that can cause invalid ARF groups. · b814e2d8
      paulwilkins authored
      Having a very low "lag_in_frames" value could cause the encoder to create
      incorrect / corrupt ARF groups including displayed frames that update the
      ARF buffer and false overlay frames that are coded at low rate but are not
      actually overlays of a real ARF frame.
      This is linked to a reported unit test "slow down" where the chosen parameters
      (lag of 3 frames) gave rise to such "broken" ARF group(s).
      See also BUG=webm:1454
      Change-Id: If52d0236243ed5552537d1ea9ed3fed8c867232c
  3. 10 Jul, 2017 1 commit
    • Johann's avatar
      remove vp9_full_sad_search · 109faffe
      Johann authored
      This code is unused in vp9. Only vp8 still contains references to
      vpx_sad_NxMx[3|8] and only for sizes 16x16, 16x8, 8x16, 8x8 and 4x4.
      Remove the remaining sizes and all the highbitdepth versions.
      Change-Id: If6a253977c8e0c04599e25cbeb45f71a94f563e8
  4. 27 Jun, 2017 1 commit
  5. 22 Jun, 2017 1 commit
    • Marco's avatar
      vp9: Add high source sad to content state. · d7515b11
      Marco authored
      Use it to limit NEWMV early exit in nonrd pickmode
      Small change in RTC metrics, has some improvement
      for high motion clips.
      Change-Id: I1d89fd955e1b3486d5fb07f4472eeeecd553f67f
  6. 12 May, 2017 1 commit
  7. 10 May, 2017 1 commit
    • Marco's avatar
      vp9: SVC: Add option to set downsampling filter type. · 4e23998f
      Marco authored
      Add option in SVC to set the filter type and phase for
      the frame level downsampling filters.
      For 3 spatial layers: set downsampling filter type to bilinear
      and set phase to 8, for lowest spatial layer.
      Change-Id: Id81f4b1ba93db19c1cd37b6a46d1281a2c61bc43
  8. 25 Apr, 2017 1 commit
    • Marco's avatar
      vp9; Reduce artifact in non-rd pickmode for lighting changes. · 92ec0674
      Marco authored
      Add a low-variance high-sumdiff to the superblock content state
      and use it to limit the mv and bias some decisions in non-rd pickmode.
      Only affects speed >= 6.
      Reduces artifact for lighting changes.
      Small/no difference in metrics on RTC set.
      Change-Id: Ic84b2379fe0ae3fa71ae826ee6bae3eaf551a25b
  9. 24 Apr, 2017 1 commit
    • Yunqing Wang's avatar
      Make the row based multi-threaded encoder deterministic · 10a497bd
      Yunqing Wang authored
      This patch followed allow_exhaustive_searches feature modification and
      continued to modify the encoder to achieve the determinism in the row
      based multi-threaded encoding. While row-mt = 1 and using multiple
      threads, the adaptive feature in encoder was disabled, which gave
      BDRate gain(at speed 1, -0.6% ~ -0.7%; at speed 2, -0.46% ~ -0.59%),
      but some encoder speed losses(7% ~ 10% at speed 1 and 3% ~ 6% at
      speed 2). These speed losses were acceptable considering the speed
      gains obtained from row-mt.
      Change-Id: I60d87a25346ebc487a864b57d559f560b7e398bb
  10. 21 Apr, 2017 1 commit
    • Yunqing Wang's avatar
      Make allow_exhaustive_searches feature no longer adaptive · bca45646
      Yunqing Wang authored
      A previous patch turned on allow_exhaustive_searches feature only for
      FC_GRAPHICS_ANIMATION content. This patch further modified the feature
      by removing the exhaustive search limit, and made it no longer adaptive.
      As a result, the 2 counts that recorded the number of motion searches
      were removed, which helped achieve the determinism in the row based
      multi-threading encoding. Tests showed that this patch didn't cause
      the encoder much slower.
      Used exhaustive_searches_thresh for this speed feature, and removed
      allow_exhaustive_searches. Also, refactored the speed feature code
      to follow the general speed feature setting style.
      Change-Id: Ib96b182c4c8dfff4c1ab91d2497cc42bb9e5a4aa
  11. 20 Apr, 2017 1 commit
  12. 18 Apr, 2017 1 commit
    • Marco's avatar
      vp9: Add phase to get averaging filter for 1:2 downsampling. · 348bdc01
      Marco authored
      The scaling filter with zero shift will give sub-sampling for
      2x downsampling. Allow for a phase shift to get an averaging filter.
      Usage is for source scaling in 1 pass SVC mode for 1:2 downscale.
      Reduces aliasing in downsampled image.
      Keep the phase to 0/off for now.
      Change-Id: Ic547ea0748d151b675f877527e656407fcf4d51e
  13. 06 Apr, 2017 1 commit
    • Yunqing Wang's avatar
      VP9 motion vector unit test · 1aa46abb
      Yunqing Wang authored
      To prevent the motion vector out of range bug, added a motion vector unit
      test in VP9. In the 4k video encoding, always forced to use extreme motion
      vectors and also encouraged to use INTER modes. In the decoding, checked if
      the motion vector was valid, and also checked the encoder/decoder mismatch.
      The tests showed that this unit test could reveal the issue we saw before.
      Change-Id: I0a880bd847dad8a13f7fd2012faf6868b02fa3b4
  14. 27 Mar, 2017 1 commit
    • Marco's avatar
      vp9: 1 pass: Move source sad computation into encodeframe loop. · 66c6b4d6
      Marco authored
      Refactor to split the 1 passs source sad computation into scene
      detection (currently used for VBR and screen-content mode), and
      superblock based source sad computation (used in non-rd CBR mode).
      This allows the source sad computation for CBR mode to be
      No change in compression.
      Change-Id: I112f2918613ccbd37c1771d852606d3af18c1388
  15. 22 Mar, 2017 1 commit
  16. 20 Mar, 2017 1 commit
    • Marco's avatar
      vp9: Use sb content measure to bias against golden. · 06c8713e
      Marco authored
      For each superblock, keep track of how far from current frame
      was the last significant content change, and use that (along
      with GF distance), to turnoff GF search in non-rd pickmode.
      Only enabled for speed >= 8.
      avgPNSR on RTC/RTC_derf down by ~0.9/1.2.
      Speedup on mac: ~3-5%.
      Speedup on arm: 3.6% for VGA and 4.4% for HD.
      Change-Id: Ic3f3d6a2af650aca6ba0064d2b1db8d48c035ac7
  17. 16 Mar, 2017 1 commit
  18. 27 Feb, 2017 1 commit
    • Vignesh Venkatasubramanian's avatar
      vp9: Rename new_mt to row_mt · 58816014
      Vignesh Venkatasubramanian authored
      new_mt is a very generic name that will get obsolete soon enough.
      Since this is exposed as a codec control, renaming it to row_mt to
      signify row level paralellism. Also renaming the ETHREAD_BIT_MATCH
      codec control to ROW_MT_BIT_EXACT.
      Change-Id: Ic7872d78bb3b12fb4cf92ba028ec8e08eb3a9558
  19. 22 Feb, 2017 1 commit
    • Marco's avatar
      vp9: Incorporate source sum_diff into non-rd partition thresholds. · 7f2daa74
      Marco authored
      Increase the variance partition thresholds for superblocks that
      have low sum-diff (from source analysis prior to encoding frame).
      Use it for now only for speed >= 7 or for denoising on.
      Small change on metrics for rtc set: less than ~0.1 avgPNSR decrease
      on RTC set, for both speed 7 and 8.
      Change-Id: I38325046ebd5f371f51d6e91233d68ff73561af1
  20. 15 Feb, 2017 1 commit
    • Ranjit Kumar Tulabandu's avatar
      Row based multi-threading of encoding stage · 71061e93
      Ranjit Kumar Tulabandu authored
      (Yunqing Wang)
      This patch implements the row-based multi-threading within tiles in
      the encoding pass, and substantially speeds up the multi-threaded
      encoder in VP9.
      Speed tests at speed 1 on STDHD(using 4 tiles) set show that the
      average speedups of the encoding pass(second pass in the 2-pass
      encoding) is 7% while using 2 threads, 16% while using 4 threads,
      85% while using 8 threads, and 116% while using 16 threads.
      Change-Id: I12e41dbc171951958af9e6d098efd6e2c82827de
  21. 13 Feb, 2017 1 commit
    • Yunqing Wang's avatar
      The bitstream bit match test in multi-threaded encoder · 318ca076
      Yunqing Wang authored
      While the new-mt mode is enabled(namely, allowing to use row-based
      multi-threading in encoder), several speed features that adaptively
      adjust encoding parameters during encoding would cause mismatch
      between single-thread encoded bitstream and multi-thread encoded
      bitstream. This patch provides a set_control API to disable these
      features, so that the bit match bitstream is obtained in the unit
      Change-Id: Ie9868bafdfe196296d1dd29e0dca517f6a9a4d60
  22. 02 Feb, 2017 1 commit
  23. 01 Feb, 2017 1 commit
  24. 24 Jan, 2017 1 commit
  25. 20 Jan, 2017 1 commit
  26. 18 Jan, 2017 1 commit
  27. 17 Jan, 2017 1 commit
    • Jerome Jiang's avatar
      vp9: Set low variance flag when partition is copied. · 0c65aed0
      Jerome Jiang authored
      Also set the flag to 1 when exit early choosing 64x64 block
      such that skipping new mv for golden works in these scenerios.
      Change the size of prev_segment_id to the number of superblocks
      to save memory.
      Borg test shows quality regression of 0.012% on average PSNR
      and 0.035% on SSIM.
      Change-Id: I5014224c8617d439d35c66ece3fed9ae30b31d23
  28. 11 Jan, 2017 1 commit
    • Marco's avatar
      vp9: Make the denoiser work with spatial SVC. · 7e3a82c3
      Marco authored
      If enabled denoiser will only denoise the top spatial layer for now.
      Added unittest for SVC with denoising.
      Change-Id: Ifa373771c4ecfa208615eb163cc38f1c22c6664b
  29. 06 Jan, 2017 1 commit
    • hui su's avatar
      Add support for VP9 level targeting · 337ad83e
      hui su authored
      Constraints on encoder config:
      -target_bandwidth is no larger than 80% of level bitrate limit
      -target_bandwidth * (1 + max_over_shoot_pct) is no larger than
      88% of level bitrate limit
      -min_gf_interval is no smaller than level limit
      -tile_columns is no larger than level limit
      Constraints on rate control:
      -current frame size plus previous three frames' size is no larger
      than the CPB level limit
      -current frame size is no larger than 50%/40%/20% of the CPB
      level limit if it's a key/alt-ref/other frame.
      Change-Id: I84d1a2d6d6e3c82bfd533b3309ce999cfaba2c8b
  30. 20 Dec, 2016 1 commit
    • Jerome Jiang's avatar
      vp9: Add feature to copy partition from the last frame. · 1d5ca84d
      Jerome Jiang authored
      Add feature to copy partition from the last frame.
      The copy is only done under certain conditions that SAD is below threshold.
      Feature is currently disabled, until threshold is tuned.
      Feature will be initially used for Speed 8 (ARM).
      Under extreme case of always copying partition for speed 8:
      Encode time is reduced by 5.4% on rtc_derf and 7.8% on rtc.
      Overall PSNR reduced by 2.1 on rtc_derf and 0.968 on rtc.
      Change-Id: I1bcab515af3088e4d60675758f72613c2d3dc7a5
  31. 25 Oct, 2016 1 commit
    • Yunqing Wang's avatar
      Change 2 motion search counts to be tile data · c192def8
      Yunqing Wang authored
      This patch modified the motion search counts used in:
      These 2 counts were originally added as thread data, and used to
      make decisions in motion search. The tile encoding order can be
      inconsistent while using different number of threads, which can
      cause bitstream mismatch. Here moved them to tile data to solve
      the issue.
      Change-Id: Iedc4477aef1746aa0a4f84d88a1156296fd3ba87
  32. 22 Oct, 2016 1 commit
    • Vignesh Venkatasubramanian's avatar
      vp9_bitstream: Encode tiles in parallel · 5deffa11
      Vignesh Venkatasubramanian authored
      Re-use the tile worker threads to pack the bitstream in parallel
      on a per-tile basis.  Restricting this to real-time only for now
      (further testing is needed to ensure this does not make 2-pass
      worse in any case).
      Change-Id: I8a80da7c5089b837d0df79a5c49d5e3022dfc8ec
  33. 19 Oct, 2016 1 commit
  34. 17 Oct, 2016 1 commit
    • Vignesh Venkatasubramanian's avatar
      vp9_bitstream: Encode tiles in parallel · 9e8efa5b
      Vignesh Venkatasubramanian authored
      Re-use the tile worker threads to pack the bitstream in parallel
      on a per-tile basis.  Restricting this to real-time only for now
      (further testing is needed to ensure this does not make 2-pass
      worse in any case).
      Change-Id: Ia2c982da56697756e12f02643f589189b3271d98
  35. 11 Oct, 2016 1 commit
    • Marco's avatar
      1 pass vbr: Allow for lookahead alt-ref in real-time mode. · 57c6bf29
      Marco authored
      For 1 pass vbr real-time mode:
      Allow for the usage of alt-ref frame when non-zero lag-in-frames is used.
      Use non-filtered alt-ref, and select usage based on fast scene/content
      analysis/detection within the lag of frames.
      Positive gains on ytlive set: overall avgPSNR ~3-4%.
      Several clips are up between 5-14%, a few clips are neutral/small change.
      Current speed decrease is about ~5-10%.
      Use the flag USE_ALTREF_FOR_ONE_PASS to enable this feature
      (off by default for now).
      Change-Id: I802d2bf3d44f9cf01f6d15c76be9c90192314769
  36. 25 Aug, 2016 1 commit
    • Yury Gitman's avatar
      Create interface for the ALT_REF_AQ class · 292d221f
      Yury Gitman authored
      Current commit is just an API template  for the rest of the code, and
      I will add inner logic later.
      Altref  frames  generate a  lot  of  bitrate  and  at the  same  time
      other  frames  refer to  them  a  lot, so  it  makes  sense to  apply
      special  compensation-based adaptive  quantization scheme  for altref
      frames. E.g.,  for blocks  that are  good predictors  for the  future
      apply rate-control  chosen quantizer  while for bad  predictors apply
      worse one.
      Change-Id: Iba3f8ec349470673b7249f6a125f6859336a47c8
  37. 24 Aug, 2016 1 commit
    • Yury Gitman's avatar
      Add --alt-ref-aq=<int> option · d7c20079
      Yury Gitman authored
      In the future this option will activate adaptive quantization special
      for altref frames. Encoder will  create the adaptive quantization map
      on the basis of lookahead buffers similarity which is the estimate of
      the future motion compensation performance.
      Change-Id: Ia0088b3babb0f9a4899c79d8d819947ba5a03df2
  38. 08 Aug, 2016 1 commit
  39. 05 Aug, 2016 1 commit
  40. 02 Aug, 2016 1 commit