1. 28 Apr, 2011 1 commit
  2. 27 Apr, 2011 4 commits
    • 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
    • Ronald S. Bultje's avatar
      SSE2/SSSE3 optimizations for build_predictors_mbuv{,_s}(). · 1083fe49
      Ronald S. Bultje authored
      =10.406, 0.2% faster
      =14.086, 1.1% faster
      Change-Id: I483d3d8f0deda8ad434cea76e16028380722aee2
    • 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
    • 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
  3. 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
      Change-Id: I227051361cf46727caa5cd2b155752d2c9789364
    • 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
    • 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"
      Change-Id: I98fa509b418e757b5cdc4baa71202f4168dc14ec
  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
    • 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
    • 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
    • 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
    • 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
    • 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
  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
  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
    • 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
    • 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
    • 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
  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
      Change-Id: Icbc2c83d2b90e184be03e6f9679e678f3a4bce8f
    • 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
  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
    • 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
    • Scott LaVarnway's avatar
      Removed unused timers · e1a8b6c8
      Scott LaVarnway authored
      Change-Id: I209803b9dbed2b2f6d02258fd7a3963a6645f4ab
  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
    • Johann's avatar
      remove executable bit · f64f425a
      Johann authored
      source files are not executable
      Change-Id: Id2c7294695a22217468426423979f68f02d82340
    • 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
    • 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
  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
    • 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
  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
    • 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
    • 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
    • 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
    • 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
  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
    • 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
  14. 11 Apr, 2011 1 commit