1. 01 Jul, 2014 3 commits
    • Yunqing Wang's avatar
      Elevate NEWMV mode checking threshold in real time · f31ff029
      Yunqing Wang authored
      The current threshold is knid of low, and in many cases NEWMV
      mode is checked but not picked as the best mode. This patch
      added a speed feature to increase NEWMV threshold, so that
      less partition mode checking goes to check NEWMV. This feature
      is enabled for speed 6 and 7.
      
      Rtc set borg tests showed:
      1. Speed 6, overall psnr: -0.088%, ssim: -1.339%;
         Average speedup on rtc set is 11.1%.
      2. Speed 7, overall psnr: -0.505%, ssim: -2.320%
         Average speedup on rtc set is 12.9%.
      
      Change-Id: I953b849eeb6e0d5a1f13eacba30c14204472c5be
      f31ff029
    • Yunqing Wang's avatar
      Fix visual studio build issue · 9ba1d60b
      Yunqing Wang authored
      Fixed the signed/unsigned mismatch.
      
      Change-Id: Id83d603b8f1745b71f4cf695a0751e55518b1316
      9ba1d60b
    • hkuang's avatar
      Revert "Fix a bug in VP9Worker which leads to unit test hang." · 1480ba6f
      hkuang authored
      The caller should reset the state instead of letting worker
      to reset.
      
      This reverts commit 34b2ce15.
      
      Change-Id: Idb546ea6386cffc44e98dee772900d21ab79710f
      1480ba6f
  2. 30 Jun, 2014 7 commits
    • Yaowu Xu's avatar
      change to not force interp_type as SWITCHABLE · 186bd4eb
      Yaowu Xu authored
      Encoder still uses SWITCHABLE as default via DEFAULT_INTERP_FILTER,
      but does not override the default if it is not SWITCHABLE.
      
      Change-Id: I3c0f6653bd228381a623a026c66599b0a87d01d5
      186bd4eb
    • Yunqing Wang's avatar
      Encode_breakout code refactoring · 3779ccaf
      Yunqing Wang authored
      Moved the encode_breakout_test out of vp9_pick_inter_mode().
      
      Change-Id: I6966d0293ae5210a5a28b0e8debacb24d1c0d2d4
      3779ccaf
    • Jingning Han's avatar
      Remove unused set_mode_info function · 30ab3701
      Jingning Han authored
      When the frame is intra coded only, the encoder takes the RD
      coding flow. Hence the function set_mode_info is not practically
      in use. This commit removes it and the associated conditional
      branches.
      
      Change-Id: I1e42659ceb55b771ba712d1cdecacb446aa6460d
      30ab3701
    • hkuang's avatar
      Fix a bug in VP9Worker which leads to unit test hang. · 34b2ce15
      hkuang authored
      This fixes the hang in VP9/InvalidFileTest.ReturnCode/3
      due to worker->had_error has not been reset after getting
      error.
      
      Change-Id: Ia3608225094758a2bd88f6ae4dd9dfd93bbaad27
      34b2ce15
    • Yunqing Wang's avatar
      Enable encode breakout in real time · dee5782f
      Yunqing Wang authored
      For real time speed 7, once encode breakout is on(i.e. encoding
      setting --static-thresh=1), a proper encode breakout threshold
      is set to speed up the encoder.
      
      Set --static-thresh=1, RTC set borg test showed a slight overall
      psnr loss of 0.162%, but ssim gain of 0.287%. The average speedup
      on RTC set is 6%, and for some clips, the speedup can be 10+%.
      
      Change-Id: Id522d9ce779ff7c699936d13d0c47083de4afb85
      dee5782f
    • Yunqing Wang's avatar
      Decide the partitioning threshold from the variance histogram · 9d41313e
      Yunqing Wang authored
      Before encoding a frame, calculate and store each 16x16 block's
      variance of source difference between last and current frame.
      Find partitioning threshold T for the frame from its variance
      histogram, and then use T to make partition decisions.
      
      Comparing with fixed 16x16 partitioning, rtc set test showed an
      overall psnr gain of 3.242%, and ssim gain of 3.751%. The best
      psnr gain is 8.653%.
      
      The overall encoding speed didn't change much. It got faster for
      some clips(for example, 12% speedup for vidyo1), and a little
      slower for others.
      
      Also, a minor modification was made in datarate unit test.
      
      Change-Id: Ie290743aa3814e83607b93831b667a2a49d0932c
      9d41313e
    • Jim Bankoski's avatar
      initialize bit buffer structure to avoid warning error · 7a8829f6
      Jim Bankoski authored
      Change-Id: I38bb2801ad3f059d5e2eb6513eec92397c67abcd
      7a8829f6
  3. 29 Jun, 2014 2 commits
  4. 28 Jun, 2014 2 commits
    • James Zern's avatar
      vp9: disable postproc buffer alloc when unnecessary · 44472cde
      James Zern authored
      the buffer is only used in encoding and only when
      CONFIG_INTERNAL_STATS or CONFIG_VP9_POSTPROC is enabled.
      a future change should decouple this from the frame buffer allocation
      and make it conditional based on runtime flags when the above config
      options are enabled.
      reduces decode heap usage by at least 12%
      
      Change-Id: Id0b97620d4936afefa538d3aadf32106743d9caf
      44472cde
    • James Zern's avatar
      Revert "Revert "Revert 3 patches from Hangyu to get Chrome to build:"" · 749e0c7b
      James Zern authored
      This reverts commit b3363561.
      
      This causes a hang in:
      VP9/InvalidFileTest.ReturnCode/3
      
      the change to test/user_priv_test.cc remains with a minor update
      
      Change-Id: I4a8a272ca37ea329b0f413f0b1cd827a238bd9fd
      749e0c7b
  5. 27 Jun, 2014 7 commits
  6. 26 Jun, 2014 7 commits
    • Jingning Han's avatar
      Adaptive txfm size selection depending on residual sse/variance · 5a3e3c6d
      Jingning Han authored
      This commit enables an adaptive transform size selection method
      for speed -6. It uses largest transform size when the sse is more
      than 4 times of variance, i.e., most energy is compacted in the
      DC coefficient. Otherwise, use the default TX_8X8. It improves
      the compression efficiency for rtc set of speed -6 by 0.8%, no
      speed change observed.
      
      Change-Id: Ie6ed1e728ff7bf88ebe940a60811361cdd19969c
      5a3e3c6d
    • Alex Converse's avatar
      Use UV prediction when deciding to skip in for lossless. · aed52718
      Alex Converse authored
      Change-Id: Ic149749157d762039446d14472d40d9211c6451a
      aed52718
    • Pengchong Jin's avatar
      Skip the partition search for the frame with no motion · 12861260
      Pengchong Jin authored
      This patch allows the encoder to skip the partition search for the
      frame if it is an inter frame and only zero motion vectors have
      been detected in the first pass. The partition size is directly
      assigned according to the difference variance.
      
      Borg tests show overall little performance changes in term of PSNR
      (derf -0.027%, yt 0.152%, hd 0.078%, stdhd 0%). The worst case of
      PSNR loss is -0.514% from yt. The best PSNR gain is 4.293% from yt.
      The second pass encoding speedup for slideshow clips is 15%-40%.
      
      Change-Id: I881f347d286553ee5594a9ea09ba1a61ac684045
      12861260
    • Jingning Han's avatar
      Enable real-time version reference motion vector search · 46ea9ec7
      Jingning Han authored
      This commit enables a fast reference motion vector search scheme.
      It checks the nearest top and left neighboring blocks to decide the
      most probable predicted motion vector. If it finds the two have
      the same motion vectors, it then skip finding exterior range for
      the second most probable motion vector, and correspondingly skips
      the check for NEARMV.
      
      The runtime of speed -5 goes down
      pedestrian at 1080p 29377 ms -> 27783 ms
      vidyo at 720p       11830 ms -> 10990 ms
      i.e., 6%-8% speed-up.
      
      For rtc set, the compression performance
      goes down by about -1.3% for both speed -5 and -6.
      
      Change-Id: I2a7794fa99734f739f8b30519ad4dfd511ab91a5
      46ea9ec7
    • Jingning Han's avatar
      Add const mark to const values in non-RD coding mode · 99e25ec4
      Jingning Han authored
      Change-Id: I65209fd1e06fc06833f6647cb028b414391a7017
      99e25ec4
    • Paul Wilkins's avatar
      Fix quality regression for multi arf off case. · 1c27e1f1
      Paul Wilkins authored
      Bug introduced during multiple iterations on: I3831*
      
      gf_group->arf_update_idx[] cannot currently be used
      to select the arf buffer index if buffer flipping on overlays
      is enabled (still currently the case when multi arf OFF).
      
      Change-Id: I4ce9ea08f1dd03ac3ad8b3e27375a91ee1d964dc
      1c27e1f1
    • Jingning Han's avatar
      Make non-RD intra mode search txfm size dependent · 2aa50eaf
      Jingning Han authored
      This commit fixes the potential issue in the non-RD mode decision
      flow that only checks part of the block to estimate the cost. It
      was due to the use of fixed transform size, in replacing the
      largest transform block size. This commit enables per transform
      block cost estimation of the intra prediction mode in the non-RD
      mode decision.
      
      Change-Id: I14ff92065e193e3e731c2bbf7ec89db676f1e132
      2aa50eaf
  7. 25 Jun, 2014 4 commits
    • James Zern's avatar
      vp9cx.mk: move avx c files outside of x86inc block · 75cb82d8
      James Zern authored
      same reasoning as:
      9f3a0dbb vp9_rtcd: correct avx2 references
      
      these are all intrinsics, so don't depend on x86inc.asm
      
      Change-Id: I915beaef318a28f64bfa5469e5efe90e4af5b827
      75cb82d8
    • hkuang's avatar
      Revert "Revert 3 patches from Hangyu to get Chrome to build:" · b3363561
      hkuang authored
      This patch reverts the previous revert from Jim and also add a
      variable user_priv in the FrameWorker to save the user_priv
      passed from the application. In the decoder_get_frame function,
      the user_priv will be binded with the img. This change is needed
      or it will fail the unit test added here:
      https://gerrit.chromium.org/gerrit/#/c/70610/
      
      This reverts commit 9be46e45.
      
      Change-Id: I376d9a12ee196faffdf3c792b59e6137c56132c1
      b3363561
    • Paul Wilkins's avatar
      Dual arf: Name changes. · 9f76c1ec
      Paul Wilkins authored
      Cosmetic patch only in response to comments on
      previous patches suggesting a couple of name changes
      for consistency and clarity.
      
      Change-Id: Ida3a359b0d5755345660d304a7697a3a3686b2a3
      9f76c1ec
    • James Zern's avatar
      vp9: check tile column count · b2b07755
      James Zern authored
      the max is 6. there are assumptions throughout the decode regarding
      this; fixes a crash with a fuzzed bitstream
      
      $ zzuf -s 5861 -r 0.01:0.05 -b 6- \
        < vp90-2-00-quantizer-00.webm.ivf \
        | dd of=invalid-vp90-2-00-quantizer-00.webm.ivf.s5861_r01-05_b6-.ivf \
          bs=1 count=81883
      
      Change-Id: I6af41bb34252e88bc156a4c27c80d505d45f5642
      b2b07755
  8. 24 Jun, 2014 8 commits
    • Alex Converse's avatar
      Allow lossless breakout in non-rd mode decision. · 1409d1e1
      Alex Converse authored
      This is very helpful for large moving windows in screencasts.
      
      Change-Id: I91b5f9acb133281ee85ccd8f843e6bae5cadefca
      1409d1e1
    • Jingning Han's avatar
      Replace cpi->common with preset variable cm · 9e558344
      Jingning Han authored
      This commit replaces a few use cases of cpi->common with preset
      variable cm, to avoid unnecessary pointer fetch in the non-RD
      coding mode.
      
      Change-Id: I4038f1c1a47373b8fd7bc5d69af61346103702f6
      9e558344
    • Jingning Han's avatar
      Add vp9_ prefix to mv_pred and setup_pred_block functions · 85cfae81
      Jingning Han authored
      Make these two functions accessible by both RD and non-RD coding
      modes.
      
      Change-Id: Iecb39dbf3d65436286ea3c7ffaa9920d0b3aff85
      85cfae81
    • Minghai Shang's avatar
      [spatial svc]Don't skip motion search in first pass encoding · 6bebe651
      Minghai Shang authored
      Change-Id: Ia6bcdaf5a5b80e68176f60d8d00e9b5cf3f9bfe3
      6bebe651
    • Minghai Shang's avatar
      [spatial svc]Implement lag in frames for spatial svc · 277338f7
      Minghai Shang authored
      Change-Id: I930dced169c9d53f8044d2754a04332138347409
      277338f7
    • Yunqing Wang's avatar
      Reuse inter prediction result in real-time speed 6 · 0aae1000
      Yunqing Wang authored
      In real-time speed 6, no partition search is done. The inter
      prediction results got from picking mode can be reused in the
      following encoding process. A speed feature reuse_inter_pred_sby
      is added to only enable the resue in speed 6.
      
      This patch doesn't change encoding result. RTC set tests showed
      that the encoding speed gain is 2% - 5%.
      
      Change-Id: I3884780f64ef95dd8be10562926542528713b92c
      0aae1000
    • Adrian Grange's avatar
      Fix test on maximum downscaling limits · 8357292a
      Adrian Grange authored
      There is a normative scaling range of (x1/2, x16)
      for VP9. This patch fixes the maximum downscaling
      tests that are applied in the convolve function.
      
      The code used a maximum downscaling limit of x1/5
      for historic reasons related to the scalable
      coding work. Since the downsampling in this
      application is non-normative it will revert to
      using a separate non-normative scaler.
      
      Change-Id: Ide80ed712cee82fe5cb3c55076ac428295a6019f
      8357292a
    • Paul Wilkins's avatar
      Dual ARF changes: Buffer index selection. · 60244ec1
      Paul Wilkins authored
      Add indirection to the section of buffer indices.
      This is to help simplify things in the future if we
      have other codec features that switch indices.
      
      Limit the max GF interval for static sections to fit
      the gf_group structures.
      
      Change-Id: I38310daaf23fd906004c0e8ee3e99e15570f84cb
      60244ec1