1. 27 Jun, 2014 6 commits
    • Yaowu Xu's avatar
      Allow encoder to set lpf level to 0 · d0cb273e
      Yaowu Xu authored
      As a way to speed-up rtc encoding at speed 7.
      
      Change-Id: Ie36a010392cf7b741dc130df21a4e733622a75b7
      d0cb273e
    • Yaowu Xu's avatar
      Added a new speed 7 in rt mode · 3f92b7b9
      Yaowu Xu authored
      To experiment with different speed/quality compromises.
      
      Change-Id: Ia9d4b85243554d620498a327da37c356e752b07f
      3f92b7b9
    • Jim Bankoski's avatar
      Better validation of invalid files · 9f37d149
      Jim Bankoski authored
      This patch checks that a decoder never tries to reference frame that's
      outside the range of 2x to 1/16th the size of this frame.  Any attempt
      to do so causes a failure.
      
      Change-Id: I5c98fa7bb95ac4f29146f29dd92b62fe96164e4c
      9f37d149
    • Tim Kopp's avatar
      fix: Only do spatial SVC when there are > 1 layers · 0299a603
      Tim Kopp authored
      Bug introduced in I930dced169c9d53f8044d2754a04332138347409. If
      svc.number_temporal_layers == 1 and svc.number_spatial_layers == 1, the system
      attempt to do spatial SVC. It no longer does that.
      
      Change-Id: Ie6b130a72b1eea40c547c9a64447e40695f811c5
      0299a603
    • Tim Kopp's avatar
      VP9 denoiser: implemented update_frame_stats() · 52462bf7
      Tim Kopp authored
      Also added reset_frame_stats()
      
      Change-Id: I8e6ca00dbd5fa85cd39485d81c9343c0ff207d6c
      52462bf7
    • Paul Wilkins's avatar
      Multi-arf: Change ref buffer for primary arf. · 1d5223c6
      Paul Wilkins authored
      For the primary arf in a group, if multiple arfs
      are enabled and we were using arfs in the previous
      group, then allow the second arf from the previous
      group to be used as an additional reference.
      
      Change-Id: Iaf41706a52f54ef21548026851cd77100d6aebda
      1d5223c6
  2. 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
  3. 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
  4. 24 Jun, 2014 13 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
    • Paul Wilkins's avatar
      Adjust arf Q limits with multi-arf. · 11b34f1e
      Paul Wilkins authored
      Adjust enforced minimum arf Q deltas for non primary arfs
      in the middle of an arf/gf group.
      
      Change-Id: Ie8034ffb3ac00f887d74ae1586d4cac91d6cace2
      11b34f1e
    • Paul Wilkins's avatar
      Further dual arf changes: multi_arf_allowed. · 9aca602e
      Paul Wilkins authored
      Add multi_arf_allowed flag.
      Re-initialize buffer indices every kf.
      Add some const indicators.
      
      Change-Id: If86c39153517c427182691d2d4d4b7e90594be71
      9aca602e
    • Paul Wilkins's avatar
      Fix some bugs in multi-arf · 8160a26f
      Paul Wilkins authored
      Fix some bugs relating to the use of buffers
      in the overlay frames.
      
      Fix bug where a mid sequence overlay was
      propagating large partition and transform sizes into
      the subsequent frame because of :-
        sf->last_partitioning_redo_frequency  > 1 and
        sf->tx_size_search_method == USE_LARGESTALL
      
      Change-Id: Ibf9ef39a5a5150f8cbdd2c9275abb0316c67873a
      8160a26f
    • Paul Wilkins's avatar
      Clean out old CONFIG_MULTIPLE_ARF code. · 26110225
      Paul Wilkins authored
      Remove the old experimental multi arf code that was under
      the flag CONFIG_MULTIPLE_ARF.
      
      Change-Id: Ib24865abc11691d6ac8cb0434ada1da674368a61
      26110225
    • Paul Wilkins's avatar
      Experiment for mid group second arf. · 2e430cba
      Paul Wilkins authored
      This patch implements a mechanism for inserting a second
      arf at the mid position of arf groups.
      
      It is currently disabled by default using the flag multi_arf_enabled.
      
      Results are currently down somewhat in initial testing if
      multi-arf is enabled. Most of the loss is attributable to the
      fact that code to preserve the previous golden frame
      (in the arf buffer) in cases where we are coding an overlay
      frame, is currently disabled in the multi-arf case.
      
      Change-Id: I1d777318ca09f147db2e8c86d7315fe86168c865
      2e430cba
  5. 23 Jun, 2014 2 commits
    • Adrian Grange's avatar
      Allocate buffers based on correct chroma format · 8c1f071f
      Adrian Grange authored
      The encoder currently allocates frame buffers before
      it establishes what the chroma sub-sampling factor is,
      always allocating based on the 4:4:4 format.
      
      This patch detects the chroma format as early as
      possible allowing the encoder to allocate buffers of
      the correct size.
      
      Future patches will change the encoder to allocate
      frame buffers on demand to further reduce the memory
      profile of the encoder and rationalize the buffer
      management in the encoder and decoder.
      
      Change-Id: Ifd41dd96e67d0011719ba40fada0bae74f3a0d57
      8c1f071f
    • Jim Bankoski's avatar
      error check vp9 superframe parsing · c3db2d8b
      Jim Bankoski authored
      This patch insures that the last byte of a chunk that contains a
      valid superframe marker byte,  actually has a proper superframe index.
      If not it returns an error.
      
      As part of doing that the file : vp90-2-15-fuzz-flicker.webm now fails
      to decode properly and moves to the invalid file test from the test
      vector suite.
      
      Change-Id: I5f1da7eb37282ec0c6394df5c73251a2df9c1744
      c3db2d8b
  6. 21 Jun, 2014 1 commit
    • Jim Bankoski's avatar
      Revert 3 patches from Hangyu to get Chrome to build: · 9be46e45
      Jim Bankoski authored
      Avoids failures:
      MSE_ClearKey/EncryptedMediaTest.Playback_VP9Video_WebM/0
      MSE_ClearKey_Prefixed/EncryptedMediaTest.Playback_VP9Video_WebM/0
      MSE_ExternalClearKey_Prefixed/EncryptedMediaTest.Playback_VP9Video_WebM/0
      MSE_ExternalClearKey/EncryptedMediaTest.Playback_VP9Video_WebM/0
      MSE_ExternalClearKeyDecryptOnly/EncryptedMediaTest.Playback_VP9Video_WebM/0
      MSE_ExternalClearKeyDecryptOnly_Prefixed/EncryptedMediaTest.Playback_VP9Video_WebM/0
      SRC_ExternalClearKey/EncryptedMediaTest.Playback_VP9Video_WebM/0
      SRC_ExternalClearKey_Prefixed/EncryptedMediaTest.Playback_VP9Video_WebM/0
      SRC_ClearKey_Prefixed/EncryptedMediaTest.Playback_VP9Video_WebM/0
      
      Patches are
      This reverts commit 9bc04085
      This reverts commit 6f5aba06
      This reverts commit 9bc04085
      
      I1f250441	Revert "Refactor the vp9_get_frame code for frame parallel."
      Ibfdddce5	Revert "Delay decreasing reference count in frame-parallel decoding."
      I00ce6771	Revert "Introduce FrameWorker for decoding."
      
      Need better testing in libvpx for these commits
      
      Change-Id: Ifa1f279b0cabf4b47c051ec26018f9301c1e130e
      9be46e45
  7. 20 Jun, 2014 7 commits