1. 12 Oct, 2017 1 commit
  2. 26 Sep, 2017 1 commit
  3. 25 Aug, 2017 1 commit
    • Marco's avatar
      vp9: Speed 6 adapt_partition for live/vbr usage. · a0de2692
      Marco authored
      Enable adapt_partition for vbr mode for speed 6.
      This allows the usage of the pickmode-based partition
      (used in speed 5), but only selectively for superblocks
      with high source sad, otherwise the faster variance based
      partition scheme is used.
      
      For speed 6 on ytlive set: avgPSNR/SSIM metrics up by ~0.6%,
      several clips up by ~1.5%. Small/negligible decrease in speed.
      
      Change-Id: I12f3efef6b3e059391de330fdbe5a44c2587f1f8
      a0de2692
  4. 31 Jul, 2017 1 commit
  5. 29 Jul, 2017 2 commits
    • James Zern's avatar
      Revert "vp9: Speed feature to adapt partition based on source_sad." · c9266b85
      James Zern authored
      This reverts commit 064fc570.
      
      This causes an assertion failure in vp9_mcomp.c when running
      gtest_filter=VP9/MotionVectorTestLarge.OverallTest/41:
      `mv->col >= -((1 << (11 + 1 + 2)) - 1) && mv->col < ((1 << (11 + 1 + 2))
      - 1)'
      
      Change-Id: I449e777bf18b661cb3f1d82253610c55c51687f6
      c9266b85
    • Marco's avatar
      vp9: Speed feature to adapt partition based on source_sad. · 064fc570
      Marco authored
      Move the source_sad feature to speed 6 (from speed 7), and
      add speed feature to switch from the variance-based partition
      to reference_partition (which uses nonrd-pickmode for bsize selection)
      if source_sad is high.
      
      Currently used only for speed 6 for resoln <= 360p.
      About 4-5% improvement on 360p in RTC set.
      Some speed slowdown, but still ~30% faster than speed 5.
      
      Change-Id: Ib0330ee5fe9fdd2608aed91359a2a339d967491c
      064fc570
  6. 28 Apr, 2017 1 commit
  7. 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
      bca45646
  8. 22 Mar, 2017 1 commit
  9. 13 Mar, 2017 1 commit
    • Yunqing Wang's avatar
      Apply machine learning-based early termination in VP9 partition search · 67010143
      Yunqing Wang authored
      This patch was based on Yang Xian's intern project code. Further modifications
      were done.
      1. Moved machine-learning related parameters into the context structure.
      2. Corrected the calculation of sum_eobs.
      3. Removed unused parameters and calculations.
      4. Made it work with multiple tiles.
      5. Added a speed feature for the machine-learning based partition search
      early termination.
      6. Re-organized the code.
      
      The patch was rebased to the top-of-tree.
      
      Borg test BDRATE result:
      4k set:     PSNR: +0.144%; SSIM: +0.043%;
      hdres set:  PSNR: +0.149%; SSIM: +0.269%;
      midres set: PSNR: +0.127%; SSIM: +0.257%;
      
      Average speed gain result:
      4k clips: 22%;
      hd clips: 23%;
      midres clips: 15%.
      
      Change-Id: I0220e93a8277e6a7ea4b2c34b605966e3b1584ac
      67010143
  10. 08 Mar, 2017 1 commit
    • Yunqing Wang's avatar
      Make the partition search early termination feature to be frame size dependent · 099e9bf1
      Yunqing Wang authored
      The 2 thresholds(i.e. partition_search_breakout_dist_thr and
      partition_search_breakout_rate_thr) are used as the partition search
      early termination speed feature. This refactoring patch made this
      feature to be frame size dependent consistently throughout the code.
      
      Change-Id: Idaa0bd8400badaa0f8e2091e3f41ed2544e71be9
      099e9bf1
  11. 22 Feb, 2017 1 commit
  12. 13 Jan, 2017 1 commit
  13. 09 Jan, 2017 1 commit
  14. 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
      1d5ca84d
  15. 22 Nov, 2016 1 commit
  16. 15 Nov, 2016 1 commit
    • Jerome Jiang's avatar
      vp9: Speed 8: More aggresive golden skip for low res. · 360217a2
      Jerome Jiang authored
      Add a new, more aggresive short circuit: short_circuit_low_temp_var = 3 to skip
      golden of any mode when variance is lower than threshold for low res.
      This change only affects speed = 8, low resolution.
      
      Metrics for avgPSNR/SSIM on rtc_derf (low resolution) show loss of
      0.27/0.31%.
      On Nexus 6, the encoding time is reduced by ~2.3% on average across all
      low-res clips.
      
      Visually little change on rtc_derf clips.
      
      Change-Id: Ia8f7366fc2d49181a96733a380b4dbd7390246ec
      360217a2
  17. 14 Nov, 2016 1 commit
    • Jingning Han's avatar
      Enable asymptotic closed-loop encoding decision · 44f8ee72
      Jingning Han authored
      This commit enables asymptotic closed-loop encoding decision for
      the key frame and alternate reference frame. It follows the regular
      rate control scheme, but leaves out additional iteration on the
      updated frame level probability model. It is enabled for speed 0.
      
      The compression performance is improved:
      
      lowres 0.2%
      midres 0.35%
      hdres  0.4%
      
      Change-Id: I905ffa057c9a1ef2e90ef87c9723a6cf7dbe67cb
      44f8ee72
  18. 31 Aug, 2016 1 commit
    • paulwilkins's avatar
      Modified resize loop constraints. · 6fc07a21
      paulwilkins authored
      Using a tighter resize constraint on undershoot seems to help
      results (especially SSIM) as significant undershoot on a frame
      seems to have more of a damaging impact than overshoot.
      
      This patch has been tuned so that in local testing using the
      derf set it is encode speed neutral for speed  setting 2.
      
      Average quality result for speed 2 (psnr,ssim) were  as follows:-
      
       lowres  0.039,  0.453
       midres  0.249, 0.853
       hdres  0.159, 0.659
       NetFlix -0.241, 0.360
      
      Change-Id: Ie8d3a0d7d6f7ea89d9965d1821be17f8bda85062
      6fc07a21
  19. 26 Aug, 2016 1 commit
    • paulwilkins's avatar
      Add ALLOW_RECODE_FIRST speed mode. · dc42f343
      paulwilkins authored
      This patch is to address concerns that changes to allow
      recodes on the first frame in each ARF group do not give a
      good enough speed quality trade off for speed 2. Though the
      average impact  on encode speed is 1-2%, for some hard clips
      it is > 5% rise.  For speed 1 this is less an issue and for Speed 0
      the previous patch actually  improves speed.
      
      Change-Id: Ie1bcefdbfdf846d3f4428590173f621465dffe3a
      dc42f343
  20. 25 Aug, 2016 1 commit
    • paulwilkins's avatar
      Adjust coefficient optimization and tx_domain rd speed features. · 635ae8bd
      paulwilkins authored
      Previously Tx domain rd was used in all cases above speed 0.
      Coefficient optimization was only enabled for best and speed 0.
      
      This patch selectively sets these features at other speed settings
      based on block complexity.
      
      For the Netflix and HD sets in particular the quality gains are
      large compared to the speed hit. At speed 1 the average psnr
      gain in the NF set  is > 2.5% with one clip coming in at 18%
      and some points almost 30%.  Average gains for the lower
      resolution test sets are around 1%.
      
      The gains are biggest at low Q so some further optimization
      may be possible.
      
      Change-Id: I340376c7b2a78e5389a34b7ebdc41072808d0576
      635ae8bd
  21. 18 Aug, 2016 1 commit
    • JackyChen's avatar
      vp9 svc: SVC encoder speed up. · 8be7e572
      JackyChen authored
      Bias towards base_mv and skip 1/4 pixel motion search when using base mv.
      2~3% speed up for 2 spatial layers, 3~5% speed up for 3 spatial layers.
      PSNR loss:
      (2 layers) 0.07dB for gips_stationary, 0.04dB for gips_motion;
      (3 layers) 0.07dB for gips_stationary, 0.06dB for gips_motion.
      
      Change-Id: I773acbda080c301cabe8cd259f842bcc5b8bc999
      8be7e572
  22. 17 Aug, 2016 1 commit
    • Marco's avatar
      vp9 non-rd pickmode: Add limit on newmv-last and golden bias. · 7eb7d6b2
      Marco authored
      Add option, for newmv-last, to limit the rd-threshold update for early exit,
      under a source varianace condition.
      This can improve visual quality in low texture moving areas,
      like forehead/faces.
      
      Also add bias against golden to improve the speed/fps,
      will little/negligible loss in quality.
      
      Only affects CBR mode, non-svc, non-screen-content.
      
      Change-Id: I3a5229eee860c71499a6fd464c450b167b07534d
      7eb7d6b2
  23. 02 Aug, 2016 1 commit
  24. 07 Jul, 2016 2 commits
    • Jingning Han's avatar
      Enable uniform quantization with trellis optimization in speed 0 · 62aa642d
      Jingning Han authored
      This commit allows the inter prediction residual to use uniform
      quantization followed by trellis coefficient optimization in
      speed 0. It improves the coding performance by
      
      lowres 0.79%
      midres 1.07%
      hdres  1.44%
      
      Change-Id: I46ef8cfe042a4ccc7a0055515012cd6cbf5c9619
      62aa642d
    • Jingning Han's avatar
      Support measure distortion in the pixel domain · e357b9ef
      Jingning Han authored
      Use pixel domain distortion metric in speed 0. This improves the
      compression performance by 0.3% for both low and high resolution
      test sets.
      
      Change-Id: I5b5b7115960de73f0b5e5d0c69db305e490e6f1d
      e357b9ef
  25. 13 Jun, 2016 1 commit
    • JackyChen's avatar
      vp9: Encoding cycle reduction for speed 8. · f9c05872
      JackyChen authored
      1. Skip golden non-zeromv and newmv-last for bsize >= 16x16 if the
      temporal variance obtained from choose_partitioning is very low.
      2. Skip horz and vert INTRA mode for speed 8.
      
      This change works best on the clips with little noise and with some
      motion (e.g. gips_motion which has > 5% speed up). PSNR drop is 1.78%
      on rtc test set, no obvious visual quality regression found.
      
      Change-Id: Ib43b5b20e67809d03c5a6890818ddff59e1fc94a
      f9c05872
  26. 01 Jun, 2016 1 commit
    • jackychen's avatar
      vp9: Skip some modes when variance is low for big blocks, for 1 pass real-time. · bacc67f4
      jackychen authored
      Skip intra-mode and some inter-modes (newmv, nearmv, nearestmv) for
      golden frame if the variance got from choose_partitioning is very low.
      Only for 1 pass real-time CBR mode and bsize >= 32x32, it has ~2.5%
      speed up with less than 0.1% PSNR drop for rtc test set. Don't see
      visual regression.
      
      Change-Id: I70efbc95a1007231ae36f02c5b2fbf6cd35077ad
      bacc67f4
  27. 15 Mar, 2016 1 commit
  28. 22 Jan, 2016 1 commit
  29. 17 Nov, 2015 1 commit
    • paulwilkins's avatar
      Changes to best quality settings. · 8ba98516
      paulwilkins authored
      Small changes to the best quality default speed trade off.
      Some speedup settings are worth while even for best quality as they
      have only a very small impact on quality but a significant impact on
      encode time.
      
      These changes give as much as a further 50-60% increase in encode
      speed for my test animations clip with minimal impact on quality.
      
      For this sequence these changes improve the best quality encode  speed
      to about the same level as good quality speed 0 in Q3 2015 whilst
      retaining the large quality gain of over 1 db
      
      For many natural videos though the quality difference from good 0
      to best is much smaller.
      
      Change-Id: I28b3840009d77e129817a78a7c41e29cb03e1132
      8ba98516
  30. 13 Nov, 2015 1 commit
    • paulwilkins's avatar
      Changes to exhaustive motion search. · 0149fb3d
      paulwilkins authored
      This change alters the nature and use of exhaustive motion search.
      
      Firstly any exhaustive search is preceded by a normal step search.
      The exhaustive search is only carried out if the distortion resulting
      from the step search is above a threshold value.
      
      Secondly the simple +/- 64 exhaustive search is replaced by a
      multi stage mesh based search where each stage has a range
      and step/interval size. Subsequent stages use the best position from
      the previous stage as the center of the search but use a reduced range
      and interval size.
      
      For example:
        stage 1: Range +/- 64 interval 4
        stage 2: Range +/- 32 interval 2
        stage 3: Range +/- 15 interval 1
      
      This process, especially when it follows on from a normal step
      search, has shown itself to be almost as effective as a full range
      exhaustive search with step 1 but greatly lowers the computational
      complexity such that it can be used in some cases for speeds 0-2.
      
      This patch also removes a double exhaustive search for sub 8x8 blocks
      which also contained  a bug (the two searches used different distortion
      metrics).
      
      For best quality in my test animation sequence this patch has almost
      no impact on quality but improves encode speed by more than 5X.
      
      Restricted use in good quality speeds 0-2 yields significant quality gains
      on the animation test of 0.2 - 0.5 db with only a small impact on encode
      speed. On most clips though the quality gain and speed impact are small.
      
      Change-Id: Id22967a840e996e1db273f6ac4ff03f4f52d49aa
      0149fb3d
  31. 13 Oct, 2015 1 commit
    • paulwilkins's avatar
      Changes to partition breakout rules. · cdc35998
      paulwilkins authored
      Changes to the breakout behavior for partition selection.
      The biggest impact is on speed 0 where encode speed in
      some cases more than doubles with typically less than 1%
      impact on quality.
      
      Speed 0 encode speed impact examples
      Animation test clip: +128%
      Park Joy:  +59%
      Old town Cross: + 109%
      
      Change-Id: I222720657e56cede1b2a5539096f788ffb2df3a1
      cdc35998
  32. 30 Jul, 2015 1 commit
  33. 04 May, 2015 1 commit
    • Marco's avatar
      Allow for H and V intra modes for non-rd mode. · b9a72d3c
      Marco authored
      For non-rd mode (speed >=5): use mask based on prediction block size, and
      (for non-screen content mode) allow for checking horiz and vert intra modes
      for blocks sizes < 16x16.
      
      Avg psnr/ssim metrics go up by about ~0.2%.
      
      Only allowing H/V intra on block sizes below 16x16 for now, to keep
      encoding time increase very small, and also when allowing H/V on 16x16 blocks,
      metrics went down on a few clips which need to be further examined.
      
      Change-Id: I8ae0bc8cb2a964f9709612c76c5661acaab1381e
      b9a72d3c
  34. 01 May, 2015 2 commits
    • paulwilkins's avatar
      Image size restriction to rd auto partition search. · 4a7dcf8e
      paulwilkins authored
      Impose a limit on the rd auto partition search based on
      the image format. Smaller formats require that the search
      includes includes a smaller minimum block size.
      
      This change is intended to mitigate the visual impact of
      ringing in some problem clips, for smaller image formats.
      
      Change-Id: Ie039e5f599ee079bbef5d272f3e40e2e27d8f97b
      4a7dcf8e
    • paulwilkins's avatar
      Remove CONSTRAIN_NEIGHBORING_MIN_MAX. · 287b0c6d
      paulwilkins authored
      Remove one of the auto partition size cases.
      This case can behaves badly in some types of animated content
      and was only used for the rd encode path. A subsequent patch
      will add additional checks to help further improve visual quality.
      
      Change-Id: I0ebd8da3d45ab8501afa45d7959ced8c2d60ee4e
      287b0c6d
  35. 10 Feb, 2015 1 commit
    • Yaowu Xu's avatar
      Move computation up to frame level · ee5d7999
      Yaowu Xu authored
      This is to avoid redo the same calculation repeatly, and also allow
      easier adjustments for further experiments.
      
      This commit shall have no effect on quality/compression.
      
      Change-Id: I4460acf5c808ff5518da18d21e002c5da58af857
      ee5d7999
  36. 23 Jan, 2015 1 commit
  37. 03 Dec, 2014 1 commit