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. 26 Apr, 2011 1 commit
    • 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
  4. 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
  5. 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
  6. 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
  7. 20 Apr, 2011 2 commits
  8. 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
  9. 18 Apr, 2011 3 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
    • Scott LaVarnway's avatar
      Removed unused timers · e1a8b6c8
      Scott LaVarnway authored
      Change-Id: I209803b9dbed2b2f6d02258fd7a3963a6645f4ab
      e1a8b6c8
  10. 15 Apr, 2011 4 commits
    • Yunqing Wang's avatar
      Handle long delay between video frames in multi-thread decoder(issue 312) · 8ba58951
      Yunqing Wang authored
      This is reported by m...@hesotech.de (see issue 312):
      "The decoder causes an access violation
      when you decode the first frame, then make a pause of about
      60 seconds and then decode further frames. But only if
      vpx_codec_dec_cfg_t.threads> 1.
      
      This is caused by a timeout of WaitForSingleObject.
      When I change the definition of VPXINFINITE to INFINITE(0xFFFFFFFF),
      the problem is solved."
      
      Reproduced the crash and verified the changes on Windows platform.
      This brings the behavior inline with the other platforms using sem_wait().
      
      Change-Id: I27b32f90bce05846ef2684b50f7a88f292299da1
      8ba58951
    • Johann's avatar
      remove executable bit · f64f425a
      Johann authored
      source files are not executable
      
      Change-Id: Id2c7294695a22217468426423979f68f02d82340
      f64f425a
    • Johann's avatar
      remove dead code, add missing RESTORE_XMM · 487c0299
      Johann authored
      vp8_filter_block1d16_h4_ssse3 was never called
      
      because UNSHADOW_ARGS moves the stack by 'mov rsp, rbp', the issue was
      masked. however, if/when win64 used those registers for persistant data,
      issues could/will arise.
      
      Change-Id: I56d6effca0aeba1f86082689771cb10145d39651
      487c0299
    • John Koleszar's avatar
      Fix off-by-one in copy_and_extend_plane · a3399291
      John Koleszar authored
      Should only copy h lines, not h+1.
      
      Change-Id: I802a85686635900459c6dc79596189033e5298d8
      a3399291
  11. 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
  12. 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
  13. 12 Apr, 2011 2 commits
    • 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
    • Attila Nagy's avatar
      Fix encoder range check for frame width and height · 1aadcedc
      Attila Nagy authored
      14 bits available in the bistream => valid range [1..16383]
      Removed unused local vars.
      
      Change-Id: Icf3385e47a9fa13af70053129c2248671f285583
      1aadcedc
  14. 11 Apr, 2011 3 commits
  15. 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
  16. 07 Apr, 2011 1 commit
    • 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