1. 07 Jul, 2014 3 commits
    • 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
  2. 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
  3. 03 Jul, 2014 1 commit
  4. 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
  5. 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
  6. 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
  7. 29 Jun, 2014 2 commits
  8. 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
  9. 27 Jun, 2014 3 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