1. 16 Nov, 2017 1 commit
    • paulwilkins's avatar
      Disable allow_partition_search_skip for speed 2. · 44473e7e
      paulwilkins authored
      When allow_partition_search_skip  is set the two pass code
      can optionally skip the partition search in the rd loop if the image
      appears static (based on selection of 0,0 motion).
      
      Unfortunately 0,0 motion does not necessarily mean that there are
      no meaningful changes or that motion or intra modes will not be selected
      in the second pass.
      
      Disabling "allow_partition_search_skip" may hurt the encode speed a little
      for a small number of clips but can have a big impact on compression.
      The most notable example of this in our test sets is "bridge_close_cif"
      where this change gives a gains of 18%, 12% and 16% in opsnr, ssim and
      psnr-hvs.
      
      Change-Id: I765e288b5c0cd82bce00a148e7653a21e9203024
      44473e7e
  2. 09 Nov, 2017 1 commit
    • Jerome Jiang's avatar
      vp9: SVC feature to use partition from lower resolution. · fdb054a0
      Jerome Jiang authored
      For SVC with 3 spatial layers:
      Add feature to copy/upscale partition from middle spatial layer
      to the upper/highest resolution, when superblock sad is not high.
      
      Enabled for speed >= 7 and only for non-reference frames.
      
      Speedup ~3-4%, small loss in avgPNSR/SSIM of ~1%.
      
      Change-Id: I7f0a2716c0fde28bade0f86159d11b7e31d6ab8d
      fdb054a0
  3. 08 Nov, 2017 1 commit
    • paulwilkins's avatar
      CVBR command line option. · 93e83fd7
      paulwilkins authored
      Added command line control of Corpus VBR.
      
      The new corpus vbr mode is a variant of standard
      VBR (end-usage=0) where the complexity distribution
      mid point is passed in rather than calculated for a specific
      clip or chunk.
      
      The new variant is enabled by setting a new command line
      parameter --corpus-complexity to a zero value. Omitting
      this parameter or setting it to 0 will cause the codec to use
      standard vbr mode.
      
      The correct value for a given corpus needs to be derived
      experimentally using a training set such that the average
      rate for the corpus is close to the target value.
      
      For example our using our low res test set with upper and lower
      vbr limits of 50%-150% and a corpus complexity value of 650
      gives a similar average data rate across the set to using standard
      vbr. However, with the corpus mode easier clips will be allocated
      fewer bits and harder clips more bits rather than having the same
      rate target for all.
      
      Change-Id: I03f0fc8c6fb0ee32dc03720fea6a3f1949118589
      93e83fd7
  4. 03 Nov, 2017 1 commit
    • Marco's avatar
      Compound prediction mode for nonrd pickmode. · eb7d431c
      Marco authored
      Allow for compound prediction mode in nonrd_pickmode for ZEROMV.
      For real-time encoding, 1 pass with non-zero lag-in-frames.
      
      Added speed feature to control the feature.
      Enabled for speed >=6 for now, under VBR mode.
      
      avgPSNR/SSIM metrics positive on ytlive set, for speed 6:
      some clips up by ~3-5%, some clips neutral gain, average gain
      across clips is ~1%.
      
      Small/negligible decrease in speed.
      
      Change-Id: I7a60c7596e69b9a928410c5ee2f9141eecd8613d
      eb7d431c
  5. 23 Oct, 2017 1 commit
    • Marco's avatar
      vp9-svc: Allow for adapt_rd_thresh with row-mt. · 0738d901
      Marco authored
      Set adaptive_row_thresh_mt = 1 at speed >= 7,
      for svc when multi-threading is used with row-mt.
      This allow the adaptive_rd_thresh feature to be used
      in the nonrd-pickmode.
      
      ~1-2% speedup for SVC encoding with small quality
      loss (< 0.6%) on RTC set.
      
      Change-Id: Iab9878dff117bccdaef3e4d0645165db9808cdfc
      0738d901
  6. 12 Oct, 2017 1 commit
  7. 10 Oct, 2017 1 commit
    • paulwilkins's avatar
      Corpus Wide VBR test implementation. · 741bd6df
      paulwilkins authored
      This patch makes further changes to support an experimental
      corpus wide VBR mode that uses a corpus complexity
      number as the midpoint of the distribution used to allocate bits
      within a clip, rather than some average error score derived from the
      clip itself.
      
      At the moment the midpoint number is hard wired for testing and
      the mode is enabled or disabled through a #ifdef.  Ultimately this
      would need to be controlled by command line parameters.
      
      Change-Id: I9383b76ac9fc646eb35a5d2c5b7d8bc645bfa873
      741bd6df
  8. 06 Oct, 2017 2 commits
    • Marco Paniconi's avatar
      Revert "Speed >=5 real-time: add TM intra mode for high_source_sad." · bcbc6ed8
      Marco Paniconi authored
      This reverts commit 9311ef18.
      
      Reason for revert:
      Notice small regression in some clips.
      Will revisit in another change.
      
      Original change's description:
      > Speed >=5 real-time: add TM intra mode for high_source_sad.
      > 
      > Small/neutral change in metrics or speed for ytlive.
      > Some improvement in quality on frames with big content change.
      > 
      > Change-Id: Ib3b0703a5f28ea6710e90324436e27598ab7384d
      
      TBR=marpan@google.com,builds@webmproject.org,jianj@google.com
      
      Change-Id: I9d8ec5195bb05ddf329d325699355185affb9b13
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      bcbc6ed8
    • Marco's avatar
      Speed >=5 real-time: add TM intra mode for high_source_sad. · 9311ef18
      Marco authored
      Small/neutral change in metrics or speed for ytlive.
      Some improvement in quality on frames with big content change.
      
      Change-Id: Ib3b0703a5f28ea6710e90324436e27598ab7384d
      9311ef18
  9. 05 Oct, 2017 1 commit
    • Marco's avatar
      Adjust threshold for adapt_partition for speed 6. · 18262a85
      Marco authored
      Lower SAD threshold to select non_rd pickmode partition
      at superblock level more often.
      Small gain in metrics, small/negligible decrease in speed.
      
      Change-Id: I0f728236b91a604e4ca7e02039adc54d5985c4dc
      18262a85
  10. 04 Oct, 2017 1 commit
  11. 03 Oct, 2017 1 commit
    • Marco's avatar
      Use adapt_partition for ARF in 1 pass. · c8678fb7
      Marco authored
      For speed 6 real-time mode: use adapt_partition
      on ARF frame instead of REFERENCE_PARTITION (which is slower).
      This requires enabling compute_source_sad_onepass for no-show_frames.
      
      Speedup of ~3-5% on some clips that heavily use ARF,
      small loss (~0.2%) in quality on ytlive set.
      
      Change-Id: Ib50acc97df06458244a6ac55d2bd882c30012536
      c8678fb7
  12. 29 Sep, 2017 2 commits
    • Marco's avatar
      Fix partition selection in speed features for arf overlay frame. · c8f6e7b9
      Marco authored
      For real-time mode. Move the switch to fixed partition
      for is_src_frame_alt_ref so all speeds may use it
      if use_altref_onepass is set.
      
      Improves metrics by ~2% for ytlive set at speed 4
      (where use_altref_onepass is currently used).
      
      Change-Id: I033240386598c9dbd0364da89ccbcca64bc663ee
      c8f6e7b9
    • Marco's avatar
      Enable use_altref_onepass for speed 4 real-time mode. · f2c3d0a7
      Marco authored
      Used for VBR mode with lag-in-frames > 0.
      On ytlive set at speed 4: ~3% average gain.
      
      Change-Id: I45dad1700bf8be9d8f177815dc062774f6f2f0de
      f2c3d0a7
  13. 28 Sep, 2017 1 commit
    • Marco's avatar
      vp9: Modification to adapt the ARF usage for 1 pass vbr · 03e8f133
      Marco authored
      Add stats for past ARF usage, and use it to disable
      ARF usage based on some conditions.
      
      Overall improvement on ytlive set, reduces the regression
      on the problem clips for this feature.
      
      Only affects when sf->use_altref_onepass is enabled
      (currently off by default).
      
      Change-Id: I66267f227ea132dc86acb730e9882f85bead2cdb
      03e8f133
  14. 26 Sep, 2017 1 commit
  15. 19 Sep, 2017 2 commits
    • Marco's avatar
      vp9: Modify simple_block_yrd condition for SVC · aaa6cdcc
      Marco authored
      Modify simple_block_yrd condition in nonrd_pickmode for SVC:
      allow it to be used also on base temporal_layer, only when
      spatial_layer > 1 and block size < 32x32.
      
      Speed up of about ~2% for 3 layer SVC, with little/negligible
      loss in quality.
      
      Change-Id: I7734bdae51cf51f22b96f6b2b27da20ea1d84344
      aaa6cdcc
    • Marco's avatar
      vp9: Adjustments for ARF usage in 1 pass vbr. · ebb015a5
      Marco authored
      Only when USE_ALT_REF_ONE_PASS is enabled (off by default).
      Force fixed partition to 64x64 when is_src_alt_ref_frame is true,
      and don't force early exit for some modes in nonrd_pickmode
      for ARF noshow frames.
      
      Small gain ~0.2% on ytlive metrics for speed 6.
      Neutral speed difference.
      
      Change-Id: I27eb6622d0453c09a06ccdc3b16368762474d11d
      ebb015a5
  16. 29 Aug, 2017 1 commit
  17. 28 Aug, 2017 1 commit
  18. 25 Aug, 2017 2 commits
    • 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
    • Marco's avatar
      vp9: SVC: Modify mv search condition in speed features. · a74593b3
      Marco authored
      For SVC at speed >= 7: only use the improved mv search
      on base spatial layer, if top layer resolution is above 640x360.
      
      ~2.3% speedup
      Small/negligible loss in avgPSNR metrics on rtc set.
      
      Change-Id: Iaef75a57ebf1c248931bc1aa28d20b7fecac1851
      a74593b3
  19. 02 Aug, 2017 1 commit
    • Yunqing Wang's avatar
      Force the bit exactness in the first pass · bfd0f41f
      Yunqing Wang authored
      Originally, for the purpose of keeping a fast first pass, the first-pass
      stats between row_mt_mode = 0 and row_mt_mode = 1 are not bit exact, but
      that difference is very small that doesn't cause a mismatch between the
      final bitstreams. However, if the encoder changes, this minor difference
      may cause a mismatch. Thus, this patch always forces the first pass to
      be bit exact.
      
      BUG=webm:1453
      
      Change-Id: I2b67cf529dee81f660f9d9e7fe9a60ea3c7b12b8
      bfd0f41f
  20. 31 Jul, 2017 1 commit
  21. 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
  22. 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.
      
      BUG=webm:1425
      
      Change-Id: If6a253977c8e0c04599e25cbeb45f71a94f563e8
      109faffe
  23. 28 Jun, 2017 1 commit
    • Marco's avatar
      vp9: Speed >= 8: Remove logic on reducing subpel. · 88d11f47
      Marco authored
      Existing logic was only affecting resolutions above 720p.
      Needs more testing for reducing subpel for speed >= 8.
      
      No change on RTC metrics.
      
      Change-Id: I2f4bf9f25891614aafa9a86aa5a5063a3ccfce4d
      88d11f47
  24. 19 Jun, 2017 2 commits
    • Marco's avatar
      vp9: Speed >= 8: Adjust resolution threshold for subpel. · ff7fb4b2
      Marco authored
      Get some quality gain on RTC metrics (~7%), with
      ~5-8% speed slowdown.
      
      Change-Id: I0d02942a77074424ee0326b6e110ddff09f2df5e
      ff7fb4b2
    • Marco's avatar
      vp9: SVC: Rework the usage of base_mv for SVC. · 112cd955
      Marco authored
      Set the base_mv_aggressive for temporal enhancement layers (TL > 0).
      Under the aggressive mode, skip the NEWMV depending on the
      SSE of the base_mv. Also reduce the subpel motion to 1/2 under
      aggressive mode if base_mv is good.
      
      Speedup ~3% with small/negligible loss in quality on RTC.
      Affects speed >= 6.
      
      Change-Id: I89341b279cad6da2a04b76d5e726016191dacdb8
      112cd955
  25. 10 Jun, 2017 1 commit
    • Marco's avatar
      vp9: SVC: Use prune_evenemore only for non_reference. · e540ca71
      Marco authored
      Set subpel prune_evenmore only for non_reference frames,
      instead of all TL > 0 frames. Gain some quality back at
      cost of small speed loss (~1-2%).
      
      Change only effects SVC encoding at speed >= 7.
      
      Change-Id: I5b9f51e51dccfd7050521a66996176b0415ca3f9
      e540ca71
  26. 07 Jun, 2017 1 commit
    • Marco's avatar
      vp9: SVC: Enable simple_block_yrd for temporal layers. · 14d47180
      Marco authored
      Enable simple_block_yrd for temporal enhancement layers (TL > 0).
      And remove block size condiiton for SVC mode.
      Only affects speed >= 7 SVC.
      
      Speedup ~3-4%.
      avgPSNR regression on RTC for (3 spatial, 3 temporal) layers: ~1%.
      
      Change-Id: Iff4fc191623b71c69cd373e7c0823385e7ac67ed
      14d47180
  27. 06 Jun, 2017 1 commit
  28. 02 Jun, 2017 1 commit
    • Marco's avatar
      vp9: SVC: Force subpel search off under certain conditions. · e30781ff
      Marco authored
      For SVC 1 pass non-rd mode:
      Force subpel seach off for SVC for non-reference frames
      under motion threshold.
      
      Add flag to svc context to indicate if the frame is not used
      as a reference.
      
      Little/no quaity loss, ~2% speedup.
      
      Change-Id: Ic433c44b514d19d08b28f80ff05231dc943b28e9
      e30781ff
  29. 01 Jun, 2017 1 commit
    • Marco's avatar
      vp9: Speed >8: Set subpel_search_method for low motion. · 8c6fa5c5
      Marco authored
      Speed >=8: for resolutions above CIF, and for low motion content,
      set subpel_search_method to SUBPEL_TREE_PRUNED_EVENMORE.
      
      Small speed gain (~2%) on vga clips,
      RTC metrics up by ~2-3% on average.
      
      Change-Id: Ie26ba0264589652f92dfe74308740debf94cf0cc
      8c6fa5c5
  30. 25 May, 2017 1 commit
    • Marco's avatar
      vp9: SVC: Enable copy partition for SVC speed >= 7. · 747cf7a5
      Marco authored
      Adjust the max_copied_frame setting for temporal layers.
      Keep the same setting for non-SVC at speed 8.
      This change also enables copy_partiton for non-SVC at speed 7,
      but with smaller value of max_copied_frame (=2).
      
      ~2% speedup for SVC speed 7, 3 layers, with little/no quality loss.
      
      Change-Id: Ic65ac9aad764ec65a35770d263424b2393ec6780
      747cf7a5
  31. 22 May, 2017 1 commit
  32. 18 May, 2017 1 commit
    • Marco's avatar
      vp9: Make copy partition work for SVC and dynamic resize. · 2ba4729e
      Marco authored
      Only affects speed 8.
      
      Make changes to copy partition to fix a bug in setting microblock
      offset. Avg PSNR shows 0.02% gain on rtc_derf and 0.08% loss on rtc.
      
      Change-Id: I61c3e5914dde645331344388e7437e5638acd4f3
      2ba4729e
  33. 12 May, 2017 1 commit
  34. 28 Apr, 2017 1 commit