1. 20 Nov, 2014 2 commits
  2. 19 Nov, 2014 2 commits
    • Yaowu Xu's avatar
      Add a reset to rc tracking for dropped frames · 21db24ef
      Yaowu Xu authored
      VP9/DatarateTestVP9Large.ChangingDropFrameThresh/[34] fails post the
      merge of commit#ffa06b37. This commit adds reset of rc tracking info
      when frame is dropped, and fixes the causes of the bad interaction
      between the tests and the previous commit.
      Change-Id: I848acfd9fcb336359662274325190f94aac76eae
    • Jingning Han's avatar
      Combine fdct8x8 and quantization process · c6908fd5
      Jingning Han authored
      This commit reworks the forward transform and quantization process
      for 8x8 block coding. It combines the two operations in a single
      function to save a store/load stage of the original transform
      coefficients. Overall the speed -6 is slightly faster (around 1%
      range). The compression performance of speed -6 is improved by
      Change-Id: Id6628daef123f3e4649248735ec2ad7423629387
  3. 18 Nov, 2014 2 commits
    • Yaowu Xu's avatar
      Prevent severe rate control errors in CBR mode · ffa06b37
      Yaowu Xu authored
      In rare cases, the interaction between rate correction factor and Q
      choices may cause severe oscillating frame sizes that are way off
      target bandwidth. This commit adds tracking of rate control results
      for last two frames, and use the information to prevent oscillating
      Q choices.
      Change-Id: I9a6d125a15652b9bcac0e1fec6d7a1aedc4ed97e
    • Jingning Han's avatar
      Add sse2 version for vp9_quantize_fp · 2d3cc8ea
      Jingning Han authored
      vp9_quantize_fp is the quantization process used by rtc coding
      mode. This commit adds a sse2 implementation of it. The
      implementation is modified based on vp9_quantize_b_sse2. No speed
      difference from ssse3 version.
      Change-Id: I24949c5b27df160b4f35117d28858d269454e64a
  4. 17 Nov, 2014 3 commits
    • 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
    • Yaowu Xu's avatar
      change to call vp9_refining_search_sad() directly · 1687c47b
      Yaowu Xu authored
      The function pointer in compressor instance does not change, so this
      commit changes to call the function directly.
      Change-Id: I9c9c460e3475711c384b74c9842f0b4f3d037cc5
    • Jingning Han's avatar
      Add empty pointer check to pred buffering in rtc coding mode · a62c87fb
      Jingning Han authored
      This commit adds a check condition to the prediction buffering
      operation used in the rtc coding mode. This resolves a unit test
      warning in example/vpx_tsvc_encoder_vp9_mode_7.
      Change-Id: I9fd50d5956948b73b53bd8fc5a16ee66aff61995
  5. 15 Nov, 2014 2 commits
  6. 14 Nov, 2014 2 commits
  7. 13 Nov, 2014 4 commits
    • Yunqing Wang's avatar
      vp9_ethread: modify the cyclic refresh struct · 8ee605f1
      Yunqing Wang authored
      Two members in struct CYCLIC_REFRESH
        int64_t projected_rate_sb;
        int64_t projected_dist_sb;
      are updated at the superblock level, which makes them shared data
      in the multi-thread situation, and requires extra work to handle
      them. However, those values are updated and used immediately, and
      therefore can be removed. This patch cleaned up the code and
      removed the two members.
      Change-Id: I2c6ee4552bf49fb63ce590cdb47f9723974fffb1
    • Adrian Grange's avatar
      Prepare for dynamic frame resizing in the recode loop · 0d085ebc
      Adrian Grange authored
      Prepare for the introduction of frame-size change
      logic into the recode loop.
      Separated the speed dependent features into
      separate static and dynamic parts, the latter being
      those features that are dependent on the frame size.
      Change-Id: Ia693e28c5cf069a1a7bf12e49ecf83e440e1d313
    • Paul Wilkins's avatar
      Fix 32 bit build emms problem. · b9c4f9a7
      Paul Wilkins authored
      Add extra vp9_clear_system_state() calls to fix
      double / mmx issue introduced into first pass
      code for 32 bit builds.
      Change-Id: I84cd2986b80d83650a091ab25c43755efeb82e03
    • Yaowu Xu's avatar
      adapt the adjustment limit for rate correction factor in RTC mode · 9f79259e
      Yaowu Xu authored
      Rate correction factor is used to correct the estimated rate for any
      given quantizer, and feeds into rate control for quantizer selection.
      We make use of the actual bits used to calculate this rate correction
      factor with an adjustment limit to prevent over-adjustment.
      This commit adapts the adjustment limit to the difference between the
      estimated bits and the actual bits, allows the adjustment limit to vary
      between 0.125 (when estimate is close to actual) and 0.625 (when there
      is >10X factor off between estimated and actual bits). By doing this,
      the commit appears to have largely corrected two observed issues:
      1. Adjustment is too slow when the actual bits used is way off from
      estimate due to the small adjustment limit.
      2. Extreme oscillating quantizer choices due to the feedback loop.
      Change-Id: I4ee148d2c9d26d173b6c48011313ddb07ce2d7d6
  8. 12 Nov, 2014 2 commits
  9. 11 Nov, 2014 3 commits
    • Jingning Han's avatar
      Use reconstructed pixels for intra prediction · e717d22b
      Jingning Han authored
      This commit makes the speed -6 and above use the reconstructed
      boundary pixels for precise intra prediction. This allows more
      intra prediction modes to be tested in the non-RD coding process.
      Enabling horizontal and vertical intra prediction modes can
      improve the speed -6 compression performance for rtc set
      by 0.331%.
      Change-Id: I3a99f9d12c6af54de2bdbf28c76eab8e0905f744
    • Yaowu Xu's avatar
      Use normal rate_correction_factor for gf in CBR mode · f2b978e8
      Yaowu Xu authored
      I0c5f010 changed to allow update golden reference buffer in CBR mode,
      this commit changes the use of rate_correction_factor for those frames
      to be aligned with the new usage. This commit attempts to solve two
      a. Initialization of rate correction factor for Golden Frame
      Prior to this patch, even the regular inter frame has been update
      the rate correction factor based on content and encoding results,
      the first golden frame would still use the ininitialized value
      that can be way off.
      b. Allowing rate correction factor update to be slightly faster
      Prior to this patch, when the rate correction factor is off, the
      update to the factor is too slow, the factor could not get close
      to a semi-correct value even after many frames.
      The commit helps all clips in psnr/ssim metric, but especially to
      a few clip in RTC set that rate correction was way off. For example
      thaloundeskmtgvga gained about .5dB for both overall/average psnr.
      Change-Id: I0be5c41691be57891d824505348b64be87fa3545
    • Deb Mukherjee's avatar
      Vidyo: Support for one-pass rc-enabled SVC encoder · 0ba1542f
      Deb Mukherjee authored
      Adds support for one-pass rc-enabled SVC encoder with callbacks for
      getting per-layer packets.
      - the callback function registration is implemented as an encoder
      control function.
      - if the callback function is not registered, the old way of
      aggregating packets with superframe will take effect.
      - one more control function “VP9E_GET_SVC_LAYER_ID” has been
      implemented to get the temporal/spatial id from the encoder
      within the callback. This can be used to get the ids to put on RTP
      Change-Id: I1a90e00135dde65da128b758e6c00b57299a111a
  10. 07 Nov, 2014 5 commits
    • Deb Mukherjee's avatar
      Iadst transforms to use internal low precision · cc57c5e4
      Deb Mukherjee authored
      Change-Id: I266777d40c300bc53b45b205144520b85b0d6e58
      (cherry picked from commit a1b726117f5470f227bc90cd030b7d25045dc510)
    • Alex Converse's avatar
      Fix LAST SKIP when considering GOLDEN · ce9ba97a
      Alex Converse authored
      Change-Id: I39d9f13fa34984ee9dad0c4f303ef672635f420e
    • Paul Wilkins's avatar
      AQ1 - remove first pass weights. · 31b6d7c1
      Paul Wilkins authored
      Removed redundant weighting function tied for AQ1 from first
      pass code.
      Improvment in baseline AQ1 results:-
      Derf  opsnr +0.142% SSIm +0.258%
      YT  opsnr +0.173% SSIm +0.3%
      Change-Id: I16ef91caf2d7f302cd5940cc5e2626d48ebcb212
    • Yaowu Xu's avatar
      Change the use of a reserved color space entry · af3519a3
      Yaowu Xu authored
      This commit rename a reserved color space entry to BT_2020, it intends
      to provide support for VP9 bitstream to pass along the color space
      type defined in BT.2020(Rec.2020)
      please note this entry does not have any effect on encoding/decoding
      behavior, but allow applications to the pass the information along
      from encoding end to decoding end.
      Change-Id: I4678520e89141ea5e8900f7bd1c0e95b710b7091
    • Jingning Han's avatar
      Refactor nonrd_use_partition coding process · 754b05a4
      Jingning Han authored
      This commit integrates the non-RD mode decision process and the
      encoding process into a single recursion scheme.
      Change-Id: I6a7e72a0b84d567554801ebbe01ec75d54c1f77d
  11. 06 Nov, 2014 5 commits
    • Yunqing Wang's avatar
      Modify the frame context memory deallocation · 12284334
      Yunqing Wang authored
      This patch was to fix the vpxdec fuzzing3 test failure. When an
      error occurs, setjmp() is invoked, which calls the decoder
      removing routine. In multiple thread situation, other threads
      could try to access the frame context memory that is already
      deallocated, thus causing a segfault.
      An invalid unit test was added for this issue.
      Change-Id: Ida7442154f3d89759483f0f4fe0324041fffb952
    • 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
    • Jingning Han's avatar
      Remove unused is_background function · 10da059b
      Jingning Han authored
      Change-Id: Ia540eac5f066ae95280c2f898370eddf0110c279
    • Jingning Han's avatar
      Rework cut-off decisions in cyclic refresh aq mode · caaf63b2
      Jingning Han authored
      This commit removes the cyclic aq mode dependency on
      in_static_area and reworks the corresponding cut-off thresholds.
      It improves the compression performance of speed -5 by 1.47% in
      PSNR and 2.07% in SSIM, and the compression performance of speed
      -6 by 3.10% in PSNR and 5.25% in SSIM. Speed wise, about 1% faster
      in both settings at high bit-rates.
      Change-Id: I1ffc775afdc047964448d9dff5751491ba4ff4a9
    • hkuang's avatar
      Totally remove prev_mi in VP9 decoder. · 4cc7c5a1
      hkuang authored
      This will save the memory and improve the decode speed due to
      removing unnecessary memset of big prev_mi array for
      all the key frames.
      Decoding a all key frames 1080p video shows speed improve around 2%.
      Change-Id: I6284a445c1291056e3c15135c3c20d502f791c10
  12. 05 Nov, 2014 2 commits
  13. 04 Nov, 2014 3 commits
    • hkuang's avatar
      Fix the memory leak due to missing free frame_mvs. · 23da920a
      hkuang authored
      Change-Id: I2ceee7341d906259002c0ea31ea009ae32c04bfd
    • Minghai Shang's avatar
      [spatial svc] Make spatial svc working for one pass rate control · 86c36a50
      Minghai Shang authored
      Change-Id: Ibd9114485c3d747f9d148f64f706bf873ea473ac
    • Jingning Han's avatar
      Skip ref frame mode search conditioned on predicted mv residuals · 1434f769
      Jingning Han authored
      This commit makes the RTC coding mode to conditionally skip the
      reference frame mode search, when the predicted motion vector of
      the current reference frame gives more than two times sum of
      absolute difference compared to that of other reference frames.
      It reduces the runtim by 1% - 4% for speed -5 and -6. The average
      compression performance is improved by about 0.1% in both settings.
      It is of particular benefit to light change scenarios. The
      compression performance of test clip mmmovingvga.y4m is improved by
      6.39% and 15.69% at high bit rates for speed -5 and -6, respectively.
      Speed -5
      vidyo1 16555 b/f, 40.818 dB, 12422 ms ->
             16552 b/f, 40.804 dB, 12100 ms
      nik    33211 b/f, 39.138 dB, 11341 ms ->
             33228 b/f, 39.139 dB, 11023 ms
      mmmoving 33263 b/f, 40.935 dB, 13508 ms ->
               33256 b/f, 41.068 dB, 12861 ms
      Speed -6
      vidyo1 16541 b/f, 40.227 dB, 8437 ms ->
             16540 b/f, 40.220 dB, 8216 ms
      nik    33272 b/f, 38.399 dB, 7610 ms ->
             33267 b/f, 38.414 dB, 7490 ms
      mmmoving 33255 b/f, 40.555 dB, 7523 ms ->
               33257 b/f, 40.975 dB, 7493 ms
      Change-Id: Id2aef76ef74a3cba5e9a82a83b792144948c6a91
  14. 03 Nov, 2014 2 commits
    • Jingning Han's avatar
      Refactor sub-pixel motion search unit · e083f6bd
      Jingning Han authored
      This commit unfolds the legacy macro definitions used in the
      sub-pixel motion search and refactors the operational flow for
      later optimizations.
      Change-Id: I3e3f770cad961d03d1a6eb0b2a0186cc77eaf2b8
    • Marco's avatar
      Allow disable of refresh golden for more than 1 layer encoding. · d6b68837
      Marco authored
      The current logic was allowing for disabling golden refresh only
      for two pass svc encoding. This change disables it as long as
      more than 1 layer encoding is used (for example temporal layers under 1pass CBR).
      Change-Id: I4dc5204a7ad365c821ec7963e93b59da82e1826b
  15. 02 Nov, 2014 1 commit