muslim1977 / libyuv

Automatically exported from code.google.com/p/libyuv
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

NV12 rotate with odd width is slow #464

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
set LIBYUV_WIDTH=1920
set LIBYUV_HEIGHT=1080
set LIBYUV_REPEAT=999
set LIBYUV_FLAGS=-1

out\release\libyuv_unittest --gtest_filter=*NV12Rotate* | findstr OK

NV12Rotate0 (611 ms)
NV12Rotate90 (1838 ms)
NV12Rotate180 (859 ms)
NV12Rotate270 (1854 ms)
NV12Rotate0_Odd (672 ms)
NV12Rotate90_Odd (3818 ms)
NV12Rotate180_Odd (1331 ms)
NV12Rotate270_Odd (3731 ms)
NV12Rotate0_Inverted (656 ms)
NV12Rotate90_Inverted (1802 ms)
NV12Rotate180_Inverted (736 ms)
NV12Rotate270_Inverted (1849 ms)

Original issue reported on code.google.com by fbarch...@chromium.org on 8 Jul 2015 at 10:58

GoogleCodeExporter commented 9 years ago
I420 and the Y channel of NV12 handles odd width.

set LIBYUV_WIDTH=1280
set LIBYUV_HEIGHT=720
set LIBYUV_REPEAT=999
set LIBYUV_FLAGS=-1
out\release\libyuv_unittest --gtest_filter=*I420Rotate90*
libyuvTest.I420Rotate90 (465 ms)
libyuvTest.I420Rotate90_Odd (484 ms)

NV12 still needs odd width support:
out\release\libyuv_unittest --gtest_filter=*NV12Rotate90*  | findms
      OK ] libyuvTest.NV12Rotate90 (484 ms)
      OK ] libyuvTest.NV12Rotate90_Odd (827 ms)

So NV12 case has improved:
set LIBYUV_WIDTH=1920
set LIBYUV_HEIGHT=1080
set LIBYUV_REPEAT=999
set LIBYUV_FLAGS=-1

out\release\libyuv_unittest --gtest_filter=*NV12Rotate* | findstr OK
NV12Rotate0 (390 ms)
NV12Rotate90 (846 ms)
NV12Rotate180 (344 ms)
NV12Rotate270 (860 ms)
NV12Rotate0_Odd (342 ms)
NV12Rotate90_Odd (1536 ms)
NV12Rotate180_Odd (689 ms)
NV12Rotate270_Odd (1512 ms)
NV12Rotate0_Inverted (336 ms)
NV12Rotate90_Inverted (838 ms)
NV12Rotate180_Inverted (343 ms)
NV12Rotate270_Inverted (828 ms)

Original comment by fbarch...@chromium.org on 28 Jul 2015 at 11:09