1. 10 Jul, 2014 1 commit
    • James Zern's avatar
      tests: add API_REGISTER_STATE_CHECK · 29e1b1a4
      James Zern authored
      used to wrap API functions to ensure full environment consistency as
      opposed to the renamed ASM_REGISTER_STATE_CHECK which is used with
      assembly functions.
      currently checks the FPU tag word in x86/x86_64 gcc builds to ensure
      emms has been called.
      
      Change-Id: Ie241772dbf903d33d516a1add4c8c6783f2e1490
      29e1b1a4
  2. 10 Jun, 2014 1 commit
  3. 27 May, 2014 1 commit
  4. 23 May, 2014 1 commit
    • Yaowu Xu's avatar
      Use extreme values for input in convovle tests · 077144d2
      Yaowu Xu authored
      The intepolation filter functions can be better tested withe extreme
      values, especially given the optimization functions are prone to
      overflow signed 16 bit intermediate value when operation order is
      wrong.
      
      Change-Id: I712142b0bc1e5969c692c0486a57ffa37c9742b5
      077144d2
  5. 14 May, 2014 1 commit
  6. 12 May, 2014 1 commit
  7. 21 Apr, 2014 1 commit
  8. 24 Jan, 2014 1 commit
  9. 19 Nov, 2013 1 commit
  10. 10 Oct, 2013 1 commit
    • Yunqing Wang's avatar
      SSE2 8-tap sub-pixel filter optimization · 3fb728c7
      Yunqing Wang authored
      To ensure fast encoding/decoding on devices without ssse3 support,
      SSE2 optimization of sub-pixel filters was done. Test using 1080p
      clip showed the decoder speeds were ~70fps with ssse3 filters, ~60fps
      with sse2 filters, and ~15fps with c filters.
      
      Change-Id: Ie2088f87d83a889fba80a613e4d0e287aadd785c
      3fb728c7
  11. 02 Oct, 2013 1 commit
  12. 30 Aug, 2013 1 commit
    • Tero Rintaluoma's avatar
      Fix intermediate height in convolve_c · e326cecf
      Tero Rintaluoma authored
      - Intermediate height was not correct i.e. when block size is 4 and
        y_step_q4 is 6. In this case intermediate height was
        (4*6) >> 4 = 1 and vertical interpolation needs two source pixels
        plus 7 extra pixels for taps.
      - Also if the current output block is 16x16 and we are using 4x upscaling
        we need only 12 rows after horizontal filtering instead of 16.
      
        Patch Set 2: Intermediate_height updated after CL 66723
                     "Fix bug in convolution functions (filter selection)"
      
      Change-Id: I5a1a1bc2ac9d5edb3a6e0818de618bf318fdd589
      e326cecf
  13. 23 Aug, 2013 1 commit
    • Adrian Grange's avatar
      Fix bug in convolution functions (filter selection) · 3f108313
      Adrian Grange authored
      (In response to Issue 604:
       https://code.google.com/p/webm/issues/detail?id=604)
      
      There were bugs in the convolution code for two cases:
      
      1. Where the filter table was assumed to be aligned to a
         256 byte boundary. The offset of the pixel in the
         source buffer was computed incorrectly.
      
      2. Where no such alignment assumption was made. An
         incorrect address for the filter table base was used.
      
      To fix both problems, I now assume that the filter table is
      256-byte aligned and modify the pixel offset calculation to
      match.
      
      A later patch should remove the restriction that the filter
      table is aligned to a 256-byte boundary.
      
      There was also a bug in the ConvolveTest unit test
      (convolve_test.cc).
      
      (Bug & initial fix suggestion submitted by Tero Rintaluoma
      and Sami Pietilä).
      
      Change-Id: I71985551e62846e55e40de9e7e3959d4805baa82
      3f108313
  14. 05 Aug, 2013 1 commit
    • Jim Bankoski's avatar
      Begin to restrict x86inc.asm usage · c3809f3d
      Jim Bankoski authored
      Chromium does not support 32bit builds for Mac which use x86inc.asm.
      Make the files which include it work if 64bit or not PIC enabled
      starting with vp9_copy_sse2.asm
      
      Consolidate these targets in vp9_rtcd_defs.sh
      
      Change-Id: If18f0b957a611efd085a3ee7d245cf1eb91e8248
      c3809f3d
  15. 17 Jul, 2013 1 commit
    • Johann's avatar
      vp9_convolve8_neon placeholder · 59dc4e9c
      Johann authored
      Call the individually optimized horizontal and vertical functions. This
      implementation abuses the temp buffer.
      
      This will be replaced with a custom optimized function.
      
      Over 2x speedup.
      
      Change-Id: I5b908d2a73d264e9810d6022bbff73207a3055dd
      59dc4e9c
  16. 12 Jul, 2013 1 commit
    • Johann's avatar
      vp9_convolve8_[horiz|vert]_avg · a15bebfc
      Johann authored
      Super basic conversion from the other implementations. Any changes to
      one should be trivial to copy over keep in sync.
      
      Change-Id: I1720b4128e0aba4b2779e3761f6494f8a09d3ea8
      a15bebfc
  17. 11 Jul, 2013 2 commits
  18. 18 Jun, 2013 1 commit
  19. 10 Jun, 2013 1 commit
    • Deb Mukherjee's avatar
      Cosmetic cleanups of filters · 995ce523
      Deb Mukherjee authored
      No bitstream change.
      
      Removes unused filters and the code for the case of 2 switchable filters;
      also changes the 8tap-smooth filter coefficients for integer shifts to be
      interpolating to be consistent with the way it is implemented currently.
      
      Change-Id: I96c542fd8c06f4e0df507a645976f58e6de92aae
      995ce523
  20. 03 May, 2013 1 commit
  21. 02 May, 2013 1 commit
    • James Zern's avatar
      convolve_test: remove unnecessary memset · b0e5775e
      James Zern authored
      input_ is filled with random values just afterward.
      the size was wrong anyway as input_ is allocated with memalign so
      sizeof(input_)==sizeof(uint8_t*)
      
      Change-Id: I014b832ac60960cd22b6f369dbc9fd648d4055b5
      b0e5775e
  22. 18 Apr, 2013 1 commit
    • John Koleszar's avatar
      convolve: support larger blocks, fix asm saturation bug · a9ebbcc3
      John Koleszar authored
      Updates the common convoloution code to support blocks larger than
      16x16, and rectangular blocks. This uncovered a bug in the SSSE3
      filtering routines due to the order of application of saturation.
      This commit fixes that bug, adjusts the unit test to bias its
      random values towards the extremes, and adds a test to ensure that
      all filters conform to the expected pairwise addition structure.
      
      Change-Id: I81f69668b1de0de5a8ed43f0643845641525c8f0
      a9ebbcc3
  23. 27 Feb, 2013 3 commits
    • John Koleszar's avatar
      convolve test: validate 1D filters are 1D · 04c24078
      John Koleszar authored
      Since the 8-tap lowpass filter is non-interpolating, the results are
      different between applying it at whole-pel values and not. This
      means that 1D-only versions are requried to be implemented, as
      opposed to being an optimization of the 2D case. Calling the 2D
      filter instead of the horizontal-only filter is not equivalent
      in this case. Update the test to pass invalid filters to the
      unused stage of the 1D-only calls, to verify they're unused.
      
      Change-Id: Idc1c490f059adadd4cc80dbe770c1ccefe628b0a
      04c24078
    • John Koleszar's avatar
      Run all filters through convolve test · 557a1b20
      John Koleszar authored
      Updates the convolve test to verify that all filters match the
      reference implementation. This verifies commit 30f866f4, which
      fixed some problems with the SSE3 version of the filters for
      the vp9_sub_pel_filters_8s and vp9_sub_pel_filters_8lp banks
      due to overflow and order of operations.
      
      Change-Id: I6b5fe1a41bc20062e2e64633b1355ae58c9c592c
      557a1b20
    • John Koleszar's avatar
      Use 256-byte aligned filter tables · 6fd7dd1a
      John Koleszar authored
      This avoids duplicating all the filters twice. Includes fixups to the
      convolve routines and associated tests to make this work.
      
      Change-Id: I922f86021594e55072ddb63b42b2313605db6e00
      6fd7dd1a
  24. 26 Feb, 2013 1 commit
    • John Koleszar's avatar
      Refactor inter recon functions to support scaling · 6a4f708c
      John Koleszar authored
      Ensure that all inter prediction goes through a common code path
      that takes scaling into account. Removes a bunch of duplicate
      1st/2nd predictor code. Also introduces a 16x8 mode for 8x8
      MVs, similar to the 8x4 trick we were doing before. This has an
      unexpected effect with EIGHTTAP_SMOOTH, so it's disabled in that
      case for now.
      
      Change-Id: Ia053e823a8bc616a988a0af30452e1e75a739cba
      6a4f708c
  25. 08 Feb, 2013 1 commit
    • John Koleszar's avatar
      Restore SSSE3 subpixel filters in new convolve framework · 29d47ac8
      John Koleszar authored
      This commit adds the 8 tap SSSE3 subpixel filters back into the code
      underneath the convolve API. The C code is still called for 4x4
      blocks, as well as compound prediction modes. This restores the
      encode performance to be within about 8% of the baseline.
      
      Change-Id: Ife0d81477075ae33c05b53c65003951efdc8b09c
      29d47ac8
  26. 05 Feb, 2013 1 commit
    • John Koleszar's avatar
      Add 8-tap generic convolver · 5ca6a366
      John Koleszar authored
      This commit introduces a new convolution function which will be used to
      replace the existing subpixel interpolation functions. It is much the
      same as the existing functions, but allows for changing the filter
      kernel on a per-pixel basis, and doesn't bake in knowledge of the
      filter to be applied or the size of the resulting block into the
      function name.
      
      Replacing the existing subpel filters will come in a later commit.
      
      Change-Id: Ic9a5615f2f456cb77f96741856fc650d6d78bb91
      5ca6a366