1. 14 Nov, 2014 1 commit
  2. 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
      8ee605f1
    • 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
      0d085ebc
    • 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
      b9c4f9a7
    • 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
      9f79259e
  3. 12 Nov, 2014 2 commits
  4. 11 Nov, 2014 2 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
      e717d22b
    • 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
      issues:
      
      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
      f2b978e8
  5. 07 Nov, 2014 3 commits
  6. 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
      12284334
    • 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
    • Jingning Han's avatar
      Remove unused is_background function · 10da059b
      Jingning Han authored
      Change-Id: Ia540eac5f066ae95280c2f898370eddf0110c279
      10da059b
    • 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
      caaf63b2
    • 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
      4cc7c5a1
  7. 05 Nov, 2014 2 commits
  8. 04 Nov, 2014 2 commits
    • Minghai Shang's avatar
      [spatial svc] Make spatial svc working for one pass rate control · 86c36a50
      Minghai Shang authored
      Change-Id: Ibd9114485c3d747f9d148f64f706bf873ea473ac
      86c36a50
    • 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
      1434f769
  9. 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
      e083f6bd
    • 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
      d6b68837
  10. 02 Nov, 2014 1 commit
  11. 01 Nov, 2014 2 commits
    • Yaowu Xu's avatar
      Fix speed 7 and speed 12 for rt · 0271ff77
      Yaowu Xu authored
      A recent change has introduced big quality drops for speed 7 and 12
      for --rt mode. The change reverted the big drop and improved quality
      by 9.5% for speed 7 and 13.4% for speed 12.
      
      Change-Id: I07b82e3bb6002a73af486a083458c88877bdad01
      0271ff77
    • hkuang's avatar
      Bind motion vectors with frame buffer structure. · 55577431
      hkuang authored
      This will save a lot of memory for decoder due to removing of prev_mi,
      but prev_mi is still needed in encoder. So this will increase a little bit
      memory for encoder.
      
      Change-Id: I24b2f1a423ebffa55a9bd2fcee1077dac995b2ed
      55577431
  12. 30 Oct, 2014 4 commits
  13. 29 Oct, 2014 3 commits
    • Jingning Han's avatar
      Enable mode search threshold update in non-RD coding mode · 9349a28e
      Jingning Han authored
      Adaptively adjust the mode thresholds after each mode search round
      to skip checking less likely selected modes. Local tests indicate
      5% - 10% speed-up in speed -5 and -6. Average coding performance
      loss is -1.055%.
      
      speed -5
      vidyo1 720p 1000 kbps
      16533 b/f, 40.851 dB, 12607 ms -> 16556 b/f, 40.796 dB, 11831 ms
      
      nik 720p 1000 kbps
      33229 b/f, 39.127 dB, 11468 ms -> 33235 b/f, 39.131 dB, 10919 ms
      
      speed -6
      vidyo1 720p 1000 kbps
      16549 b/f, 40.268 dB, 10138 ms -> 16538 b/f, 40.212 dB, 8456 ms
      
      nik 720p 1000 kbps
      33271 b/f, 38.433 dB,  7886 ms -> 33279 b/f, 38.416 dB, 7843 ms
      
      Change-Id: I2c2963f1ce4ed9c1cf233b5b2c880b682e1c1e8b
      9349a28e
    • Adrian Grange's avatar
      Simplify vp9_set_rd_speed_thresholds_sub8x8 · 4074099e
      Adrian Grange authored
      Change-Id: I4bf0f9a38697f5aea564a47afd7f02bb8b2888b6
      4074099e
    • Hui Su's avatar
      Combine vp9_encode_block_intra and encode_block_intra · 0928da3b
      Hui Su authored
      Change-Id: I79091fb677b64892ecca2fb466fde14602d8cdfc
      0928da3b
  14. 28 Oct, 2014 5 commits
    • JackyChen's avatar
      vp9_denoiser_sse2: refactor the code. · 99a8dac4
      JackyChen authored
      Combined vp9_denoiser_8xM_sse2 and vp9_denoiser_4xM_sse2 into one
      function vp9_denoiser_NxM_sse2_small and passed the bitexact testing.
      Changed the name of the function vp9_denoiser_64_32_16xM_sse2 to
      vp9_denoiser_NxM_sse2_big.
      
      Change-Id: Ib22478df585994dd347ebae04202c0b701e7f451
      99a8dac4
    • 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
    • Paul Wilkins's avatar
      Relax maximum Q for extreme overshoot. · 422d7bc9
      Paul Wilkins authored
      Added code to relax the active maximum Q in response
      to extreme local overshoot to reduce bandwidth peaks.
      
      The impact is small in metrics terms, but it this helps reduce
      bandwidth spikes and overall overshoot in a number of
      clips in our tests sets (especially the YT test set).
      
      In particular this should help prevent very big spikes where a clip
      is mainly easy but has a short hard section. In such a case a choice
      of maximum Q for the clip as a whole may allow us to hit the overall
      target rate but give some extreme spikes. The chunked encoding in YT
      mitigates this problem but it can show up where a longer clip is
      coded as a single chunk.
      
      Change-Id: I213d09950ccb8489d10adf00fda1e53235b39203
      422d7bc9
    • Jingning Han's avatar
      Use zero motion vector in choose_partitioning · 07436abb
      Jingning Han authored
      The zero motion vector was effectively used in the subsampled pixel
      based variance calculation. This commit makes it directly use zero
      mv to generate prediction.
      
      Change-Id: Ica83dc843e9f8da2f89c3ef451e50f16214c0def
      07436abb
    • Jingning Han's avatar
      Refactor encoder tile data structure · d56b3eb0
      Jingning Han authored
      Make the common tile info as one element in the encoder tile data
      struct.
      
      Change-Id: I8c474b4ba67ee3e2c86ab164f353ff71ea9992be
      d56b3eb0
  15. 27 Oct, 2014 2 commits