1. 26 Apr, 2017 2 commits
    • hui su's avatar
      vp9 level: add tentative max cpb values for high levels · d01c9feb
      hui su authored
      Add tentative max cpb size values for levels 5.2 and up. Otherwise
      encoding will fail when targeting for these levels.
      Change-Id: Ib7e0ba4b9836ea1ac900b6822543812843d48463
    • hui su's avatar
      Adjust alt-ref selection in define_gf_group() · 8069f310
      hui su authored
      107de196 changes the encoder alt-ref selection behavior. Assuming
      min_gf_interval = max_gf_interval = 4, the frame order would be
      frm_1  arf_1  frm_2  frm_3  frm_4  frm_5  arf_2 before 107de196;
      frm_1  arf_1  frm_2  frm_3  frm_4  arf_2  frm_5 after 107de196.
      This patch reverts such alt-ref placement change.
      Change-Id: I93a4a65036575151286f004d455d4fcea88a1550
  2. 20 Apr, 2017 3 commits
  3. 19 Apr, 2017 1 commit
    • Linfeng Zhang's avatar
      Clean CONVERT_TO_BYTEPTR/SHORTPTR in convolve · bf8a49ab
      Linfeng Zhang authored
      The rule is: if a short ptr is casted to a byte ptr, any offset
      operation on the byte ptr must be doubled. We do this by casting to
      short ptr first, adding offset, then casting back to byte ptr.
      Change-Id: I9e18a73ba45ddae58fc9dae470c0ff34951fe248
  4. 18 Apr, 2017 1 commit
    • Marco's avatar
      vp9: Add phase to get averaging filter for 1:2 downsampling. · 348bdc01
      Marco authored
      The scaling filter with zero shift will give sub-sampling for
      2x downsampling. Allow for a phase shift to get an averaging filter.
      Usage is for source scaling in 1 pass SVC mode for 1:2 downscale.
      Reduces aliasing in downsampled image.
      Keep the phase to 0/off for now.
      Change-Id: Ic547ea0748d151b675f877527e656407fcf4d51e
  5. 17 Apr, 2017 2 commits
    • Marco's avatar
      vp9: Add key_frame condition to is_reference check for loopfilter. · ad2e3598
      Marco authored
      This condiiton is not needed as key_frame should set the refresh
      of the reference frames, but good to have for clarity in condition.
      Change-Id: Icf9838e7e4f0ff5cf0a9562ae3b5d6c7e6f78702
    • Marco Paniconi's avatar
      Revert "Revert "vp9: Avoid encoder loopfilter for non-reference frames."" · 9aa429a6
      Marco Paniconi authored
      This reverts commit e9b7f98c.
      Reason for revert:
      Commit d578bdad fixes the issue (encoder/decoder mismatch
      in 3TL datarate test) that causes the original revert.
      Original change's description:
      > Revert "vp9: Avoid encoder loopfilter for non-reference frames."
      > This reverts commit 863f860b.
      > This causes encoder / decoder mismatches in various
      > VP9/DatarateTestVP9Large.BasicRateTargeting3TemporalLayers tests
      > BUG=webm:1408
      > Change-Id: Ic200c39d7ed9c0b0247ef562f5d6f7b2625f7e14
      Change-Id: Ifeb81460856d1d56482d4e0477a70ee98f8bfaa6
  6. 14 Apr, 2017 2 commits
  7. 13 Apr, 2017 2 commits
    • Marco's avatar
      vp9: 1 pass VBR: Fix to rate control at low min-q. · 6bff6cb5
      Marco authored
      Fix to avoid getting stuck at very low Q even
      though content is changing, which can happen for --min-q=0.
      Fix is to more aggressively increase active_worst_quality
      when detecting significant rate_deviation at very low Q.
      Change will only affect 1 pass VBR for --min-q < 4, so no
      change in ytlive metrics for --min-q >= 4.
      Change-Id: I4dd77dd7c08a30a4390da0ff2c8bda6fccfa76d7
    • Marco's avatar
      vp9: Avoid encoder loopfilter for non-reference frames. · 863f860b
      Marco authored
      Useful for SVC, where the top layer enhancement frames may
      not update any reference buffers, as is the case for the
      patterns in the 1 pass CBR SVC when #temporal_layers > 1.
      ~3% encoder speedup for SVC patterns with temporal layers
      in 1 pass CBR mode.
      Updated the SVC datarate tests for the mismatch frames.
      Set the frame-dropper off in some tests with #temporal_layers > 1
      so we can correctly set #mismatch frames. Adjusted rate target
      threshold for tests where frame-dropper was turned off.
      Change-Id: Ia0c142f02100be0fed61cd2049691be9c59d6793
  8. 11 Apr, 2017 2 commits
    • Yunqing Wang's avatar
      Fix an integer overflow in vp9_mcomp.c · f22b828d
      Yunqing Wang authored
      The MV unit test revealed an integer overflow issue in vp9_mcomp.c.
      This was caused if the MV was very large. In mv_err_cost(), when
      mv->row = 8184, mv->col = 8184 and ref_mv is 0, mv_cost = 34363
      and error_per_bit = 132412, causing the overflow.
      Change-Id: I35f8299f22f9bee39cd9153d7b00d0993838845e
    • Jerome Jiang's avatar
      vp9: speed >= 8: Adjust speed settings on ARM. · f16f08e5
      Jerome Jiang authored
      Set adaptive_rd_thresh to 2 when simple block yrd is not used.
      Fix regression caused by computing y sad without
      int_pro_motion_estimation on low res motion clips.
      Overall 0.07% quality loss on rtc_derf.
      Change only affects low res on speed 8.
      Change-Id: Ic6a188a56529f1034d6431005fb4b0e24e8a7e27
  9. 10 Apr, 2017 1 commit
    • Marco's avatar
      vp9: 1 pass CBR: avoid nonrd_pick_partition on segment. · 6557baf3
      Marco authored
      For speed 5, 1 pass CBR: Don't use the nonrd_pick_partition
      on the segment, rather use choose_partitioning followed by
      nonrd_select_partition (as is done on base segment).
      Little/no quality loss on RTC and RTC_derf (< 0.3%),
      speedup of at least 5%.
      Change-Id: I5273d5f950e60adf5e437b4ca8c4f63964641e83
  10. 07 Apr, 2017 2 commits
  11. 06 Apr, 2017 4 commits
    • Marco's avatar
      vp9; Move the denoising condition for speed 5. · 3227a9be
      Marco authored
      Move the condition for effectively disabling the denoising
      for speed 5 into the vp9_denoiser_denoise().
      This is cleaner, and also moving the condition into vp9_denoiser_denoise
      will keep the denoiser buffer updated with the current source.
      This allows for more consistent behavior if speed is changed midstream.
      Change-Id: Ia001f591c56e454bf724c3ae73c024badb183ef8
    • Yunqing Wang's avatar
      VP9 motion vector unit test · 1aa46abb
      Yunqing Wang authored
      To prevent the motion vector out of range bug, added a motion vector unit
      test in VP9. In the 4k video encoding, always forced to use extreme motion
      vectors and also encouraged to use INTER modes. In the decoding, checked if
      the motion vector was valid, and also checked the encoder/decoder mismatch.
      The tests showed that this unit test could reveal the issue we saw before.
      Change-Id: I0a880bd847dad8a13f7fd2012faf6868b02fa3b4
    • James Zern's avatar
      vp9_encodeframe: resolve -Wshorten-64-to-32 in hbd · b3e2eb14
      James Zern authored
      vp9_high_get_sby_perpixel_variance the variance operated on in is
      already in 32-bits
      Change-Id: I97006eb9c08dbd0f88ee35e1a1ca205737508296
    • Jerome Jiang's avatar
      vp9: speed 8: Compute y sad without int_pro_motion_estimation. · 288d73c8
      Jerome Jiang authored
      Little change in overall PSNR in rtc. 2-4% speedup on VGA on ARM.
      Change-Id: I3395806d7afd456deacd4077c330adca13ab0645
  12. 05 Apr, 2017 2 commits
  13. 04 Apr, 2017 2 commits
  14. 03 Apr, 2017 2 commits
    • Marco's avatar
      vp9: 1 pass CBR: cleanup to cyclic refresh. · 6b3f4bc7
      Marco authored
      Code cleanup: merged two functions that were doing postencode
      update for cylic refresh, remove some unused code and fix comments.
      No change in behavior.
      Change-Id: I9be0d7e346d34dec29bf4e5bb380a7bf81c8480a
    • Ranjit Kumar Tulabandu's avatar
      Fix for out of range motion vector bug in sub-pel motion estimation · bf15ca10
      Ranjit Kumar Tulabandu authored
      To verify that this patch wouldn't cause much performance change,
      the Borg tests were run. Here was the result:
             avg_psnr   overall_psnr  ssim
      hdres: -0.002     0.006         0.013
      midres:   0         0             0
      lowres:   0         0             0
      Change-Id: Iae395ae7b741e0513cf5bab9dcace110b792a67d
  15. 31 Mar, 2017 2 commits
    • Yunqing Wang's avatar
      Enhance the row mt sync read to accept the sync_range greater than 1 · f1600db3
      Yunqing Wang authored
      The row mt sync read uses sync_range = 1, and wouldn't work if we want
      to use a sync_range that is greater than 1. To make it work, this sync
      read code is modified. Pass in col instead of col - 1 to make it
      consistent with other row mt code in VP9, and then add 1 in "while"
      Change-Id: I4a0e487190ac5d47b8216368da12d80fec779c1a
    • Marco's avatar
      vp9: SVC: Fix issue with artifact for svc-denoising. · c824eda6
      Marco authored
      Issue/bug happens for denoising with spatial layers, where
      the golden (spatial) reference is used in pickmode, but
      denoising is only done wrt to last (temporal).
      Fix is to make sure set_ref_ptrs is set before build predictors
      in denoiser.
      Change-Id: I793cf441341edf7c4a88b8ab1e1b22b3cb0eb508
  16. 29 Mar, 2017 2 commits
  17. 27 Mar, 2017 2 commits
    • Marco's avatar
      vp9: Speed >= 8: avoid chrome check under some condition. · 0169a985
      Marco authored
      For non-rd variance partition, avoid the chrome check
      unless y_sad is below some threshold.
      Small decrease in avgPSNR (~0.3) on RTC set.
      Small/negligible decrease on RTC_derf.
      Change-Id: I7af44235af514058ccf9a4f10bb737da9d720866
    • Marco's avatar
      vp9: 1 pass: Move source sad computation into encodeframe loop. · 66c6b4d6
      Marco authored
      Refactor to split the 1 passs source sad computation into scene
      detection (currently used for VBR and screen-content mode), and
      superblock based source sad computation (used in non-rd CBR mode).
      This allows the source sad computation for CBR mode to be
      No change in compression.
      Change-Id: I112f2918613ccbd37c1771d852606d3af18c1388
  18. 24 Mar, 2017 1 commit
  19. 23 Mar, 2017 1 commit
    • Marco's avatar
      vp9: Non-rd partition: avoid unneeded call to chrome_check · 4863e07c
      Marco authored
      Since y_sad is not computed yet (on the early exit due to source_sad),
      no need to check for setting color_sensitiviy.
      Only affects speed >=8. No change in behavior.
      Change-Id: I3a6f2d20fed38d8b8ec51b75bcacf9a21f2db916
  20. 22 Mar, 2017 4 commits