1. 15 Oct, 2015 1 commit
  2. 06 Oct, 2015 1 commit
    • Marco's avatar
      Add first_spatial_layer_to_encode to SVC. · 7266bedc
      Marco authored
      Use the existing VP9_SET_SVC control to set the
      first spatial layer to encode.
      
      Since we loop over all spatial layers inside the encoder, the
      setting of spatial_layer_id via VP9_SET_SVC has no relevance.
      Use it instead to set the first_spatial_layer_to_encode,
      which allows an application to skip encoding lower layer(s).
      
      Change only affects the 1 pass CBR SVC.
      
      Change-Id: I5d63ab713c3e250fdf42c637f38d5ec8f60cd1fb
      7266bedc
  3. 05 Oct, 2015 1 commit
  4. 02 Oct, 2015 2 commits
    • Marco's avatar
      Stabilize the encoder buffer from going too negative. · 37293583
      Marco authored
      For screen-content mode, with frame dropper off, put a limit
      on how low encoder buffer can go.
      
      Under hard slide changes, the buffer level can go too low and then
      take long time to come back up (in particular when frame-dropping
      is not used), which will affect the active_worst and target frame size.
      
      Change-Id: Ie9fca097e05cd71141f978ec687f852daf9de332
      37293583
    • jackychen's avatar
      Two-steps scaling in VP9 encoder dynamic resizing. · ba06be38
      jackychen authored
      Dynamic resizing now support two-steps scaling: first go down to
      3/4 and then 1/2. This feature is under a flag which controls the
      switch between two-steps scaling and one-step scaling (1/2 only).
      
      Change-Id: I3a6c1d3d5668cf8e016a0a02aeca737565604a0f
      ba06be38
  5. 15 Sep, 2015 2 commits
    • Marco's avatar
      Add cyclic refresh parameters to svc-layer context. · eb53c69e
      Marco authored
      For 1 pass CBR spatial-SVC:
      Add cyclic refresh parameters to the svc-layer context.
      
      This allows cyclic refresh (aq-mode=3) to be applied to
      the whole super-frame (all spatial layers).
      This gives a performance improvement for spatial layer encoding.
      
      Addd the aq_mode mode on/off setting as command line option.
      
      Change-Id: Ib9c3b5ba3cb7851bfb8c37d4f911664bef38e165
      eb53c69e
    • Debargha Mukherjee's avatar
      Fix two pass svc encoding · 0e1b4fb9
      Debargha Mukherjee authored
      Fixes temporal scalability. Updates were inadvertently turned
      off for two pass svc causing crashes due to gf_group.index
      growing unchecked.
      
      Change-Id: Iff759946bf61bbde70630347cc8fa4d51a8c2d2f
      0e1b4fb9
  6. 14 Sep, 2015 1 commit
  7. 09 Sep, 2015 1 commit
  8. 31 Aug, 2015 1 commit
  9. 27 Aug, 2015 1 commit
  10. 18 Aug, 2015 1 commit
    • Marco's avatar
      Allow for re-encoding frame if high overshoot. · 42b67917
      Marco authored
      For 1 pass CBR mode under screen content mode:
      if pre-analysis (source temporal-sad) indicates significant
      change in content, then check the projected frame size after
      encode_frame(), and if size is above threshold, force re-encode
      of that frame at max QP.
      
      Change-Id: I91e66d9f3167aff2ffcc6f16f47f19f1c21dc688
      42b67917
  11. 10 Aug, 2015 1 commit
  12. 06 Aug, 2015 2 commits
    • Jingning Han's avatar
      Cosmetic - align format in vp9 · b4f2c567
      Jingning Han authored
      Change-Id: I83ed3422f1f4009675ad2f5c4b7236bc7b83b30e
      b4f2c567
    • Marco's avatar
      Rate control adjustment for temporal-svc 1pass. · c54d1650
      Marco authored
      -For ambient qp in active_worst setting: increase the initial
      averaging time (from very first frame) to account for avg_qp of key_frame.
      -In postencode on key frame: update the last_q/avg_q[key_frame] for
      all temporal layers.
      
      Change-Id: I5313153d350b1045b4835ce948dfffb7d2039b52
      c54d1650
  13. 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
  14. 29 Jul, 2015 1 commit
  15. 17 Jul, 2015 1 commit
  16. 15 Jul, 2015 1 commit
  17. 14 Jul, 2015 2 commits
    • Marco's avatar
      Fix to resize logic for 1 pass mode. · dc7da005
      Marco authored
      Proper use/update of resize_state and resize_pending to constrain
      the total amount of downsizing to be at most one scale down, for now.
      
      Change-Id: Id18fc32499f2fbdbec16728dcdc9e4eac09098f0
      dc7da005
    • Debargha Mukherjee's avatar
      Fixes part of merge regression from adding arf parameters. · 3c524488
      Debargha Mukherjee authored
      From Change  Ibf0c30b72074b3f71918ab278ccccc02a95a70a0
      There is still an issue relating to one animated test clip with repeat
      patterns where this change effectively increase the default  maximum
      arf interval by +1. This can be examined seperately.
      
      Change-Id: Idd01d5480fc45202d8a059a0c3afc0997cc5bdd1
      3c524488
  18. 06 Jul, 2015 1 commit
    • Debargha Mukherjee's avatar
      Expose params min-gf-interval/max-gf-interval · 98526433
      Debargha Mukherjee authored
      Adds two new vp9 parameters --min-gf-interval and --max-gf-interval
      to enable testing based on frequency of alt-ref frames.
      
      Also adds a unit-test to test enforcement of min-gf-interval.
      
      For both these parameters the default value is 0, which indicates
      they are picked by the encoder, based on resolution and framerate
      considerations. If they are greater than zero, the specified
      parameter is honored.
      
      (Additional note by paulwilkins)
      Note that there is a slight oddity in that key frames are also GFs and
      considered part of  GF only group. However they are treated as not
      being part of an arf group because for arf groups the previous GF is
      assumed to be the terminal or overlay frame for the previous group.
      
      (end note)
      
      Change-Id: Ibf0c30b72074b3f71918ab278ccccc02a95a70a0
      98526433
  19. 25 Jun, 2015 1 commit
    • Marco's avatar
      Update to dynamic resize logic for 1pass CBR. · 1c7b1f9a
      Marco authored
      Only do the check for resizing if the feature is selected
      (i.e., resize_mode = RESIZE_DYNAMIC).
      
      And modify condition for checking to be resize_count >= window,
      (since framerate can change).
      
      Change-Id: Idceb4e50956bb965a1492b4993b0dcb393c9be4d
      1c7b1f9a
  20. 19 Jun, 2015 2 commits
    • Yaowu Xu's avatar
      Fix a msvc compiler warning · d8428ae3
      Yaowu Xu authored
      Change-Id: Ida8a04370895ed14bd118324ec2577da926e4648
      d8428ae3
    • Marco's avatar
      Add dynamic resize logic for 1 pass CBR. · d77f51ba
      Marco authored
      Decision to scale down/up is based on buffer state and average QP
      over previous time window. Limit the total amount of down-scaling
      to be at most one scale down for now.
      
      Reset certain quantities after resize (buffer level, cyclic refresh,
      rate correction factor).
      
      Feature is enable via the setting rc_resize_allowed = 1.
      
      Change-Id: I9b1a53024e1e1e953fb8a1e1f75d21d160280dc7
      d77f51ba
  21. 02 Jun, 2015 1 commit
    • Marco's avatar
      Vidyo patch: Rate control for SVC, 1 pass CBR mode. · c139b81a
      Marco authored
      -Make Rate control work for SVC 1 pass CBR mode.
      -Added temporal layering mode.
      -Fixed bug in non-rd variance partition.
      -Modified/updated the sample encoders (vp9_spatial_svc_encoder, vpx_temporal_svc_encoder).
      -Added datarate unittest(s) for 1 pass CBR SVC.
      
      Change-Id: Ie94b1b68a56ea1267b5087c625e5df04def2ee48
      c139b81a
  22. 20 May, 2015 2 commits
    • paulwilkins's avatar
      Fast feedback of bits on undershoot. · 883fdd45
      paulwilkins authored
      This patch provides a partial rapid feedback of bits
      resulting from extreme undershoot.
      
      Some  improvement on some problem animated material
      but in its current form only a small impact on the metrics results
      of our standard test sets.
      
      Change-Id: Ie03036ea8123bc2553437cb8c8c9e7a9fc5dac5d
      883fdd45
    • paulwilkins's avatar
      Fix issues with mixed ARF and GF groups. · ade9693a
      paulwilkins authored
      This patch addresses two issues that can occur when the
      encoder chooses to use a mixture of ARF and GF groups.
      
      The first issue relates to a failure to reset the "ARF active" flag
      correctly when transitioning from coding ARF groups to coding
      GF groups. This caused some golden frames to be  encoded
      with an incorrect bit rate target as if they were ARF overlay frames.
      
      The second issue relates to the encoding of a single short GF group
      just before a key frame.  Where the last group before a key frame
      is an ARF group we expect the final frame before the key frame  to
      be an low data rate overlay frame. However, when the last  group
      is a GF group, the final frame before the key frame should be a normal
      frame with a normal bit allocation. This issue had the potential to cause
      a single poorly coded frame just before a key frame. If that key frame
      were a forced key frame rather than a real scene cut, this might cause
      pulsing.
      
      Change-Id: Idf1eb5eaf63a231495a74de7899236e1ead9fb00
      ade9693a
  23. 15 May, 2015 1 commit
  24. 13 May, 2015 1 commit
    • Johann's avatar
      Relocate memory operations for common code · 1d7ccd53
      Johann authored
      With the sad functions, and hopefully the variance functions soon,
      moving to the vpx_dsp location, place the defines used in the
      reference C code in a common location.
      
      Change-Id: I4c8ce7778eb38a0a3ee674d2f1c488eda01cfeca
      1d7ccd53
  25. 11 May, 2015 1 commit
    • Marco's avatar
      Fix rate control issue with layers and aq-mode=3. · 913862be
      Marco authored
      When aq-mode=3 is enabled, only for base layer frames should the
      qp of the frame incorporate the segment delta-qp.
      
      This was causing more rate mismatch for the enhancement layer frames
      when running temporal layers with aq-mode=3 on.
      
      Change-Id: I1c5e69d1ef8a51188af8696753c17fd8f67699b3
      913862be
  26. 01 May, 2015 1 commit
    • paulwilkins's avatar
      Adjust ARF min and max interval. · e0786c28
      paulwilkins authored
      Previously limit on max interval  set to 0.5 seconds.
      Though this helped some low frame rate material it
      appears to be a bit too aggressive for some 24 and 25 fps
      content. This patch relaxes the limit to 0.75 seconds.
      
      The patch also adds a new minimum interval variable
      to replace the current hard wired value. This allows us
      to impose a limit on the maximum number of primary
      arfs per second for high frame rate (e.g. 50 & 60fps)
      content. This is to address concerns regarding playback
      performance on some platforms if there is a high base
      frame rate and very frequent arfs.
      
      Change-Id: I373e8b6b2a8ef522eced6c6d2cceb234ff763fcf
      e0786c28
  27. 16 Apr, 2015 1 commit
    • paulwilkins's avatar
      Limit arf interval for low fpf clips. · effd974b
      paulwilkins authored
      This patch limits  the maximum arf interval length to
      approximately half a second. In some low fps animations in
      particular the existing code was selecting an overly long interval
      which was hurting visual quality. For a sample problem test clip
      (360P animation , 15fps, ~200Kbit/s) this change also improved
      metrics by >0.5 db.
      
      There may be some clips where this hurts metrics a little, but the
      worst case impact visually is likely to be less than having an
      interval that is much too long. On more normal material at 24
      fps or higher, the impact is likely to be nil/minimal.
      
      Change-Id: Id8b57413931a670c861213ea91d7cc596375a297
      effd974b
  28. 11 Mar, 2015 2 commits
  29. 10 Mar, 2015 2 commits
    • Marco's avatar
      Modify update golden reference update under aq-mode=3 mode. · fb31aa09
      Marco authored
      For non-SVC 1 pass CBR: make the GF update interval a multiple of the
      cyclic refresh period, and use encoding stats to prevent GF update at certain times.
      
      Change-Id: I4c44cacc2f70f1d27391a47644837e1eaa065017
      fb31aa09
    • Adrian Grange's avatar
      Fix vp9_compute_qdelta_by_rate loop behavior · 78df7122
      Adrian Grange authored
      The return value from vp9_compute_qdelta_by_rate, which is
      a delta value for the quantizer, could never be 0 if
      (qindex == rc->worst_quality).
      
      This occurs because target_index was setup unconditionally
      in the loop and yet the loop counter stopped at
      (rc->worst_quality - 1).
      
      Change-Id: I6b59cd9b5811ff33357e71cd7d814c5e53d291f2
      78df7122
  30. 09 Mar, 2015 1 commit
    • paulwilkins's avatar
      Allow q adjustment for VPX_CQ and VPX_CBR. · 2cff9c4e
      paulwilkins authored
      Adjustment previously only enabled in VBR mode.
      
      This patch allows adjustment of min and max q for CBR
      and adjustment of max q only for CQ mode.
      
      Change-Id: Id5e583f3d50453cd544fc57249acacd946457482
      2cff9c4e
  31. 13 Feb, 2015 1 commit
    • Yaowu Xu's avatar
      Fix an encoder/decode mismatch bug · 4bc7f482
      Yaowu Xu authored
      This commit prevent the encoder to update last_frame_type when a frame
      is dropped in the encoder. Prior to this fix, if there is a dropped
      frame immediatedly after a key frame, decoder would have the value of
      last_frame_type as key frame, different from encoder as the dropped
      frame in encoder would have updated the value to an inter frame. This
      leads to different probability update in encoder and decoder, thereby
      encoder/decoder mismatch.
      
      This fixes issue #941
      
      Change-Id: I27115224b138bec43ae3916c016574f5740822b0
      4bc7f482
  32. 11 Feb, 2015 1 commit