watery01 / libyuv

Automatically exported from code.google.com/p/libyuv
0 stars 0 forks source link

YUV upsampler is slow #235

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
set LIBYUV_WIDTH=640
set LIBYUV_HEIGHT=360
set LIBYUV_REPEAT=4000
out\release\libyuv_unittest --gtest_filter=*ScaleTo1366*   |
ScaleTo1366x768_Box (8364 ms)
ScaleTo1366x768_Bilinear (8328 ms)
ScaleTo1366x768_None (5438 ms)
ARGBScaleTo1366x768_Bilinear (3160 ms)
ARGBScaleTo1366x768_None (1910 ms)

Consider specialized upsampler, like ARGB has, and SSSE3 to blend columns.

Original issue reported on code.google.com by fbarch...@google.com on 29 May 2013 at 5:47

GoogleCodeExporter commented 9 years ago
97.4% ScaleFilterCols_C
2.3% InterpolateRow_SSSE3

32 instructions per 2 pixels.
Consider specialized upsampler that does columns into row buffers.

Original comment by fbarch...@google.com on 13 Jun 2013 at 4:12

GoogleCodeExporter commented 9 years ago
3 suggestions:

1. ScaleFilterCols_SSSE3
2. up sampler
3. unify YUV and ARGB Scaler, which supports upsample

Original comment by fbarch...@google.com on 13 Oct 2013 at 3:12

GoogleCodeExporter commented 9 years ago
Done.
Uses SSSE3 for ScaleFilterCols_SSSE3
Upsampler Done.
ARGBScaleTo1366x768_None (1715 ms)
ARGBScaleTo1366x768_Linear (2589 ms)
ARGBScaleTo1366x768_Bilinear (3318 ms)
ScaleTo1366x768_None (3274 ms)
ScaleTo1366x768_Linear (3112 ms)
ScaleTo1366x768_Bilinear (3393 ms)
ScaleTo1366x768_Box (3458 ms)

Original comment by fbarch...@google.com on 19 Nov 2013 at 6:15