1. 10 Jan, 2017 1 commit
    • Marco's avatar
      vp9: 1 pass cbr: Adjustments to usage of gf_cbr_boost and aq=3 mode. · 91fc730d
      Marco authored
      When aq=3 mode is on and the gf_cbr_boost is set: make sure golden frame
      is always refreshed, and don't incorporate segement cost in qp setting
      on the boosted golden frame.
      Better performance on RTC set with gf_cbr_boost on,
      for example with gf_cbr_boost=50, gains from ~0.5-3%.
      Change-Id: Ie811f5e4d444ff3320bd6e2c1745b2c4c09a8460
  2. 06 Jan, 2017 2 commits
    • 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
    • Jerome Jiang's avatar
      vp9: Compute source sad for every superblock when partition copy is on. · afc8c483
      Jerome Jiang authored
      The source sad could be used to copy the partition without going into
      choose_partitioning function to speed up vp9 encoding. Computing source
      sad takes little time. Speed test on Android and Linux shows little
      encoding time gain (less than 1.4%).
      Turned off for now since partition copy is turned off.
      Change-Id: I61c9d5b8f22329760cb29a4ee30a7f9c232ce8d3
  3. 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
  4. 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
  5. 02 Nov, 2016 1 commit
    • paulwilkins's avatar
      Fixed bug in formatting of debug stats. · de76d2e3
      paulwilkins authored
      Fixed formatting bug introduced by the fix to BUG=webm:1322
      ( Iedc4477aef1746aa0a4f84d88a1156296fd3ba87)
      Change-Id: I715ee446c0e8584967ab87ba4e355759dd394187
  6. 27 Oct, 2016 2 commits
  7. 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
  8. 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
  9. 19 Oct, 2016 1 commit
  10. 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
  11. 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
  12. 29 Sep, 2016 1 commit
    • Marco's avatar
      vp9: On change_config() only call update_frame_size if needed. · e7654352
      Marco authored
      change_config() may be called often in real-time application,
      to update bitrate/framerate or qp-max/min.
      No need to do update_frame_size() unless frame size has changed.
      Change-Id: I23a51deade1e03adc91c468f9ffde3235298770c
  13. 15 Sep, 2016 1 commit
  14. 03 Sep, 2016 1 commit
  15. 26 Aug, 2016 2 commits
    • 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
    • Sarah Parker's avatar
      Fix formatting in internal stats for vp8 and vp9 · 37e83789
      Sarah Parker authored
      This corrects a formatting error introduced in:
      where spaces were used as delimiters instead of tabs.
      The corresponding fix for vp10 is in
      Change-Id: Ibc4eb8fd82e6b926ba259a679dc98557cadba9b1
  16. 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
  17. 17 Aug, 2016 1 commit
  18. 15 Aug, 2016 1 commit
    • paulwilkins's avatar
      Change to recode rules. · de3b7695
      paulwilkins authored
      Allow recodes for the first inter frame in each arf group
      even when the recode rule is set to ALLOW_RECODE_KFARFGF.
      Small gains of 0.05%.
      Change-Id: I40cb559d36a2bf0ebf5cf758c3f92e452b480577
  19. 05 Aug, 2016 1 commit
  20. 02 Aug, 2016 1 commit
  21. 20 Jul, 2016 1 commit
    • Yaowu Xu's avatar
      Change to call vp9_post_proc_frame() · 690fcd79
      Yaowu Xu authored
      This commit changes the call in vp9 encoder from vp9_deblock() to
      vp9_post_proc_frame() to ensure the data structures used in the call
      are properly allocated. This fixes an encoder crash when configured
      with --enable-internal-stats.
      Change-Id: I2393b336c0f566665336df4f1ba91c405eb56764
  22. 18 Jul, 2016 2 commits
    • Marco's avatar
      vp9: Allow usage of lookahead for real-time, 1 pass vbr. · 05fe0f20
      Marco authored
      Allow usage of lookahead for VBR in real-time mode, for 1 pass vbr.
      Current usage is for fast checking of future scene cuts/changes,
      and adjusting rate control (gf interval and active_worst/target size).
      Added unittests (datarate) for 1 pass vbr mode, with non-zero lag.
      Added an experimental option to limit QP based on lookahead.
      Overall positive gain in metrics on ytlive set:
      avgPNSR/SSIM up on average ~1-3%; several clips up by 5, 7%.
      Change-Id: I960d57dfc89de121c4824b9a9bf88d2814e74b56
    • Yury Gitman's avatar
      cosmetics: Correct grammar/spelling in comments · bdfdd7d9
      Yury Gitman authored
      Change-Id: I1954f9d6e33abff9081fe7a5cf59d5497768e0df
  23. 12 Jul, 2016 2 commits
  24. 29 Jun, 2016 1 commit
    • paulwilkins's avatar
      Add experimental spatial de-noise filter on key frames. · be013eb3
      paulwilkins authored
      For forced key frames in particular this helps to make them
      blend better with the surrounding frames where noise tends
      to be suppressed by a combination of quantization and alt
      ref filtering.
      Currently disabled by default under and IFDEF flag pending
      wider testing.
      Change-Id: I971b5cc2b2a4b9e1f11fe06c67ef073f01b25056
  25. 24 Jun, 2016 2 commits
  26. 17 Jun, 2016 1 commit
  27. 15 Jun, 2016 1 commit
  28. 11 May, 2016 1 commit
    • paulwilkins's avatar
      Added a measure of rc drift. · 45df87ca
      paulwilkins authored
      Added actual and absolute rate miss values to the opsnr.stt
      stats output line.
      Changes to the borg graphing may be needed before merge.
      Change-Id: I1e9d548ce445d29002f0c59ebfd3957a6f15e702
  29. 10 May, 2016 1 commit
    • hui su's avatar
      Add VP9 encoder API for level specification. · be3f0698
      hui su authored
      Add control API VP9E_SET_TARGET_LEVEL that allows the encoder to
      control the output bitstream level and/or keep level related
                     255         do not care about level (default)
                     0           keep level related stats only
                     10          target for level 1
                     11          target for level 1.1
                     62          target for level 6.2
      Usage for vpxenc:
      Change-Id: I31d1aeca19358b893e7577b4e63748c8e614034a
  30. 29 Apr, 2016 1 commit
  31. 25 Apr, 2016 1 commit
    • paulwilkins's avatar
      Experiment to adapt for net AQ offset. · 4b590058
      paulwilkins authored
      In Aq mode 1 the segment and AQ delta for each block is based
      on spatial variance. There may be a net imbalance between blocks
      that have lower Q than the baseline value and those that have higher Q.
      This patch monitors that imbalance and extends the allowed baseline
      Q range for the frame to accommodate adjustment of that baseline value
      to compensate.
      Change-Id: Iae8a48c7c01fe2af94a141e149d03acf467237ca
  32. 22 Apr, 2016 1 commit
  33. 13 Apr, 2016 1 commit
    • Marco's avatar
      vp9: Adjustment to scene-cut detection. · 24db57f0
      Marco authored
      Change recursive weight for average_source_sad and
      put some constraint on spacing between detected scene-cuts.
      Change only affects 1 pass real-time mode.
      Change-Id: I1917e748d845e244812d11aec2a9d755372ec182
  34. 05 Apr, 2016 1 commit
    • Marco's avatar
      vp9-denoiser: Avoid copy-block when denoising is at LowLow level. · ac86dde3
      Marco authored
      Avoid copy-block when denoising is at LowLow level (i.e., no denoising is done).
      Instead, don't enter denoiser at all, and when level goes back up over kLowLow
      do a reset in denoiser.
      Change-Id: I0544adf58f4dd51ecc4a4607fcb0353bfbbb7a59