1. 03 May, 2011 1 commit
    • 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
  2. 27 Apr, 2011 1 commit
    • 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
  3. 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
  4. 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
  5. 21 Apr, 2011 3 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 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
  6. 20 Apr, 2011 2 commits
  7. 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
  8. 18 Apr, 2011 2 commits
    • Johann's avatar
      Add save/restore xmm registers in x86 assembly code · c7cfde42
      Johann authored
      Went through the code and fixed it. Verified on Windows.
      
      Where possible, remove dependencies on xmm[67]
      
      Current code relies on pushing rbp to the stack to get 16 byte
      alignment. This broke when rbp wasn't pushed
      (vp8/encoder/x86/sad_sse3.asm). Work around this by using unaligned
      memory accesses. Revisit this and the offsets in
      vp8/encoder/x86/sad_sse3.asm in another change to SAVE_XMM.
      
      Change-Id: I5f940994d3ebfd977c3d68446cef20fd78b07877
      c7cfde42
    • Yunqing Wang's avatar
      Use sub-pixel search's SSE in mode selection · b8f0b599
      Yunqing Wang authored
      Passed SSE from sub-pixel search back to pick_inter_mode
      function, which is compared with the encode_breakout to
      see if we could skip evaluating the remaining modes.
      
      Change-Id: I4a86442834f0d1b880a19e21ea52d17d505f941d
      b8f0b599
  9. 14 Apr, 2011 2 commits
    • Yunqing Wang's avatar
      Reduce unnecessary distortion computation · 918fb548
      Yunqing Wang authored
      In vp8_pick_inter_mode(), for NEWMV mode, use the error result got
      from motion search as distortion. This helps performance in real-
      time mode.
      
      Change-Id: I398c4e46cc5381f7d874e748cf78827ef0e0860c
      918fb548
    • Adrian Grange's avatar
      Fix usage of value returned by vp8_pick_intra4x4mby_modes · 8608de1c
      Adrian Grange authored
      The value of distortion2 returned by vp8_pick_intra4x4mby_modes
      was being overwritten by the value returned by get16x16prederror
      before it was tested.
      
      Change-Id: If00e80332b272c5545c3a7e381c8041e8319b41a
      8608de1c
  10. 13 Apr, 2011 5 commits
    • Fritz Koenig's avatar
      Use consistent delimiters. · 33cefd6f
      Fritz Koenig authored
      opsnr.stt file was using \t for delimiters on everything
      except between VPXSSIM and Time.
      
      Change-Id: I6284c4e40c05ff642bf4b0170dca062c279a42df
      33cefd6f
    • Adrian Grange's avatar
      Fixed use of early breakout in vp8_pick_intra4x4mby_modes · 88611746
      Adrian Grange authored
      Index i is used to detect early breakout from the first loop, but
      its value is lost due to reuse in the second for loop. I moved
      the position of the second loop and did some format cleanup.
      
      Change-Id: I02780eae1bd89df4b6c000fb8a018b0837aac2e5
      88611746
    • John Koleszar's avatar
      Refactor lookahead ring buffer · 88841f10
      John Koleszar authored
      This patch cleans up the source buffer storage and copy mechanism to
      allow access through a standard push/pop/peek interface. This approach
      also avoids an extra copy in the case where the source is not a
      multiple of 16, fixing issue #102.
      
      Change-Id: I05808c39f5743625cb4c7af54cc841b9b10fdbd9
      88841f10
    • Johann's avatar
      store quant_shift as an unsigned char · 70f30aa9
      Johann authored
      in encodframe.c, quant_shift is set to 0 or 1 in vp8cx_invert_quant
      
      only use 8 bits to store this, instead of 16. will allow saving an
      xmm register in an updated version of the regular quantize
      
      Change-Id: Ie88c47fe2aff5af0283dab1147fb2791e4b12f90
      70f30aa9
    • John Koleszar's avatar
      Change rc undershoot/overshoot semantics · c99f9d7a
      John Koleszar authored
      This patch changes the rc_undershoot_pct and rc_overshoot_pct controls
      to set the "aggressiveness" of rate adaptation, by limiting the
      amount of difference between the target buffer level and the actual
      buffer level which is applied to the target frame rate for this frame.
      
      This patch was initially provided by arosenberg at logitech.com as
      an attachment to issue #270. It was modified to separate these controls
      from the other unrelated modifications in that patch, as well as to
      use the pre-existing variables rather than introducing new ones.
      
      Change-Id: Id542e3f5667dd92d857d5eabf29878f2fd730a62
      c99f9d7a
  11. 12 Apr, 2011 1 commit
    • John Koleszar's avatar
      Bugfix for error accumulator stats · e689a27d
      John Koleszar authored
      Previous to commit de4e9e3b, there was an early return in the alt-ref
      case that was inadvertantly removed when the function was refactored
      to return void. This patch restores the prior behavior.
      
      Change-Id: I783ffd594a4690297e2742f99526fd7ad67698b2
      e689a27d
  12. 11 Apr, 2011 3 commits
  13. 08 Apr, 2011 2 commits
    • Yunqing Wang's avatar
      Fix input MV for full search · 4b43167a
      Yunqing Wang authored
      Input MV needs to be modified to full-pixel precision.
      
      Change-Id: Ic5d78e41bf27077e325024332b9fe89f76c44f0c
      4b43167a
    • Paul Wilkins's avatar
      Error accumulator stats bug. · de4e9e3b
      Paul Wilkins authored
      The error accumulator stats values cpi->prediction_error and
      cpi->intra_error were being populated with rd values not
      distortion values.
      
      These are only "currently" used in a limited way for RT compress
      key frame detection.
      
      Change-Id: I2702ba1cab6e49ab8dc096ba75b6b34ab3573021
      de4e9e3b
  14. 07 Apr, 2011 3 commits
    • Jim Bankoski's avatar
      fixed an overflow in ssim calculation · d4cdb683
      Jim Bankoski authored
      This commit fixed an overflow in ssim calculation, added register
      save and restore to make sure assembly code working for x64 platform.
      It also changed the sampling points to every 4x4 instead of 8x8 and
      adjusted the constants in SSIM calculation to match the scale of
      previous VPXSSIM.
      
      Change-Id: Ia4dbb8c69eac55812f4662c88ab4653b6720537b
      d4cdb683
    • Johann Koenig's avatar
      use asm_offsets with vp8_fast_quantize_b_sse3 · 08702002
      Johann Koenig authored
      on the same order as the sse2 fast quantize change: ~2%
      except for 32bit. only a slight improvment there.
      
      Change-Id: Iff80e5f1ce7e646eebfdc8871405458ff911986b
      08702002
    • James Berry's avatar
      Use correct 32 bit comparisons for SAD breakout. · aec5487c
      James Berry authored
      Rax updated to eax to avoid uninitialized memory
      usage.
      
      Change-Id: Iedb953f104329ede2a786fc648a47f1be2f3798a
      aec5487c
  15. 06 Apr, 2011 1 commit
  16. 04 Apr, 2011 2 commits
  17. 01 Apr, 2011 3 commits
    • Yunqing Wang's avatar
      Use full-pixel MV in mvsadcost calculation · 3d681581
      Yunqing Wang authored
      MV sad cost error is only used in full-pixel motion search,
      which only need full-pixel resolution instead of quarter-pixel
      resolution. This change reduced mvsadcost table size, and
      removed unneccessary pamameter passing since this table is
      constant once it is generated.
      
      Change-Id: I9f931e55f6abc3c99011321f1dfb2f3562e6f6b0
      3d681581
    • Johann's avatar
      tweak vp8_regular_quantize_b_sse2 · 8520b5c7
      Johann authored
      rather than look up rc in the zig zag table, embed it in the macro. this
      also allows us to shuffle some values in the macro and keep *d in rsi
      
      gains of about the same order as the obj_int_extract implementation: ~2%
      
      Change-Id: Ib7252dd10eee66e0af8b0e567426122781dc053d
      8520b5c7
    • Tero Rintaluoma's avatar
      Wrapper function removed from vp8_subtract_b_neon function call · cec76a36
      Tero Rintaluoma authored
      Address calculations moved from encodemb_arm.c file to neon
      optimized assembly function to save cycles in function calls.
       - vp8_subtract_b_neon_func replaced with vp8_subtract_b_neon
         that contains all needed address calculations
       - unnecessary file encodemb_arm.c removed
       - consistent with ARMv6 optimized version
      
      Change-Id: I6cbc1a2670b56c2077f59995fcf8f70786b4990b
      cec76a36