1. 21 Nov, 2014 1 commit
    • Paul Wilkins's avatar
      Add adaptive midpoint for AQ1. · fc47c5d6
      Paul Wilkins authored
      Make the midpoint variance used in AQ mode 1 segmentation
      depend on the overall complexity of the frame in two pass.
      
      Change-Id: I452814ec57f7a32352e41bb250e78066abe952dd
      fc47c5d6
  2. 06 Nov, 2014 1 commit
    • Paul Wilkins's avatar
      Add intra complexity and brightness weight to first pass. · 5e935126
      Paul Wilkins authored
      The aim of this patch is to apply a positive weighting to
      frames that have a significant number of blocks that are
      of low spatial complexity and are dark. The rationale behind
      this is that artifacts tend to be more visible in such frames.
      
      In this patch the weight is only applied in regard to the distribution
      of bits between frames. Hence if all the frames share similar
      characteristics (as is the case for most of our short test clips) there
      will be little or no net effect.
      
      However, the effect can be seen on some longer form test content.
      
      For example Tears of steel baseline test:
      2323.09 Kbit/s opsnr 39.915 ssim 74.729
      With this patch:-
      2213.34 Kbit/s opsnr 39.963 ssim 74.808
      (Sligtly better metrics and about 5% smaller)
      
      The weighting may well need some further tuning along side changes
      to the aq modes.
      
      Change-Id: Ieced379bca03938166ab87b2b97f55d94948904c
      5e935126
  3. 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
  4. 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
  5. 09 Oct, 2014 1 commit
    • Yunqing Wang's avatar
      Allow mode search breakout at very low prediction errors · e18edd5e
      Yunqing Wang authored
      In model_rd_for_sb function, the spatial domain SSE and variance
      are checked to see if transform coefficients are quantized to 0.
      Besides that, this patch adds another set of thresholds that are
      much more strict. These thresholds are used to conduct a partition
      block level check to measure if all its TX blocks are skippable
      for YUV planes. If it is true, x->skip is set for this partition
      block, and thus its mode search is terminated.
      
      This speeds up the encoding at very low prediction error case,
      such as screen sharing application. This patch covers what
      rd_encode_breakout_test() does, so that function is removed.
      
      Borg test at speed 3 shows:
      For stdhd set, psnr: +0.008%, ssim: +0.014%;
      For derf set, psnr: +0.018%, ssim: +0.025%.
      No noticeable speed change.
      
      Change-Id: I4e5f15cf10016a282a68e35175ff854b28195944
      e18edd5e
  6. 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
  7. 22 Aug, 2014 1 commit
  8. 04 Aug, 2014 1 commit
  9. 28 Jul, 2014 1 commit
  10. 17 Jul, 2014 1 commit
  11. 16 Jul, 2014 1 commit
    • Paul Wilkins's avatar
      Changes to rd balance and multi-arf bug fix. · b691230d
      Paul Wilkins authored
      2 pass only change to calculation of rd mult based on Q.
      Make a small adjustment based on frame type and also
      replace adjustment based on iifactor with an one based
      on the ambient GF/ARF boost level.
      
      Also fix multi arf bug / issue.
      
      Overall these change give an slight improvement in ssim
      but hurt psnr a little.
      
      Change-Id: I5e1751e3ff5390a26f543d7855059e6fbcce105e
      b691230d
  12. 15 Jul, 2014 1 commit
  13. 01 Jul, 2014 1 commit
  14. 24 Jun, 2014 2 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
      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
  15. 12 Jun, 2014 1 commit
  16. 06 Jun, 2014 1 commit
    • Adrian Grange's avatar
      Revert "Removing this_frame_stats member from TWO_PASS struct." · a4f74792
      Adrian Grange authored
      Use of stack frame variable "fps" beyond the lifetime of the function.
      
      fps is sent as a paremeter to output_stats and stored in the
      packet holding this encoded frame. This has scope beyond the
      lifetime of the calling function.
      
      This reverts commit 3f95a230
      
      Change-Id: Icd8e14b3d7dd733590ada12e619b9dce95b6b0f5
      a4f74792
  17. 28 May, 2014 1 commit
  18. 23 May, 2014 2 commits
    • Paul Wilkins's avatar
      Further first pass allocation changes. · 1edbaeb0
      Paul Wilkins authored
      Further changes to first pass allocation for gf/arf groups.
      Three variables removed from TWO_PASS structure as only
      now used locally. Dont adjust gf_group_bits in the post
      encode update as this will no longer have any effect.
      
      Change-Id: Iff89b225db923fc856f5d2aedbc899f1d7d68b55
      1edbaeb0
    • Paul Wilkins's avatar
      Re-factor bit allocation in first pass. · 03eb0621
      Paul Wilkins authored
      Restructuring to allocate the bits for each frame in
      a GF group at the time the group is defined.
      
      At the moment the allocation closely mirrors what
      we had before.
      
      Also changes the default rate adjustment method to
      LONG_TERM_VBR_CORRECTION.
      
      Change-Id: Ie5793c46c6b9c888cead5d8790792efd7d60b7c1
      03eb0621
  19. 22 May, 2014 1 commit
  20. 19 May, 2014 1 commit
    • Paul Wilkins's avatar
      Cosmetic clean up. · f07a96fd
      Paul Wilkins authored
      Use type TWO_PASS instead of "struct twopass".
      
      Change-Id: I9d92920893bd436537b2ca19e9c9d355cca56c7c
      f07a96fd
  21. 15 May, 2014 1 commit
  22. 10 Apr, 2014 1 commit
  23. 02 Apr, 2014 1 commit
    • Deb Mukherjee's avatar
      Rate ctrl changes to track target bitrates closer · 97f4fb7b
      Deb Mukherjee authored
      Turns off the DISABLE_RC_LONG_TERM_MEM macro and makes other changes
      in the way the bits are updated, to make 2-pass rate control track
      target bitrates closer.
      
      Change-Id: I5f3be4b11c2908e6a9a9a1dd4fcf4e65531c44d8
      97f4fb7b
  24. 28 Mar, 2014 1 commit
  25. 19 Mar, 2014 1 commit
    • Minghai Shang's avatar
      [svc] Finalize spatial svc first pass rate control · d2053350
      Minghai Shang authored
            1. Save stats for each spatial layer
            2. Add frame buffer management for svc first pass rc
            3. Set default spatial layer to 1
            4. Flush encoder at the end of stream in test app
      This only supports spatial svc.
      Change-Id: Ia89cfa87bb6394e6c0405b921d86c426d0a0c9ae
      d2053350
  26. 11 Mar, 2014 1 commit
  27. 07 Mar, 2014 1 commit
  28. 02 Mar, 2014 1 commit
  29. 12 Feb, 2014 1 commit
    • Deb Mukherjee's avatar
      Removes active_worst_quality feedback · d23e3392
      Deb Mukherjee authored
      Removes certain cases of feedback of active_worst_quality,
      and removes it from the RATE_CONTROL structure. Now active
      worst quality is expected to be computed locally in the
      q picking function during the encode.
      Making temporal filter strength depend on avg_frame_qindex
      rather than on active_worst_quality actually improves
      performance esp. for yt.
      derf: +0.038%
      yt: +0.359%
      
      Change-Id: I1fe5a343034b55af9322289165321f00ac0827b1
      d23e3392
  30. 10 Feb, 2014 1 commit
    • Deb Mukherjee's avatar
      Further one-pass vbr rate control changes · 15fb5510
      Deb Mukherjee authored
      Some parameter changes and fixes on one-pass rate control.
      derfraw300 is now only 10% below 2-pass speed 0 rate control.
      
      Change-Id: I1940eef8a5a035dc18e71b880d5e00cabd1f01b9
      15fb5510
  31. 06 Feb, 2014 1 commit
  32. 05 Feb, 2014 1 commit
    • Deb Mukherjee's avatar
      One-pass rate control cleanups/fixes/refactoring · 40e63d4b
      Deb Mukherjee authored
      Inlcudes a number cleanups:
      1. Moves the one-pass pre-encode parameter setting functions
      to vp9_ratectrl.c
      2. Deprecates per_frame_bandwidth in RATE_CONTROL structure
      3. Removes target_bandwidth in cpi structure since it is not used.
      4. Various renaming of functions
      
      There is no bit-stream change in 2-pass, one-pass cbr and one-pass
      vbr modes.
      
      Change-Id: Ifd9916bf4d485b7d04c5f52044ffe6703254ccbd
      40e63d4b
  33. 24 Jan, 2014 1 commit
  34. 10 Jan, 2014 1 commit
  35. 19 Dec, 2013 1 commit
    • Deb Mukherjee's avatar
      Begin refactor of frame schedule in rate control · 4dbad63a
      Deb Mukherjee authored
      Various cleanups and streamlining of interfaces as precursor
      to further advancements in rate control.
      Pre-encode parameter setting for different use cases:
      One-pass, first of 2-pass, second of 2-pass, and Svc
      are separated out.
      
      There is no change in output with this change.
      
      Change-Id: Ied8ca7d84d610993776aa30ef263fe20452e0e3e
      4dbad63a
  36. 07 Oct, 2013 1 commit
    • Jim Bankoski's avatar
      cpplint errors in vp9_onyx_if.h · 7eb7dd2f
      Jim Bankoski authored
      Slightly bigger change -> broke up encode_frame_to_datarate,  lots
      of line length fixes.
      
      Change-Id: I7c53325e954de130f3fe1a6656626efc6705be82
      7eb7dd2f
  37. 21 Feb, 2013 1 commit
    • Dmitry Kovalev's avatar
      Code cleanup. · 5a18106f
      Dmitry Kovalev authored
      Removing redundant 'extern' keywords. Moving VP9DX_BOOL_DECODER from .h
      to .c file.
      
      Change-Id: I5a3056cb3d33db7ed3c3f4629675aa8e21014e66
      5a18106f