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
      d01c9feb
    • 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
      8069f310
  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
      Replace by CAST_TO_BYTEPTR/SHORTPTR.
      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.
      
      BUG=webm:1388
      
      Change-Id: I9e18a73ba45ddae58fc9dae470c0ff34951fe248
      bf8a49ab
  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
      348bdc01
  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
      ad2e3598
    • 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
      >
      
      TBR=jzern@google.com,marpan@google.com,builds@webmproject.org,jianj@google.com
      BUG=webm:1408
      
      Change-Id: Ifeb81460856d1d56482d4e0477a70ee98f8bfaa6
      9aa429a6
  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
      6bff6cb5
    • 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
      863f860b
  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.
      
      BUG=webm:1406
      
      Change-Id: I35f8299f22f9bee39cd9153d7b00d0993838845e
      f22b828d
    • 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
      f16f08e5
  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
      6557baf3
  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
      3227a9be
    • 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
      1aa46abb
    • 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
      b3e2eb14
    • 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
      288d73c8
  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
      6b3f4bc7
    • Ranjit Kumar Tulabandu's avatar
      Fix for out of range motion vector bug in sub-pel motion estimation · bf15ca10
      Ranjit Kumar Tulabandu authored
      BUG=webm:1397
      
      (yunqingwang)
      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
      bf15ca10
  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"
      codition.
      
      Change-Id: I4a0e487190ac5d47b8216368da12d80fec779c1a
      f1600db3
    • 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
      c824eda6
  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
      0169a985
    • 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
      multi-threaded.
      
      No change in compression.
      
      Change-Id: I112f2918613ccbd37c1771d852606d3af18c1388
      66c6b4d6
  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
      4863e07c
  20. 22 Mar, 2017 4 commits