skufog / libyuv

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

I420Copy #176

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
When an image is contiguous, do a single CopyRow() instead of one per row.

Original issue reported on code.google.com by fbarch...@google.com on 16 Jan 2013 at 1:39

GoogleCodeExporter commented 9 years ago
r538 checkes width == stride and does single CopyRow() for full plane.
out\release\libyuv_unittest --gtest_filter=*I420ToI420_* | grep ms
Before
I420ToI420_Any (10768 ms)
I420ToI420_Unaligned (16541 ms)
I420ToI420_Invert (10117 ms)
I420ToI420_Opt (10157 ms)
After
I420ToI420_Any (8900 ms)
I420ToI420_Unaligned (13356 ms)
I420ToI420_Invert (10005 ms)
I420ToI420_Opt (9241 ms)

Original comment by fbarch...@google.com on 16 Jan 2013 at 3:05

GoogleCodeExporter commented 9 years ago
Linux (z430)

LIBYUV_DISABLE_ASM=1 LIBYUV_REPEAT=100000 out/Release/libyuv_unittest 
--gtest_filter=*I420ToI420_* | grep ms
[       OK ] libyuvTest.I420ToI420_Any (10859 ms)
[       OK ] libyuvTest.I420ToI420_Unaligned (10979 ms)
[       OK ] libyuvTest.I420ToI420_Invert (9347 ms)
[       OK ] libyuvTest.I420ToI420_Opt (9134 ms)
[----------] 4 tests from libyuvTest (40319 ms total)

LIBYUV_REPEAT=100000 out/Release/libyuv_unittest --gtest_filter=*I420ToI420_* | 
grep ms
[       OK ] libyuvTest.I420ToI420_Any (10102 ms)
[       OK ] libyuvTest.I420ToI420_Unaligned (13822 ms)
[       OK ] libyuvTest.I420ToI420_Invert (9516 ms)
[       OK ] libyuvTest.I420ToI420_Opt (9004 ms)
[----------] 4 tests from libyuvTest (42444 ms total)
[==========] 4 tests from 1 test case ran. (42444 ms total)

Original comment by fbarch...@google.com on 16 Jan 2013 at 7:18

GoogleCodeExporter commented 9 years ago
r552 avoids memcpy for mjpeg internals - calls CopyPlane, which coalesces rows 
into one copy and optimizes for alignment and cpu

Original comment by fbarch...@chromium.org on 26 Jan 2013 at 7:39

GoogleCodeExporter commented 9 years ago
r555 cleans up memcpy/memset headers/lint.

Original comment by fbarch...@chromium.org on 28 Jan 2013 at 8:05

GoogleCodeExporter commented 9 years ago
r556 uses CopyRow for mips in all instances.
All known issues resolved.

Original comment by fbarch...@chromium.org on 28 Jan 2013 at 11:13