1. 11 May, 2011 - 1 commit
    • Yaowu Xu's avatar
      remove a variable no longer in use · f7cf439b
      Yaowu Xu authored
      The variable is introduced in commit 2e53e9e5 to make more use of
      trellis quantization, but this is no longer necessary after RDMULT
      was made adaptive in a number of later commits.
      
      Change-Id: I7420522ec7723f38cf77033466c25afb405d52ae
      f7cf439b
  2. 10 May, 2011 - 1 commit
  3. 09 May, 2011 - 2 commits
    • Yunqing Wang's avatar
      Use diamond search to replace full search in full-pixel refining search · cb7b1fb1
      Yunqing Wang authored
      In NEWMV mode, currently, full search is used as the refining search
      after n-step search. By replacing it with an iterative diamond search
      of radius 1 largely reduced the computation complexity, but still
      maintained the same encoding quality since the refining search is
      done for every macroblock instead of only a small precentage of
      macroblocks while using full search.
      
      Tests on the test set showed a 3.4% encoding speed increase with none
      psnr & ssim loss.
      
      Change-Id: Ife907d7eb9544d15c34f17dc6e4cfd97cb743d41
      cb7b1fb1
    • Johann's avatar
      clean up unused variable warnings · a7d4d3c5
      Johann authored
      Change-Id: I9467d7a50eac32d8e8f3a2f26db818e47c93c94b
      a7d4d3c5
  4. 06 May, 2011 - 4 commits
    • Yaowu Xu's avatar
      fix a bug related to gf_active_flags in multi-threaded encoder · 89c6017c
      Yaowu Xu authored
      Paul pointed out that the pointer to the gf_active_flags is not being
      properly incremented in multithreaded encoder. This commit fixes the
      issue by making sure the gf_active_ptr points to the starting of next
      group of mb rows.
      
      Change-Id: I3246e657d23beabb614dfb880733a68a5fd7e34c
      89c6017c
    • John Koleszar's avatar
      Don't override active_worst_quality in 2 pass · abc9958c
      John Koleszar authored
      Commit db5057c7 introduced a bug in that the active_worst_quality
      selected by the 2 pass rate controller was being overridden for key
      frames, causing a severe quality loss.
      
      Change-Id: I4865a6fbe3e94e9b4fb9271c7dd68b455d7b371d
      abc9958c
    • Tero Rintaluoma's avatar
      neon fast quantizer updated · 33fa7c4e
      Tero Rintaluoma authored
      vp8_fast_quantize_b_neon function updated and further optimized.
       - match current C implementation of fast quantizer
       - updated to use asm_enc_offsets for structure members
       - updated ads2gas scripts to handle alignment issues
      
      Change-Id: I5cbad9c460ad8ddb35d2970a8684cc620711c56d
      33fa7c4e
    • Aron Rosenberg's avatar
      Fix semaphore emulation on Windows · eeb81173
      Aron Rosenberg authored
      The existing emulation of posix semaphores on Windows uses SetEvent()
      and WaitForSingleObject(), which implements a binary semaphore, not a
      counting semaphore as implemented by posix. This causes deadlock when
      used with the expected posix semantics. Instead, this patch uses the
      CreateSemaphore() and ReleaseSemaphore() calls (introduced in Windows
      2000) which have the expected behavior.
      
      This patch also reverts commit eb16f00c, which split a semaphore that
      was being used with counting semantics into two binary semaphores.
      That commit is unnecessary with corrected emulation.
      
      Change-Id: If400771536a27af4b0c3a31aa4c4e9ced89ce6a0
      eeb81173
  5. 05 May, 2011 - 1 commit
    • Yunqing Wang's avatar
      Fix rare hang in multi-thread encoder on Windows · eb16f00c
      Yunqing Wang authored
      This patch is to fix a rare hang in multi-thread encoder that was
      only seen on Windows. Thanks for John's help in debugging the
      problem. More test is needed.
      
      Change-Id: Idb11c6d344c2082362a032b34c5a602a1eea62fc
      eb16f00c
  6. 04 May, 2011 - 1 commit
  7. 03 May, 2011 - 2 commits
    • Yunqing Wang's avatar
      Modify HEX search · 04ec930a
      Yunqing Wang authored
      Changed 8-neighbor searching to 4-neighour searching, and continued
      searching until the center point is the best match.
      
      Test on test set showed 1.3% encoding speed improvement as well as
      0.1% PSNR and SSIM improvement at speed=-5 (rt mode).
      
      Will continue to improve it.
      
      Change-Id: If4993b1907dd742b906fd3f86fee77cc5932ee9a
      04ec930a
    • Yaowu Xu's avatar
      change to use fast ssim code for internal ssim calculations · 6c565fad
      Yaowu Xu authored
      The commit also removed the slow ssim calculation that uses a 7x7
      kernel, and revised the comments to better describe how sample ssim
      values are computed and averaged
      
      Change-Id: I1d874073cddca00f3c997f4b9a9a3db0aa212276
      6c565fad
  8. 02 May, 2011 - 1 commit
  9. 30 Apr, 2011 - 1 commit
  10. 28 Apr, 2011 - 2 commits
  11. 27 Apr, 2011 - 6 commits
    • Ronald S. Bultje's avatar
      Use psadbw to get the sum of bytes in a line. · 1e7ded69
      Ronald S. Bultje authored
      Thanks Jason for pointing that out on #vp8. ;-).
      
      Change-Id: I5330a753e752a8704b78a409597472628e0b26a5
      1e7ded69
    • Scott LaVarnway's avatar
      Removed unused code in reconinter · 2e102855
      Scott LaVarnway authored
      The skip flag is never set by the encoder for SPLITMV.
      
      Change-Id: I5ae6457edb3a1193cb5b05a6d61772c13b1dc506
      2e102855
    • Ronald S. Bultje's avatar
      SSE2/SSSE3 optimizations for build_predictors_mbuv{,_s}(). · 1083fe49
      Ronald S. Bultje authored
      decoding
      
      before
      10.425
      10.432
      10.423
      =10.426
      
      after:
      10.405
      10.416
      10.398
      =10.406, 0.2% faster
      
      encoding
      
      before
      14.252
      14.331
      14.250
      14.223
      14.241
      14.220
      14.221
      =14.248
      
      after
      14.095
      14.090
      14.085
      14.095
      14.064
      14.081
      14.089
      =14.086, 1.1% faster
      
      Change-Id: I483d3d8f0deda8ad434cea76e16028380722aee2
      1083fe49
    • Yunqing Wang's avatar
      Use insertion sort instead of quick sort · 5abafcc3
      Yunqing Wang authored
      Insertion sort performs better for sorting small arrays. In real-
      time encoding (speed=-5), test on test set showed 1.7% performance
      gain with 0% PSNR change in average.
      
      Change-Id: Ie02eaa6fed662866a937299194c590d41b25bc3d
      5abafcc3
    • John Koleszar's avatar
      Speed up VP8DX_BOOL_DECODER_FILL · 5e1fd413
      John Koleszar authored
      The end-of-buffer check is hoisted out of the inner loop. Gives
      about 0.5% improvement on x86_64.
      
      Change-Id: I8e3ed08af7d33468c5c749af36c2dfa19677f971
      5e1fd413
    • John Koleszar's avatar
      Update VP8DX_BOOL_DECODER_FILL to better detect EOS · 9594370e
      John Koleszar authored
      Allow more reliable detection of truncated bitstreams by being more
      precise with the count of "virtual" bits in the value buffer.
      Specifically, the VP8_LOTS_OF_BITS value is accumulated into count,
      rather than being assigned, which was losing the prior value,
      increasing the required tolerance when testing for the error condition.
      
      Change-Id: Ib5172eaa57323b939c439fff8a8ab5fa38da9b69
      9594370e
  12. 26 Apr, 2011 - 3 commits
    • John Koleszar's avatar
      Refactor calc_iframe_target_size · db5057c7
      John Koleszar authored
      Combine calc_iframe_target_size, previously only used for forced
      keyframes, with calc_auto_iframe_target_size, which handled most
      keyframes.
      
      Change-Id: I227051361cf46727caa5cd2b155752d2c9789364
      db5057c7
    • John Koleszar's avatar
      Move pick_frame_size() to ratectrl.c · 81d2206f
      John Koleszar authored
      This is a first step in cleaning up the redundancies between
      vp8_calc_{auto_,}iframe_target_size. The pick_frame_size() function is
      moved to ratectrl.c, and made to be the primary interface. This means
      that the various calc_*_target_size functions can be made private.
      
      Change-Id: I66a9a62a5f9c23c818015e03f92f3757bf3bb5c8
      81d2206f
    • Scott LaVarnway's avatar
      Test vector mismatch fix · 7a2b9c50
      Scott LaVarnway authored
      Fixed test vector mismatch that was introduced
      in the "Removed dc_diff from MB_MODE_INFO"
      (Ie2b9cdf9e0f4e8b932bbd36e0878c05bffd28931)
      
      Change-Id: I98fa509b418e757b5cdc4baa71202f4168dc14ec
      7a2b9c50
  13. 25 Apr, 2011 - 6 commits
    • Johann's avatar
      remove simpler_lpf · 01527e74
      Johann authored
      the decision to run the regular or simple loopfilter is made outside the
      function and managed with pointers
      
      stop tracking the option in two places. use filter_type exclusively
      
      Change-Id: I39d7b5d1352885efc632c0a94aaf56b72cc2fe15
      01527e74
    • John Koleszar's avatar
      Fix duplicate vp8_compute_frame_size_bounds · fd6da3b2
      John Koleszar authored
      Likely introduced by a bad automatic merge from gerrit.
      
      Change-Id: I0c6dd6ec18809cf9492f524d283fa4a3a8f4088b
      fd6da3b2
    • John Koleszar's avatar
      Remove unused functions · 47bc1c70
      John Koleszar authored
      Remove estimate_min_frame_size() and calc_low_ss_err(), as they are
      never referenced.
      
      Change-Id: I3293363c14ef70b79c4678ca27aa65b345077726
      47bc1c70
    • John Koleszar's avatar
      Limit size of initial keyframe in one-pass. · 454cbc96
      John Koleszar authored
      Rather than using a default size of 1/2 or 3/2 seconds for the first
      frame, use a fraction of the initial buffer level to give the
      application some control.
      
      This will likely undergo further refinement as size limits on key
      frames are currently under discussion on codec-devel@, but this gives
      much better behavior for small buffer sizes as a starting point.
      
      Change-Id: Ieba55b86517b81e51e6f0a9fe27aabba295acab0
      454cbc96
    • John Koleszar's avatar
      Add rc_max_intra_bitrate_pct control · aa926fbd
      John Koleszar authored
      Adds a control to limit the maximum size of a keyframe, as a function of
      the per-frame bitrate. See this thread[1] for more detailed discussion:
      
      [1]: http://groups.google.com/a/webmproject.org/group/codec-devel/browse_thread/thread/271b944a5e47ca38
      
      Change-Id: I7337707642eb8041d1e593efc2edfdf66db02a94
      aa926fbd
    • James Berry's avatar
      bug fix possible keyframe context divide by zero · 8d5ce819
      James Berry authored
      vp8_adjust_key_frame_context() divides by
      estimate_keyframe_frequency() which can
      return 0 in the case where --kf-max-dist=0.
      
      Change-Id: Idfc59653478a0073187cd2aa420e98a321103daa
      8d5ce819
  14. 22 Apr, 2011 - 1 commit
    • Ronald S. Bultje's avatar
      Fix overflow in temporal_filter_apply_sse2(). · 496bcbb0
      Ronald S. Bultje authored
      The accumulator array is an integer array, so use paddd instead of paddw
      to add values to it. Fixes overflows when using large --arnr-maxframes
      (>8) values.
      
      Change-Id: Iad83794caa02400a65f3ab5760f2517e082d66ae
      496bcbb0
  15. 21 Apr, 2011 - 4 commits
    • Adrian Grange's avatar
      Corrected format specifiers in debug print statements · d2a6eb4b
      Adrian Grange authored
      The arguments to these fprintfs are int not long int so
      the format specifier should be "%d" and not "%ld". This
      was writing garbage in the linux build.
      
      Change-Id: I3d2aa8a448d52e6dc08858d825bf394929b47cf3
      d2a6eb4b
    • Johann's avatar
      keep values in registers during quantization · 508ae1b3
      Johann authored
      add an sse4 quantizer so we can use pinsrw/pextrw and keep values in xmm
      registers instead of proxying through the stack. and as long as we're
      bumping up, use some ssse3 instructions in the EOB detection (see ssse3
      fast quantizer)
      pick up about a percent on 32bit and about two on 64bit.
      
      Change-Id: If15abba0e8b037a1d231c0edf33501545c9d9363
      508ae1b3
    • Scott LaVarnway's avatar
      Removed unnecessary frame type checks · 6f6cd3ab
      Scott LaVarnway authored
      ref_frame is set to INTRA_FRAME for keyframes.  The B_PRED
      mode is only used in intra frames.
      
      Change-Id: I9bac8bec7c736300d47994f3cb570329edf11ec0
      6f6cd3ab
    • Scott LaVarnway's avatar
      Removed dc_diff from MB_MODE_INFO · 3698c1f6
      Scott LaVarnway authored
      The dc_diff flag is used to skip loopfiltering.  Instead
      of setting this flag in the decoder/encoder, we now check
      for this condition in the loopfilter.
      
      Change-Id: Ie2b9cdf9e0f4e8b932bbd36e0878c05bffd28931
      3698c1f6
  16. 20 Apr, 2011 - 2 commits
  17. 19 Apr, 2011 - 2 commits
    • John Koleszar's avatar
      Remove unused kf rate variables · ad6a8ca5
      John Koleszar authored
      Remove tot_key_frame_bits and prior_key_frame_size[] as they were
      tracked but never used. Remove intra_frame_target, as it was only
      used to initialize prior_key_frame_size.
      
      Refactor vp8_adjust_key_frame_context() some to remove unnecessary
      calculations.
      
      Change-Id: Icbc2c83d2b90e184be03e6f9679e678f3a4bce8f
      ad6a8ca5
    • Johann's avatar
      modify SAVE_XMM for potential 64bit use · 4a2b684e
      Johann authored
      the win64 abi requires saving and restoring xmm6:xmm15. currently
      SAVE_XMM and RESTORE XMM only allow for saving xmm6:xmm7. allow
      specifying the highest register used and if the stack is unaligned.
      
      Change-Id: Ica5699622ffe3346d3a486f48eef0206c51cf867
      4a2b684e