1. 20 May, 2015 1 commit
    • 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
  2. 16 May, 2015 1 commit
    • James Zern's avatar
      rename vp9_dct_impl_sse2.c to vp9_dct_sse2_impl.h · a989c66b
      James Zern authored
      this file shouldn't be built directly, it is included in vp9_dct_sse2.c
      to create a non-high-bitdepth and a high-bitdepth version
      
      silences missing prototype warnings for the unused FDCT* functions
      
      Change-Id: Ide6ff8c24ab31bdb0f833260505ae33660a1ad5b
      a989c66b
  3. 15 May, 2015 10 commits
  4. 14 May, 2015 1 commit
    • paulwilkins's avatar
      Revert "Skip the last frame update for some frame repeats." · eb8faf1c
      paulwilkins authored
      Testing on another rate control patch reveals that in some
      situations, where the encoder is flipping in and out of arf
      mode, we get an encoder decoder mismatch.
      
      Whilst it is still not clear why, skipping  the last buffer
      update seems to trigger the problem. Until I can establish
      why, or if there is another underlying cause, I am reverting
      this change.
      
      This reverts commit e5112b3a.
      
      Change-Id: I315c5200414de89458015823344b7367e9dd75ba
      eb8faf1c
  5. 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
  6. 12 May, 2015 2 commits
    • Yaowu Xu's avatar
      Protect new metric computation with use_highbitdepth flag · 3f42d108
      Yaowu Xu authored
      The computation of new metrics is not supported yet in highbitdepth
      mode. This commit adds protection to make sure the computation is
      done only when highbitdepth is not on. This protection shall be
      revised when support of highbitdpeth computation is added.
      
      This resolves the encoder crash when configured with both
      --enable-internal-stats
      --enable-vp9-highbitdepth
      
      Change-Id: Id9f4bcc4fa26d9ca0e9eabade83f3f88a5b212e6
      3f42d108
    • Yunqing Wang's avatar
      Remove unneeded variable declaration · 8ba2d2d5
      Yunqing Wang authored
      This patch fixed the following warning:
      src\third_party\libvpx\source\libvpx\vp9\encoder\vp9_pickmode.c(1607) :
      warning C6246: Local declaration of 'this_mode' hides declaration of the
      same name in outer scope.
      
      Change-Id: I1d93c4a47a13cb13089fec5bd61e8b58e6cd8d58
      8ba2d2d5
  7. 11 May, 2015 2 commits
    • Adrian Grange's avatar
      Recompute tile params on frame resize · 65b768fd
      Adrian Grange authored
      When the frame size changes we must recompute details
      of the tile dimensions.
      
      Change-Id: Ie519bd6da47b5cd43933c0bcfc0f2429bcb01986
      65b768fd
    • 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
  8. 08 May, 2015 1 commit
    • paulwilkins's avatar
      Skip the last frame update for some frame repeats. · e5112b3a
      paulwilkins authored
      Where a frame appears to be a repeat of an earlier
      frame or frame buffer,  but the first pass code
      does not anticipate this (usually because it is matching
      the GF or ARF buffer not the last frame buffer), do not
      update the last frame buffer.
      
      This helps ensure that the content of the last frame buffer
      is kept "different" where possible, and not updated to
      match the GF or ARF. This is particularly helpful in some
      animated sequences where there are groups of repeating
      frames. Here it has quite a big impact. However, in most
      of our standard test clips it has little or no impact.
      
      Change-Id: I77332ee1a69f9ffc0c6080bfeb811c43fd8828e6
      e5112b3a
  9. 07 May, 2015 2 commits
    • James Zern's avatar
      replace DECLARE_ALIGNED_ARRAY w/DECLARE_ALIGNED · fd3658b0
      James Zern authored
      this macro was used inconsistently and only differs in behavior from
      DECLARE_ALIGNED when an alignment attribute is unavailable. this macro
      is used with calls to assembly, while generic c-code doesn't rely on it,
      so in a c-only build without an alignment attribute the code will
      function as expected.
      
      Change-Id: Ie9d06d4028c0de17c63b3a27e6c1b0491cc4ea79
      fd3658b0
    • Marco's avatar
      Remvoe EIGHTTAP_SHARP filter check for non-rd mode. · 76fe5dfc
      Marco authored
      Using EIGHTTAP and EIGHTTAP_SMOOTH seem sufficient.
      Hard to see any visual gain from allowing EIGHTTAP_SHARP, and it is
      rarely selected.
      
      PSNR/SSIM metrics go up by ~0.18/0.14%.
      
      Change-Id: I96fa0d98f9321b913e3ebcd464d4ff3c63018791
      76fe5dfc
  10. 06 May, 2015 1 commit
    • Johann's avatar
      Move shared SAD code to vpx_dsp · d5d92898
      Johann authored
      Create a new component, vpx_dsp, for code that can be shared
      between codecs. Move the SAD code into the component.
      
      This reduces the size of vpxenc/dec by 36k on x86_64 builds.
      
      Change-Id: I73f837ddaecac6b350bf757af0cfe19c4ab9327a
      d5d92898
  11. 05 May, 2015 1 commit
    • Yunqing Wang's avatar
      Add intra mode early termination in non-rd mode · 36eabb1c
      Yunqing Wang authored
      Added the intra mode early termination in order to
      speed up the mode search in non-rd case since we
      started to include more intra modes in the search
      list. Borg tests(rtc set) showed a 0.048% PSNR gain
      and 0.061 SSIM gain. No speed change.
      
      Change-Id: I6f255fe534dc50b736e6a66a726ad458eb9b4443
      36eabb1c
  12. 04 May, 2015 1 commit
    • Marco's avatar
      Allow for H and V intra modes for non-rd mode. · b9a72d3c
      Marco authored
      For non-rd mode (speed >=5): use mask based on prediction block size, and
      (for non-screen content mode) allow for checking horiz and vert intra modes
      for blocks sizes < 16x16.
      
      Avg psnr/ssim metrics go up by about ~0.2%.
      
      Only allowing H/V intra on block sizes below 16x16 for now, to keep
      encoding time increase very small, and also when allowing H/V on 16x16 blocks,
      metrics went down on a few clips which need to be further examined.
      
      Change-Id: I8ae0bc8cb2a964f9709612c76c5661acaab1381e
      b9a72d3c
  13. 01 May, 2015 3 commits
    • paulwilkins's avatar
      Image size restriction to rd auto partition search. · 4a7dcf8e
      paulwilkins authored
      Impose a limit on the rd auto partition search based on
      the image format. Smaller formats require that the search
      includes includes a smaller minimum block size.
      
      This change is intended to mitigate the visual impact of
      ringing in some problem clips, for smaller image formats.
      
      Change-Id: Ie039e5f599ee079bbef5d272f3e40e2e27d8f97b
      4a7dcf8e
    • paulwilkins's avatar
      Remove CONSTRAIN_NEIGHBORING_MIN_MAX. · 287b0c6d
      paulwilkins authored
      Remove one of the auto partition size cases.
      This case can behaves badly in some types of animated content
      and was only used for the rd encode path. A subsequent patch
      will add additional checks to help further improve visual quality.
      
      Change-Id: I0ebd8da3d45ab8501afa45d7959ced8c2d60ee4e
      287b0c6d
    • 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
  14. 30 Apr, 2015 2 commits
    • Yunqing Wang's avatar
      Reduce intra_cost_penalty for BLOCK_8X8 · 4907c299
      Yunqing Wang authored
      This patch reduced the BLOCK_8X8's intra_cost_penalty, which
      allows 8x8 blocks to conduct intra mode search. Borg test
      result(rtc set): 0.077% PSNR gain, 0.228% SSIM gain. No speed
      changes.
      
      Change-Id: Icfe90c4f6969de24bda8ecacbd3da50330bf22b2
      4907c299
    • Yunqing Wang's avatar
      Adjust the vbp early termination threshold slightly · a257e469
      Yunqing Wang authored
      Calculated cpi->vbp_threshold_sad from this frame's dequant value.
      The encoding quality and speed didn't change much. Borg test
      result: PSNR: -0.002%, SSIM: -0.003%.
      
      Change-Id: I97c9826986f39582f29910d637d08a69c90afdee
      a257e469
  15. 29 Apr, 2015 4 commits
    • Yunqing Wang's avatar
      Improve golden frame refreshing in non-rd mode · d31698b0
      Yunqing Wang authored
      The default golden frame interval was doubled. After encoding a
      frame, the background motion was measured. If the motion was high,
      the current frame was set as the golden frame. Currently, the
      changes were applied only while aq-mode 3 was on.
      
      Borg tests(rtc set) showed a 0.226% PSNR gain and 0.312% SSIM gain.
      No speed changes.
      
      Change-Id: Id1e2793cc5be37e8a9bacec1380af6f36182f9b1
      d31698b0
    • James Zern's avatar
      vpx_mem: remove vpx_memset · f58011ad
      James Zern authored
      vestigial. replace instances with memset() which they already were being
      defined to.
      
      Change-Id: Ie030cfaaa3e890dd92cf1a995fcb1927ba175201
      f58011ad
    • James Zern's avatar
      vpx_mem: remove vpx_memcpy · f274c219
      James Zern authored
      vestigial. replace instances with memcpy() which they already were being
      defined to.
      
      Change-Id: Icfd1b0bc5d95b70efab91b9ae777ace1e81d2d7c
      f274c219
    • James Zern's avatar
      vpx_mem: remove vpx_memmove · fbd3b894
      James Zern authored
      vestigial. replace instances with memmove() which they already were
      being defined to.
      
      Change-Id: If396d3f9e3cf79c0ee5d7429615ef3d6b2a34afa
      fbd3b894
  16. 24 Apr, 2015 1 commit
    • Yaowu Xu's avatar
      Add validation of UV partition size · b3e411e4
      Yaowu Xu authored
      For color sampling format other than 420, valid partion size in Y may
      not work for UV plane. This commit adds validation of UV partition
      size before select the partition choice.
      
      This fixes a crash for real time encoding of 422 input.
      
      Change-Id: I1fe3282accfd58625e8b5e6a4c8d2c84199751b6
      b3e411e4
  17. 22 Apr, 2015 1 commit
  18. 21 Apr, 2015 3 commits
    • Scott LaVarnway's avatar
      Revert "Remove mi_grid_* structures." · 8b17f7f4
      Scott LaVarnway authored
      (see I3a05cf1610679fed26e0b2eadd315a9ae91afdd6)
      
      For the test clip used, the decoder performance improved by ~2%.
      This is also an intermediate step towards adding back the
      mode_info streams.
      
      Change-Id: Idddc4a3f46e4180fbebddc156c4bbf177d5c2e0d
      8b17f7f4
    • Jim Bankoski's avatar
      Adds a new temporal consistency metric to libvpx. · ee87e20d
      Jim Bankoski authored
      Change-Id: Id61699ebf57ae4f8af96a468740c852b2f45f8e1
      ee87e20d
    • paulwilkins's avatar
      Modified test for auto key frame detection. · 3606b781
      paulwilkins authored
      The existing test was triggering a lot of false positives on some types
      of animated material with very plain backgrounds. These were triggering
      code designed to catch key frames in letter box format clips.
      
      This patch tightens up the criteria and imposes a minimum requirement
      on the % blocks coded intra in the first pass and the ratio between the
      % coded intra and the modified inter % after discounting neutral (flat)
      blocks that are coded equally well either way.
      
      On a particular problem animation clip this change eliminated a large
      number of false positives including some cases where the old code
      selected kf several times in a row. Marginal false negatives are less
      damaging typically to compression and in the problem clip there are now
      a couple of cases where "visual" scene cuts are ignored because of well
      correlated content across the scene cut.
      
      Replaced some magic numbers related to this with #defines and added
      explanatory comments.
      
      Change-Id: Ia3d304ac60eb7e4323e3817eaf83b4752cd63ecf
      3606b781
  19. 20 Apr, 2015 2 commits