1. 10 Jul, 2014 2 commits
    • hkuang's avatar
      Fix a bug in boundary checking. · 51e9788e
      hkuang authored
      Change-Id: Ifc741da9da6f61c8d3c1f675ec6b8a96570f877d
      51e9788e
    • Yunqing Wang's avatar
      Refactor vp9_diamond_search_sad function · 75cd5750
      Yunqing Wang authored
      Currently, vp9_diamond_search_sadx4() is only called when sse3 is
      enabled, which is improper since sse2 optimization of sdx4df
      functions are available. Changed to always use
      vp9_diamond_search_sadx4().
      
      Change-Id: I4b95d6b7a3c6c645783c373f0ba8d645ece24717
      75cd5750
  2. 09 Jul, 2014 6 commits
    • Yunqing Wang's avatar
      Refactor refining_search_sad code · 30117a57
      Yunqing Wang authored
      There are sse2 optimization of sdx4df functions. Instead of calling
      vp9_refining_search_sadx4 only when sse3 is enabled, call it always.
      
      Change-Id: I24f93818f7d4209d1425039e0eb099ff9ff08fe9
      30117a57
    • Yaowu Xu's avatar
      Minor cleanup · 87cf002e
      Yaowu Xu authored
      Change-Id: I3a3ceeeed489f8b1ccd7199ff97f3fb991bbf5a4
      87cf002e
    • Yunqing Wang's avatar
      Remove repetitive code in mcomp.c · a581da21
      Yunqing Wang authored
      Deleted vp9_find_best_sub_pixel_comp_tree(), and combined it in
      vp9_find_best_sub_pixel_tree().
      
      Change-Id: Ifb25763c8b19822df5537cc1daa76ce88dc3b056
      a581da21
    • Yunqing Wang's avatar
      Adjust full-pixel search method in real-time mode · 9bd3be69
      Yunqing Wang authored
      Use FAST_HEX in speed 5 and 6, which covers more points than
      FAST_DIAMOND and improves motion search quality.
      
      At speed 6, RTC set borg tests showed slight quality gain (psnr
      gain: 0.143%, ssim gain: 0.226%). No noticeable encoding speed
      change.
      
      Change-Id: Ifa62875d9a52ee382ec494f271382bb77d8c67bf
      9bd3be69
    • Yaowu Xu's avatar
      Combined non-rd motion searchs into a single function · c788bceb
      Yaowu Xu authored
      This commit combined the full pel and sub pel motion search into a
      single function to avoid code duplication. The commit does not change
      encoder outputs.
      
      Change-Id: Ibe18342c4f64073bef20f9cf6c6ca0a20d01bf0d
      c788bceb
    • James Zern's avatar
      vp9_decoder_remove: destroy common after thread shutdown · 2e0588bc
      James Zern authored
      in a failure case the threads may still be running and share a reference
      to VP9_COMMON
      
      Change-Id: I867034b4b55f133663b8cbf6ca06e72acf952849
      2e0588bc
  3. 08 Jul, 2014 4 commits
    • Jingning Han's avatar
      Re-design quantization process for 32x32 transform block · 9ad1b9fc
      Jingning Han authored
      This commit enables a new quantization process for 32x32 2D-DCT
      transform coefficient blocks. It improves the compression
      performance of speed 5 by 1.4%. The overall compression gains of
      speed 5 due to the new quantization scheme is 4.7%. It also includes
      the SSSE3 implementation of the 32x32 quantization process.
      
      Change-Id: I0855b124fd6462418683f783f5bcb44255c9993b
      9ad1b9fc
    • Adrian Grange's avatar
      Fix decoder handling of intra-only frames · 7c43fb67
      Adrian Grange authored
      This patch fixes bug 633:
      https://code.google.com/p/webm/issues/detail?id=633
      
      The first decoded frame does not have to be a keyframe,
      it could be an inter-frame that is coded intra-only.
      
      This patch fixes the handling of intra-only frames.
      
      A test vector has also been added that encodes 3
      intra-only frames at the start of the clip. The
      test vector was generated using the code in the
      following patch:
      https://gerrit.chromium.org/gerrit/#/c/70680/
      
      Change-Id: Ib40b1dbf91aae2bc047e23c626eaef09d1860147
      7c43fb67
    • Tim Kopp's avatar
      Vp9 denoiser MC bugfix · 3c86228c
      Tim Kopp authored
      In the previous version, only certain buffers in the macroblockd were saved and
      the restored. In this version, all of the buffers are saved and restored. The
      code was then rolled into a loop for readability.
      
      Also contains a tiny fix for when the -DOUTPUT_YUV_DENOISED flag is used.
      
      Change-Id: Id925ef8b3fa122ae88acfa1d9a1e4df45df83518
      3c86228c
    • Guillaume Martres's avatar
      vp9_cx_iface.c: allow speed greater than 7 · 113dbf8d
      Guillaume Martres authored
      This makes it possible to use --rt --cpu-used=8.
      
      Change-Id: I8b5bc4449b6e05d24d25145e35b4793501268c59
      113dbf8d
  4. 07 Jul, 2014 4 commits
    • hkuang's avatar
      Move vp9_thread.* to common. · 337e8015
      hkuang authored
      Prepare for frame parallel decoding, the reference count buffers
      need to be protected by mutex. Move vp9_thread.* to common
      folder so that those buffers could use cross-platform mutex
      from vp9_thread.*.
      
      Change-Id: I541277cf15eefed6641555944f67f4a0bcdc8154
      337e8015
    • Jingning Han's avatar
      Tune SSSE3 implementation of fast path quantization · 00fc0e3f
      Jingning Han authored
      This commit further simplifies the SSSE3 implementation of the fast
      path quantization process.
      
      Change-Id: I5be3286ec0f1bd81d1cf5be3168fece6384fb9ca
      00fc0e3f
    • Jingning Han's avatar
      Remove an empty line · 3316918b
      Jingning Han authored
      Change-Id: Id6eedc502c86433df1456dd994aee6bc9a1359a2
      3316918b
    • Alex Converse's avatar
      Cleanup motion search speed features. · f60a1178
      Alex Converse authored
      * Replace max_step_search_steps with constant MAX_MVSEARCH_STEPS
      * Fold (reduce_first_step_size + speed > 5) into reduce_first_step_size
        replacing uses of reduce_first_step_size that don't add the speed
        check with zero.
      
      Change-Id: Iae46395dbf3eaca138bf4d18b838a9e364b5a198
      f60a1178
  5. 05 Jul, 2014 1 commit
    • Deb Mukherjee's avatar
      Adds support for reading and writing 10/12-bit y4m · 5820c5d6
      Deb Mukherjee authored
      The y4m extension used is the same as the one used in ffmpeg/x264.
      The patch is adapted from the highbitdepth branch.
      
      Also adds unit tests for y4m header parsing and md5 check
      of the raw frame data, as well as y4m writing.
      
      [build fix for Mac/VS by not using tuples with strings]
      
      Change-Id: I40897ee37d289e4b6cea6fedc67047d692b8cb46
      5820c5d6
  6. 03 Jul, 2014 1 commit
  7. 02 Jul, 2014 12 commits
    • Alex Converse's avatar
      Cleanup vp9_rd. · 15123db7
      Alex Converse authored
      Change-Id: I39a37335ba5b3a969d328afb1f425ddb2cf7ddda
      15123db7
    • Alex Converse's avatar
      Split vp9_rdopt into vp9_rdopt and vp9_rd. · 03c276ea
      Alex Converse authored
      vp9_rdopt is for making rd optimal mode decisions. vp9_rd is for all
      other rd related routines. Anything used outside of making an rd optimal
      decision belongs in rd.
      
      Change-Id: I772a3073f7588bdf139f551fb9810b6864d8e64b
      03c276ea
    • Dmitry Kovalev's avatar
      Cleaning up and simplifying read_frame_stats(). · 4635a2ba
      Dmitry Kovalev authored
      Change-Id: I262ecac02d376de83097bb40f744f5584e987603
      4635a2ba
    • Yunqing Wang's avatar
      Fix rd threshold overflow issue · 3bc11932
      Yunqing Wang authored
      Moved the threshold adjustment before reference flag checking,
      which could set the threshold to INT_MAX for disabled reference
      frame, and cause overflow if the adjustment is done after that.
      
      Change-Id: I85e94f8726d5e3ae93f65965aa978721dddc9957
      3bc11932
    • Tim Kopp's avatar
      VP9 denoiser implemented FILTER_BLOCK case · 03a3ba4a
      Tim Kopp authored
      Renamed updating_running_avg() to filter(). Extended function with the rest of
      the filter procedure. Made all of the empirically-determined constants used in
      VP8 into functions so they can be tweaked more easily.
      
      Change-Id: I41730c8c92370c76885950a43742347477ca4e7e
      03a3ba4a
    • Tim Kopp's avatar
      VP9 denoising enabled by noise_sensitivity param · 9c9922df
      Tim Kopp authored
      As in VP8.
      
      Currently, this parameter is set with the VP8E_SET_NOISE_SENSITIVITY flag.
      The flag was not renamed so that we don't break the interface for webrtc. This
      should probably be changed at some point in the future.
      
      Change-Id: Ic73fcb0dde9d1d019e9d042050b617333ac65472
      9c9922df
    • Tim Kopp's avatar
      Replaced loops with vpx_memcpy() · 49741fee
      Tim Kopp authored
      Change-Id: Icbe05657f0e92c3838e6a5a975f4f82d21328a2e
      49741fee
    • Paul Wilkins's avatar
      Multi-arf: Add code to turn it on and off. · 88307723
      Paul Wilkins authored
      Add test code to turn multi-arf on and off depending
      on group length and zero motion.
      
      Changes to active max group length for mult-arf.
      
      Fund second arf only from normal frame bits.
      
      Change-Id: I920287fac1c886428c15a39f731a25d07c2b796c
      88307723
    • Yaowu Xu's avatar
      Added a speed feature controlling a motion search parameter · 92a6db79
      Yaowu Xu authored
      This commit added a speed feature to control the step_param used in
      full pixel motion search. The intention is to reduced the search
      steps for high speed real time coding.
      
      Change-Id: I21d2f0105c2b647783a6688615da7fcf2b6d670b
      92a6db79
    • Paul Wilkins's avatar
      Adapt strength of AQ2. · adf4293e
      Paul Wilkins authored
      Adapt the use of segmentation in AQ mode 2 based on
      the ambient kf/arf/gf Q.
      
      Disable segmentation where the rate per SB is very
      low and overheads are likely to outweigh the benefits.
      
      This patch reduces the -ve average metrics impact
      of AQ mode 2 while allowing stronger 3 segment AQ
      in some cases. Average improvement ~0.5-1.0%.
      
      Change-Id: I5892dfcc7507c5cc6444531cc7fe17554cf8d0c7
      adf4293e
    • Deb Mukherjee's avatar
      Adds support for reading and writing 10/12-bit y4m · 82dc1332
      Deb Mukherjee authored
      The y4m extension used is the same as the one used in ffmpeg/x264.
      The patch is adapted from the highbitdepth branch.
      
      Also adds unit tests for y4m header parsing and md5 check
      of the raw frame data, as well as y4m writing.
      
      Change-Id: Ie2794daf6dbafd2f128464f9b9da520fc54c0dd6
      82dc1332
    • Jingning Han's avatar
      Re-design quantization process · 9ac2f663
      Jingning Han authored
      This commit re-designs the quantization process for transform
      coefficient blocks of size 4x4 to 16x16. It improves compression
      performance for speed 7 by 3.85%. The SSSE3 version for the
      new quantization process is included.
      
      The average runtime of the 8x8 block quantization is reduced
      from 285 cycles -> 255 cycles, i.e., over 10% faster.
      
      Change-Id: I61278aa02efc70599b962d3314671db5b0446a50
      9ac2f663
  8. 01 Jul, 2014 9 commits
    • Alex Converse's avatar
      Allow lossless skipping in RD mode decision. · 0256a759
      Alex Converse authored
      Change-Id: I2fc4ecfc2dd3ff1dd241a68c9ed4c280291b41f2
      0256a759
    • Pengchong Jin's avatar
      Store/read 16x16 block statistics obtained from the first pass · aaabbd67
      Pengchong Jin authored
      Add a conditional compile flag for this feature. Also add a
      switch to enable the encoder to use these statistics in the
      second pass. Currently, the switch is turned off.
      
      Change-Id: Ia1c858c35ec90e36f19f5cffe156b97ddaa04922
      aaabbd67
    • 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
    • Tim Kopp's avatar
      VP9 denoiser used s/int/enum where appropriate · 1a66dab9
      Tim Kopp authored
      Change-Id: Id52a7869fd1f31bb060de170e3295da7435adb9e
      1a66dab9
    • Tim Kopp's avatar
      Denoised output is now grayscale · 2f71de77
      Tim Kopp authored
      Grayscale is conditionally compiled.
      
      Change-Id: I482ab237560d0bae8d397fd9999e78d38104f2a1
      2f71de77
    • Jim Bankoski's avatar
      validate uv block size when reading partition · abf0df08
      Jim Bankoski authored
      Change-Id: I74fc5f1a7bab3128cdd49441b83ec3a25aee65ca
      abf0df08
    • Yunqing Wang's avatar
      Fix visual studio build issue · 9ba1d60b
      Yunqing Wang authored
      Fixed the signed/unsigned mismatch.
      
      Change-Id: Id83d603b8f1745b71f4cf695a0751e55518b1316
      9ba1d60b
    • James Zern's avatar
      update vp9_thread.[hc] · e656f44c
      James Zern authored
      pull the latest from WebP, which adds a worker interface abstraction
      allowing an application to override init/reset/sync/launch/execute/end
      
      this has the side effect of removing a harmless, but annoying, TSan
      warning.
      
      Original source:
       http://git.chromium.org/webm/libwebp.git
        100644 blob 08ad4e1fecba302bf1247645e84a7d2779956bc3 src/utils/thread.c
        100644 blob 7bd451b124ae3b81596abfbcc823e3cb129d3a38 src/utils/thread.h
      
      Local modifications:
       - s/WebP/VP9/g
       - camelcase functions -> lower with _'s
       - associate '*' with the variable, not the type
      
      Change-Id: I875ac5a74ed873cbcb19a3a100b5e0ca6fcd9aed
      e656f44c
    • 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
  9. 30 Jun, 2014 1 commit
    • 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