1. 14 Dec, 2015 1 commit
  2. 04 Dec, 2015 2 commits
    • Marco's avatar
      Adjust variance threshold based on source noise level. · d5b3f29f
      Marco authored
      For non-rd variance partition: Adjust variance threhsold based
      on noise level estimate. This change allows the adjustment to be
      updated more frequently.
      
      Change-Id: Ie2abf63bf3f1ee54d0bc4ff497298801fdb92b0d
      d5b3f29f
    • Marco's avatar
      Non-rd partition: Use force split on 16x16 for low resolutions. · 6490fc71
      Marco authored
      For low resolutions, whem 4x4downsample is used for variance,
      use the same force split (that is used for 8x8downsample) for 16x16 blocks.
      
      No change in metrics. Small improvement visually.
      
      Change-Id: I915b9895902d0b9a41e75d37fee1bf3714d2366d
      6490fc71
  3. 01 Dec, 2015 1 commit
    • Marco's avatar
      Condition use of minmax in variance partition on speed setting. · f78b7dae
      Marco authored
      For non-rd variance partition: only allow minmax computation
      (which currently has no arm-neon optimization) for speeds < 8.
      
      Performance loss is small: On RTC set with speed 8, few clips lose ~2/3%,
      average loss is < 1%.
      
      Change-Id: Ia9414f4d0b77dc83c3e73ca8de5d903f64b425ce
      f78b7dae
  4. 25 Nov, 2015 2 commits
  5. 13 Nov, 2015 2 commits
    • 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
    • Marco's avatar
      Adjust variance threshold for 16x16 split at low resolutions. · 419da5c7
      Marco authored
      Change-Id: I635e37f81237e9703d7d9a11ed76a043f4ec6eb0
      419da5c7
  6. 12 Nov, 2015 1 commit
  7. 10 Nov, 2015 1 commit
  8. 02 Nov, 2015 1 commit
    • Marco's avatar
      Move noise level estimate outside denoiser. · c7da053d
      Marco authored
      Source noise level estimate is also useful for
      setting variance encoder parameters (variance thresholds,
      qp-delta, mode selection, etc), so allow it to be used also
      if denoising is not on.
      
      Change-Id: I4fe23d47607b4e17a35287057f489c29114beed1
      c7da053d
  9. 27 Oct, 2015 1 commit
    • Marco's avatar
      Adjustments to vp9-denoising. · 8a2fc545
      Marco authored
      Adjust variance threshold, delta-qp, and intra penalty cost,
      based on estimated noise level in source.
      
      Replace denoising_on with a level value=L/M/H.
      
      Change-Id: I0c017dae75a5d897367d2c42dec26f2f37e447c1
      8a2fc545
  10. 16 Oct, 2015 1 commit
  11. 15 Oct, 2015 1 commit
  12. 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
  13. 02 Oct, 2015 1 commit
    • Marco's avatar
      Fix to denoiser with dynamic resize. · 86ede509
      Marco authored
      Temporary fix to denoiser when dynamic resizing is on.
       -Reallocate denoiser buffers on resized frame.
       -Force golden update on resized frame.
       -Don't denoise resized frame, and copy source into denoised buffers.
      
      Change-Id: Ife7638173b76a1c49eac7da4f2a30c9c1f4e2000
      86ede509
  14. 25 Sep, 2015 1 commit
    • Marco's avatar
      Limit cyclic refresh on steady background blocks. · 3f7656cc
      Marco authored
      Use the existing QP condition on limiting cyclic refresh, and add
      addiitonal condition that block has been encoded with zero/small motion
      x frames in row (where x is at least several times the refresh period).
      Additional condition only affect non-screen content mode.
      
      This helps to improve visual stability for noisy input, where on steady
      background areas the application of delta_qp may lead to encoding the noise.
      
      Also added a change to use the true skip (after encoding) to update the
      last QP.
      
      Change-Id: I234a1128d017d284cf767fdb58ef6c59d809f679
      3f7656cc
  15. 31 Aug, 2015 1 commit
  16. 27 Aug, 2015 1 commit
  17. 17 Aug, 2015 1 commit
    • Marco's avatar
      Fix to non-rd variance partition selection. · e1880044
      Marco authored
      Only test for using golden as reference for variance partition
      selection if it is used as a reference for that frame.
      
      For temporal layers, golden may not be a reference on a given frame,
      even though it was for some previous frame. If it is not a reference
      for current frame, don't check/use it for partition selection.
      
      Change-Id: I6b0f2bd36aebbb5903077c9a0a66d80f1de9a7b1
      e1880044
  18. 12 Aug, 2015 2 commits
  19. 10 Aug, 2015 1 commit
  20. 05 Aug, 2015 1 commit
    • Marco's avatar
      Bugfix for svc. · f6255dbb
      Marco authored
      Condition usage of rc.frames_since_golden to non-svc mode.
      
      rc.frames_since_golden, which is used in non-svc mode to add second reference,
      was causing, under certain condiiton, the turning off of golden reference
      for svc case.
      
      Change-Id: Icec644d235d0471e56d8ff73d6c37278bd6ecd3b
      f6255dbb
  21. 31 Jul, 2015 1 commit
    • Yunqing Wang's avatar
      Remove tx cache and speed up tx size selection · 3b2e73b9
      Yunqing Wang authored
      1. The RD scores obtained during the tx size selection were stored in the
      tx cache, and used to help make the tx decision for the following frames.
      This wasn't used anymore in VP9 encoder. Recovered the related decision
      making code from 1.5+ years ago, and borg tests didn't show any quality
      gain. This patch removed it to lower the complexity.
      
      2. An optimization was done after the above refactoring. If the tx_mode
      is not TX_MODE_SELECT, we only need to test the chosen tx size instead
      of all posible tx sizes. This gave a 1.5% average speed gain at speed 2,
      and a 1% average speed gain at speed 3.
      
      Change-Id: Id8cd650e066a8cef33829d8c15388a8138adc78c
      3b2e73b9
  22. 28 Jul, 2015 1 commit
  23. 27 Jul, 2015 1 commit
    • Yunqing Wang's avatar
      Remove tx_select_threshes · b2446fb6
      Yunqing Wang authored
      Removed unused tx_select_threshes and tx_select_diff.
      
      Change-Id: I5e9e7ad170056efe14b5f071e94d0c5a36e4a34c
      b2446fb6
  24. 09 Jul, 2015 1 commit
  25. 08 Jul, 2015 2 commits
    • paulwilkins's avatar
      Changes to use of rectangular partitions. · 8dd466ed
      paulwilkins authored
      Changes to allow more use of rectangular partitions at
      speeds 1 and 2 for content classed by the first pass as
      animation and for blocks near the active image edge.
      
      This has quite a big impact in quality for the animated
      test sequence but also hurts encode speed for speed 2.
      
      For other content types the impact on both speed and
      quality is small.
      
      Added some plumbing for detection of internal vertical
      image edges.
      
      Change-Id: I3fc48de2349f8cb87946caaf0b06dbb0ea261a9a
      8dd466ed
    • paulwilkins's avatar
      Change speed and rd features for formatting bars. · a126b6ce
      paulwilkins authored
      Change speed features / behavior for split mode when there
      is an internal active edge (e.g. formatting bars).
      
      Remove some threshold constraints in rd code near the active
      edge of the image.
      
      Add some plumbing for left and right active edge detection.
      
      Patch set 5. Limit rd pass through for sub 8x8 to internal active edges.
      This takes away any speed penalty for most clips but keeps the enhanced
      edge coding for the more critical case of internal image edges
      
      Change-Id: If644e4762874de4fe9cbb0a66211953fa74c13a5
      a126b6ce
  26. 07 Jul, 2015 1 commit
    • Marco's avatar
      Update to speed 5 non-rd mode partition search. · 478fbc8f
      Marco authored
      If the pre-selected partition size (from variance partition) is
      32x32, also apply nonrd partition search for 32x32 and 16x16 size.
      
      Overall small positive gain in metrics, average ~1%.
      Some visual improvement, for lower resolutions.
      
      Change-Id: I69cb425bda94f7d13d34c451ab30e9276335a30e
      478fbc8f
  27. 02 Jul, 2015 1 commit
    • paulwilkins's avatar
      Alter partition search at image edge. · 99f8bd72
      paulwilkins authored
      Added code to reduce the minimum partition size searched
      for super blocks at or straddling the edge of the image.
      
      If the first pass has detected formatting bars the "active" edge
      may not be the real edge.
      
      Change-Id: I9c4bdd1477e60f162a75fac95ba6be7c3521e05c
      99f8bd72
  28. 29 Jun, 2015 1 commit
  29. 22 Jun, 2015 2 commits
    • Marco's avatar
      Fixes for key frame coding at speed 5. · fb2a89b1
      Marco authored
      Keep the same transform cutoff and partition selection
      for speed 5 as in speeds >=6 (non-rd speed settings).
      
      Existing setting for key frame at speed 5 allowed transform size
      up to 32x32 on key frames, and did not allow for 4x4 block partition size.
      This created more visual artifacts on first few frames.
      
      avgPSNR/overallPSNR/SSIM gains of 0.2/0.7/0.8 for rtc_derf(low-res) set,
      and 0/0.7/1.1 gains for rtc set.
      
      Change-Id: I8c139ec6c9bb74e14b4ffbad5f12e94f18a59c0b
      fb2a89b1
    • Scott LaVarnway's avatar
      Remove tile param · 86f4a3d8
      Scott LaVarnway authored
      and added to MACROBLOCKD.
      
      Change-Id: I0e60aaa9f84bcc9f2376d71bd934f251baee38db
      86f4a3d8
  30. 19 Jun, 2015 1 commit
    • Marco's avatar
      Reduce max_partition_size for low resolutions at speed 5. · debe4e92
      Marco authored
      For speed 5 real-time mode, the selection of the partition size for
      superblocks on the segment (aq-mode=3) uses the non-rd recursive
      pick partition search, and can sometimes select 64x64.
      
      For low resolutions, visually better to limit this to 32x32.
      
      Change-Id: I69657a7ed8899f8b3cf8c9c318a2509c5c72c565
      debe4e92
  31. 16 Jun, 2015 2 commits
  32. 13 Jun, 2015 2 commits