1. 17 Nov, 2014 1 commit
    • Marco's avatar
      Modify active_worst_quality setting for one pass CBR. · b660f723
      Marco authored
      Current setting had active_worst_quality set too high (close to worst_quality)
      for first frame(s) following first key frame. This changes that to be somewhat
      more aggressive in allowing active_worst_quality to be lower following key frame.
      
      Also remove the 4/5 reduction in active_worst for key frame as
      this should be set by the user qp_max setting.
      
      Change-Id: I0530b3ddcc85c00e3eb7568de1b14a31206c4a4c
      b660f723
  2. 28 Oct, 2014 1 commit
    • Yaowu Xu's avatar
      Allow update of golden refernce buffer in CBR mode · e5cd5188
      Yaowu Xu authored
      This commit changes to allow the usage of golden reference frame in
      VP9 CBR mode to improve quality. VP9 supports potentially up to 8
      reference buffers, it has reference buffers available for this
      purpose. This was not possible in VP8 as golden and alt-ref buffers
      were used for temporal scalability purpose in CBR mode in WebRTC.
      
      For frames that update golden frame, there can be a quality boost.
      The amount of allowed bitrate boost can be controlled via parameter
      rc_max_inter_bitrate_pct. The inital value of the boost ratior is
      currently based on over_shoot_pct. Further experiments will work
      out the adaption of this boost value.
      
      Change-Id: I0c5f010c8fd8b7b598f69779c1b30e5b2ac30a4d
      e5cd5188
  3. 24 Oct, 2014 1 commit
  4. 23 Oct, 2014 1 commit
    • Paul Wilkins's avatar
      Enable dual arf with constant q. · 8fc3ab77
      Paul Wilkins authored
      Add second level arf Q adjustment when using dual arfs
      in constant Q mode.
      
      Previously in constant Q mode enabling dual arf hurt by ~5%
      but with this change the average benefit is ~1-1.5% with some
      mid range data points up ~10%.
      
      Note however that it still hurts on some clips including
      some very low motion show content.
      
      Change-Id: I5b7789a2f42a6127d9e801cc010c20a7113bdd9b
      8fc3ab77
  5. 16 Oct, 2014 1 commit
    • Paul Wilkins's avatar
      Change initialization of static_scene_max_gf_interval. · 716ae78c
      Paul Wilkins authored
      This removes an unnecessary restriction that causes
      a problem (noticed by AWG) when the forced key frame
      interval is set to a very small value, such as 10. In this case
      we were being forced to code minimal length GF groups.
      
      Change-Id: I76ef5861a09638ff51f61fea02359554184ada53
      716ae78c
  6. 13 Oct, 2014 1 commit
    • Paul Wilkins's avatar
      Add adaptation option for VBR. · f7f0eaa5
      Paul Wilkins authored
      Allow min and maxQ to creep when the undershoot
      or overshoot exceeds thresholds controlled by the
      command line under_shoot_pct and over_shoot_pct
      values.
      
      Default is 100%,100% which ~disables adaptation.
      
      Derf results for example undershoot% / overshoot%:-
      
      Head:- Mean abs (%rate error) = 14.4%
      
      This check in:-
      25%/25% - Mean abs (%rate error) = 6.7%
                        PSNR hit -1% SSIM -0.1%
      
      5% / 5%  - Mean abs (%rate error) = 2.2%
                       PSNR hit -3.3% SSIM - 1.1%
      
      Most of the remaining error and most of the quality hit is
      at extreme data rates. The adaptation code still has an
      exception for material that is in effect static so that we
      don't over adjust and over spend on YT slide show type
      content.
      
      (Rebase of If25a2449a415449c150acff23df713e9598d64c9
      to resolve a auto-merge error)
      
      Change-Id: Iec4e1613ef0d067454751d8220edb7058dfbd816
      f7f0eaa5
  7. 10 Oct, 2014 2 commits
    • Alex Converse's avatar
      Revert "Add adaptation option for VBR." · a90255c3
      Alex Converse authored
      This reverts commit 869d4ca5.
      
      This breaks the build via conflict with
      e18edd5e.
      
      Change-Id: If544b99e367a449452834eb8cce600f58c34ec0d
      a90255c3
    • Paul Wilkins's avatar
      Add adaptation option for VBR. · 869d4ca5
      Paul Wilkins authored
      Allow min and maxQ to creep when the undershoot
      or overshoot exceeds thresholds controlled by the
      command line under_shoot_pct and over_shoot_pct
      values.
      
      Default is 100%,100% which ~disables adaptation.
      
      Derf results for example undershoot% / overshoot%:-
      
      Head:- Mean abs (%rate error) = 14.4%
      
      This check in:-
      25%/25% - Mean abs (%rate error) = 6.7%
                        PSNR hit -1% SSIM -0.1%
      
      5% / 5%  - Mean abs (%rate error) = 2.2%
                       PSNR hit -3.3% SSIM - 1.1%
      
      Most of the remaining error and most of the quality hit is
      at extreme data rates. The adaptation code still has an
      exception for material that is in effect static so that we
      don't over adjust and over spend on YT slide show type
      content.
      
      Change-Id: If25a2449a415449c150acff23df713e9598d64c9
      869d4ca5
  8. 07 Oct, 2014 1 commit
  9. 06 Oct, 2014 1 commit
    • Paul Wilkins's avatar
      Improve two pass VBR accuracy. · 0e1068a4
      Paul Wilkins authored
      Adjustments to the GF interval choice and minimum boost.
      Adjustment to the calculation of 2 pass worst q.
      Compared to 09/29 head there is metrics hit on derf of
      (-0.123%,-0.191%)
      
      Compared to the September 29 head and a baseline on
      September 18 baseline the accuracy of the VBR rate control
      measured on the derf set is as follows:-
      
      Mean error %  / Mean abs(error %)
      Sept 18 baseline (-7.0% / 14.76%)
      Sept 29 head (-15.7%, 19.8%)
      This check in (-1.5% / 14.4%)
      
      The mean undershoot is reduced slightly but the
      worst case overshoot on e.g. harbour/highway is
      increased. This will be addressed in a later patch.
      
      Change-Id: Iffd9b0ab7432a131c98fbaaa82d1e5b40be72b58
      0e1068a4
  10. 18 Sep, 2014 1 commit
    • Paul Wilkins's avatar
      Substantial reworking of code for arf and kf groups. · c389b37b
      Paul Wilkins authored
      Substantial restructuring of the way we estimate
      the rate of decay in prediction quality and determine
      the arf interval and amount of boost used.
      
      Also other changes to support moving to a lower first pass
      Q which exposes some new features and allows us to better
      distinguish genuinely static blocks from low motion or noisy
      blocks.
      
      Net gains now visible on all the test sets with std-hd PSNR up
      1.87%. There are still some bad outlier cases but most of these
      are low motion or slide show type content where the metrics
      are already high at any given rate. The best + case is up by
      more than 10%.
      
      Change-Id: I18e25170053bdf3188f493ff8062f48a74515815
      c389b37b
  11. 16 Sep, 2014 1 commit
  12. 02 Sep, 2014 1 commit
  13. 19 Aug, 2014 1 commit
  14. 12 Aug, 2014 1 commit
  15. 08 Aug, 2014 2 commits
    • Dmitry Kovalev's avatar
      Moving framerate from VP9EncoderConfig to VP9_COMP. · 5a78c406
      Dmitry Kovalev authored
      Framerate changes over time, VP9EncoderConfig supposed to have static
      read-only data.
      
      Change-Id: I36580a7ee71243c1eabb57691089691731d03e67
      5a78c406
    • Dmitry Kovalev's avatar
      Moving pass from VP9_COMP to VP9EncoderConfig. · 91c2f1e4
      Dmitry Kovalev authored
      We had a very complicated way to initialize cpi->pass from
      cfg->g_pass:
      switch (cfg->g_pass) {
        case VPX_RC_ONE_PASS:
          oxcf->mode = ONE_PASS_GOOD;
          break;
        case VPX_RC_FIRST_PASS:
          oxcf->mode = TWO_PASS_FIRST;
          break;
        case VPX_RC_LAST_PASS:
          oxcf->mode = TWO_PASS_SECOND_BEST;
          break;
      }
      
      cpi->pass = get_pass(oxcf->mode).
      
      Now pass is moved to VP9EncoderConfig and initialization is simple:
      switch (cfg->g_pass) {
        case VPX_RC_ONE_PASS:
          oxcf->pass = 0;
          break;
        case VPX_RC_FIRST_PASS:
          oxcf->pass = 1;
          break;
        case VPX_RC_LAST_PASS:
          oxcf->pass = 2;
          break;
      }
      
      Change-Id: I8f582203a4575f5e39b071598484a8ad2b72e0d9
      91c2f1e4
  16. 06 Aug, 2014 1 commit
  17. 04 Aug, 2014 1 commit
  18. 23 Jul, 2014 1 commit
    • Minghai Shang's avatar
      [spatial svc]Fix reference issues · 929001bf
      Minghai Shang authored
      1. Remove last reference flag for first frame upper layers in one pass mode.
      2. Disable refresh golden frame flag for key frames.
      
      Change-Id: I44ac1bd2c795169e4fbfdd078ea79a1d33a204d6
      929001bf
  19. 14 Jul, 2014 1 commit
    • Minghai Shang's avatar
      [spatial svc]Implement alt reference frames · e899859c
      Minghai Shang authored
      All changes are for spatial svc only.
      1. Enable encoding hidden frames in each layer and use alt reference idex to reference the hidden frame in each layer
      2. Use golden reference idx for spatial reference
      3. For those layers that don't have hidden frames (caused by lack of frame buffers), reference a hidden frame in lower layers
      4. Add "auto-alt-refs" in svc options
      Change-Id: Idf27d1fd2fb5f3ffd9e86d2119235e3dad36c178
      e899859c
  20. 06 Jul, 2014 1 commit
  21. 24 Jun, 2014 4 commits
    • Paul Wilkins's avatar
      Dual ARF changes: Buffer index selection. · 60244ec1
      Paul Wilkins authored
      Add indirection to the section of buffer indices.
      This is to help simplify things in the future if we
      have other codec features that switch indices.
      
      Limit the max GF interval for static sections to fit
      the gf_group structures.
      
      Change-Id: I38310daaf23fd906004c0e8ee3e99e15570f84cb
      60244ec1
    • Paul Wilkins's avatar
      Adjust arf Q limits with multi-arf. · 11b34f1e
      Paul Wilkins authored
      Adjust enforced minimum arf Q deltas for non primary arfs
      in the middle of an arf/gf group.
      
      Change-Id: Ie8034ffb3ac00f887d74ae1586d4cac91d6cace2
      11b34f1e
    • Paul Wilkins's avatar
      Clean out old CONFIG_MULTIPLE_ARF code. · 26110225
      Paul Wilkins authored
      Remove the old experimental multi arf code that was under
      the flag CONFIG_MULTIPLE_ARF.
      
      Change-Id: Ib24865abc11691d6ac8cb0434ada1da674368a61
      26110225
    • Paul Wilkins's avatar
      Experiment for mid group second arf. · 2e430cba
      Paul Wilkins authored
      This patch implements a mechanism for inserting a second
      arf at the mid position of arf groups.
      
      It is currently disabled by default using the flag multi_arf_enabled.
      
      Results are currently down somewhat in initial testing if
      multi-arf is enabled. Most of the loss is attributable to the
      fact that code to preserve the previous golden frame
      (in the arf buffer) in cases where we are coding an overlay
      frame, is currently disabled in the multi-arf case.
      
      Change-Id: I1d777318ca09f147db2e8c86d7315fe86168c865
      2e430cba
  22. 13 Jun, 2014 1 commit
  23. 12 Jun, 2014 1 commit
  24. 05 Jun, 2014 1 commit
  25. 04 Jun, 2014 1 commit
  26. 03 Jun, 2014 1 commit
  27. 28 May, 2014 2 commits
  28. 22 May, 2014 3 commits
  29. 14 May, 2014 1 commit
  30. 13 May, 2014 1 commit
  31. 09 May, 2014 1 commit
    • Alex Converse's avatar
      Allow speed 5 lossless · 09d947ec
      Alex Converse authored
      tx_mode supercedes whatever mechanism is used to push for 16x16
      allowing for the use of the 4x4 transform.
      
      Change-Id: I6c3f05ab9fe52050e40cc6303de9334653763289
      09d947ec
  32. 07 May, 2014 1 commit
    • Paul Wilkins's avatar
      Remove separate arf and gf minq tables. · ed30c8ef
      Paul Wilkins authored
      Merged minq tables for arf and gf cases.
      These tables were almost the same and for
      VBR the arf table was not used at all.
      
      Change-Id: Ie3c87e91dab613cf06f6945ac1ace0e0e4213d34
      ed30c8ef