1. 20 Apr, 2011 2 commits
  2. 19 Apr, 2011 1 commit
    • 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
  3. 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
  4. 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
  5. 13 Apr, 2011 4 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
  6. 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
  7. 11 Apr, 2011 3 commits
  8. 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
  9. 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
  10. 06 Apr, 2011 1 commit
  11. 04 Apr, 2011 2 commits
  12. 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
  13. 30 Mar, 2011 1 commit
  14. 29 Mar, 2011 3 commits
  15. 28 Mar, 2011 1 commit
    • Tero Rintaluoma's avatar
      Half pixel variance further optimized for ARMv6 · f5e43346
      Tero Rintaluoma authored
      Half pixel interpolations optimized in variance calculations. Separate
      function calls to vp8_filter_block2d_bil_x_pass_armv6 are avoided.On
      average, performance improvement is 6-7% for VGA@30fps sequences.
      
      Change-Id: Idb5f118a9d51548e824719d2cfe5be0fa6996628
      f5e43346
  16. 24 Mar, 2011 1 commit
    • Johann's avatar
      use asm_offsets with vp8_regular_quantize_b_sse2 · 8edaf6e2
      Johann authored
      remove helper function and avoid shadowing all the arguments to the
      stack on 64bit systems
      
      when running with --good --cpu-used=0:
      ~2% on linux x86 and x86_64
      ~2% on win32 x86 msys and visual studio
      more on darwin10 x86_64
      significantly more on
      x86_64-win64-vs9
      
      Change-Id: Ib7be12edf511fbf2922f191afd5b33b19a0c4ae6
      8edaf6e2
  17. 21 Mar, 2011 2 commits
    • John Koleszar's avatar
      Remove unused vp8_get4x4sse_cs_mmx declaration · 2cbd9620
      John Koleszar authored
      This declaration did not match the prototype_sad() prototype, but was
      unused in this translation unit, so it is removed instead. Fixes
      issue 290.
      
      Change-Id: I168854f88a85f73ca9aaf61d1e5dc0f43fc3fdb3
      2cbd9620
    • Tero Rintaluoma's avatar
      ARMv6 optimized fdct4x4 · a61785b6
      Tero Rintaluoma authored
      Optimized fdct4x4 (8x4) for ARMv6 instruction set.
        - No interlocks in Cortex-A8 pipeline
        - One interlock cycle in ARM11 pipeline
        - About 2.16 times faster than current C-code compiled with -O3
      
      Change-Id: I60484ecd144365da45bb68a960d30196b59952b8
      a61785b6
  18. 18 Mar, 2011 2 commits
    • Attila Nagy's avatar
      Fix multithreaded encoding for 1 MB wide frame · bfe803bd
      Attila Nagy authored
      Thread synchronization was not correct when frame width was 1 MB.
      Number of allocated encoding threads is limited by the sync_range.
      There is no point having more because each thread lags sync_range MBs
      behind the thread processing the row above.
      
      http://code.google.com/p/webm/issues/detail?id=302
      
      Change-Id: Icaf67a883beecc5ebf2f11e9be47b6997fdf6f26
      bfe803bd
    • John Koleszar's avatar
      Increase static linkage, remove unused functions · 429dc676
      John Koleszar authored
      A large number of functions were defined with external linkage, even
      though they were only used from within one file. This patch changes
      their linkage to static and removes the vp8_ prefix from their names,
      which should make it more obvious to the reader that the function is
      contained within the current translation unit. Functions that were
      not referenced were removed.
      
      These symbols were identified by:
      
        $ nm -A libvpx.a | sort -k3 | uniq -c -f2 | grep ' [A-Z] ' \
          | sort | grep '^ *1 '
      
      Change-Id: I59609f58ab65312012c047036ae1e0634f795779
      429dc676
  19. 15 Mar, 2011 1 commit
  20. 14 Mar, 2011 1 commit
  21. 11 Mar, 2011 2 commits
    • John Koleszar's avatar
      Move build_intra_predictors_mby to RTCD framework · 27972d2c
      John Koleszar authored
      The vp8_build_intra_predictors_mby and vp8_build_intra_predictors_mby_s
      functions had global function pointers rather than using the RTCD
      framework. This can show up as a potential data race with tools such as
      helgrind. See https://bugzilla.mozilla.org/show_bug.cgi?id=640935
      for an example.
      
      Change-Id: I29c407f828ac2bddfc039f852f138de5de888534
      27972d2c
    • Paul Wilkins's avatar
      Clean up of vp8_init_config() · 6e737484
      Paul Wilkins authored
      Clean up vp8_init_config() a bit and remove null pointer case,
      as this code can't be called any more and is not an adequate
      trap anyway, as a null pointer would cause exceptions before
      hitting the test.
      
      Change-Id: I937c00167cc039b3aa3f645f29c319d58ae8d3ee
      6e737484