- 20 Nov, 2015 1 commit
-
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libyuv:524 Review URL: https://codereview.chromium.org/1468523002 .
-
- 19 Nov, 2015 2 commits
-
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libyuv:524 Review URL: https://codereview.chromium.org/1461013002 .
-
Frank Barchard authored
TBR=harrjin@google.com BUG=libyuv:525 Review URL: https://codereview.chromium.org/1461693004 .
-
- 18 Nov, 2015 3 commits
-
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libtyv:525 Review URL: https://codereview.chromium.org/1460723003 .
-
Frank Barchard authored
previously the I411 format used movd to read U, V pixels. But this reads 4 bytes, and can cause a memory exception. pinsrw can be used, but fails on drmemory 1.5, and is slow. So in this change a movzxw is used to read 2 bytes into EBX, then copy to xmm0 with movd. Slightly slower, but no memory exception Was LibYUVConvertTest.I411ToARGB_Opt (577 ms) Now LibYUVConvertTest.I411ToARGB_Opt (608 ms) TBR=harryjin@google.com BUG=libyuv:525 Review URL: https://codereview.chromium.org/1457783004 .
-
Frank Barchard authored
Before I420ToARGB_Opt (594 ms) I422ToARGB_Opt (483 ms) I411ToARGB_Opt (748 ms) *** I444ToARGB_Opt (452 ms) I400ToARGB_Opt (218 ms) After I420ToARGB_Opt (591 ms) I422ToARGB_Opt (454 ms) I411ToARGB_Opt (502 ms) *** I444ToARGB_Opt (441 ms) I400ToARGB_Opt (216 ms) TBR=harryjin@google.com BUG=libyuv:525 Review URL: https://codereview.chromium.org/1459513002 .
-
- 17 Nov, 2015 2 commits
-
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libyuv:524 Review URL: https://codereview.chromium.org/1452083002 .
-
Frank Barchard authored
improves performance on older CPUs where movdqa is faster. TBR=harryjin@google.com BUG=libyuv:492 Review URL: https://codereview.chromium.org/1455463002 .
-
- 14 Nov, 2015 1 commit
-
-
Frank Barchard authored
SSSE3 Note: Google Test filter = *I444ToARGB* [==========] Running 8 tests from 1 test case. [----------] Global test environment set-up. [----------] 8 tests from LibYUVConvertTest [ RUN ] LibYUVConvertTest.I444ToARGB_Any [ OK ] LibYUVConvertTest.I444ToARGB_Any (435 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_Unaligned [ OK ] LibYUVConvertTest.I444ToARGB_Unaligned (418 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_Invert [ OK ] LibYUVConvertTest.I444ToARGB_Invert (417 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_Opt [ OK ] LibYUVConvertTest.I444ToARGB_Opt (411 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_ARGB_Any [ OK ] LibYUVConvertTest.I444ToARGB_ARGB_Any (419 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_ARGB_Unaligned [ OK ] LibYUVConvertTest.I444ToARGB_ARGB_Unaligned (432 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_ARGB_Invert [ OK ] LibYUVConvertTest.I444ToARGB_ARGB_Invert (435 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_ARGB_Opt [ OK ] LibYUVConvertTest.I444ToARGB_ARGB_Opt (421 ms) [----------] 8 tests from LibYUVConvertTest (3389 ms total) AVX2 Note: Google Test filter = *I444ToARGB* [==========] Running 8 tests from 1 test case. [----------] Global test environment set-up. [----------] 8 tests from LibYUVConvertTest [ RUN ] LibYUVConvertTest.I444ToARGB_Any [ OK ] LibYUVConvertTest.I444ToARGB_Any (340 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_Unaligned [ OK ] LibYUVConvertTest.I444ToARGB_Unaligned (325 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_Invert [ OK ] LibYUVConvertTest.I444ToARGB_Invert (316 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_Opt [ OK ] LibYUVConvertTest.I444ToARGB_Opt (316 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_ARGB_Any [ OK ] LibYUVConvertTest.I444ToARGB_ARGB_Any (315 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_ARGB_Unaligned [ OK ] LibYUVConvertTest.I444ToARGB_ARGB_Unaligned (341 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_ARGB_Invert [ OK ] LibYUVConvertTest.I444ToARGB_ARGB_Invert (331 ms) [ RUN ] LibYUVConvertTest.I444ToARGB_ARGB_Opt [ OK ] LibYUVConvertTest.I444ToARGB_ARGB_Opt (329 ms) [----------] 8 tests from LibYUVConvertTest (2615 ms total) TBR=harryjin@google.com BUG=libyuv:492 Review URL: https://codereview.chromium.org/1445893002 .
-
- 13 Nov, 2015 1 commit
-
-
Frank Barchard authored
a prototype function to implement the yuv to rgb with conversion and scale. replace with 1 step function in future version, using same API. R=harryjin@google.com BUG=libyuv:471 Review URL: https://codereview.chromium.org/1421553016 .
-
- 10 Nov, 2015 2 commits
-
-
Frank Barchard authored
the yvu matrix for yuv to rgb had an incorrect entry, affecting yuv to bgra, yuv to abgr and yuv to raw. fix the matrix and reenable avx2 functions. R=harryjin@google.com BUG=libyuv:522 Review URL: https://codereview.chromium.org/1411763004 .
-
Frank Barchard authored
libyuv builds/runs, but when integrated into chromium, produces link errors. unclear why but this disables affected functions. will followup with re-enabling them once the root cause in the runtime error is found. TBR=harryjin@google.com BUG=libyuv:522 Review URL: https://codereview.chromium.org/1427683004 .
-
- 09 Nov, 2015 1 commit
-
-
Frank Barchard authored
disable I422ALPHATOARGBROW_AVX2 I422TOARGBROW_AVX2 I422TORGB24ROW_AVX2 I422TORGBAROW_AVX2 in row.h. SSSE3 versions will be used instead. Short term fix until issue can be resolved. R=harryjin@google.com BUG=libyuv:522 Review URL: https://codereview.chromium.org/1419513009 .
-
- 06 Nov, 2015 1 commit
-
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libyuv:521 Review URL: https://codereview.chromium.org/1429263004 .
-
- 05 Nov, 2015 1 commit
-
-
Frank Barchard authored
On Arm the YVU to RGB conversions move constants into registers. This change does the same for 64 bit intel builds where additional registers are available. The AVX2 saves 3 instructions by because the 2nd argument needs to be a register, so a vmovdqu was avoided. x64 builds using memory: AVX2 I420ToARGB_Opt (3059 ms) SSSE3 I420ToARGB_Opt (3959 ms) Now using registers AVX2 I420ToARGB_Opt (2906 ms) SSSE3 I420ToARGB_Opt (3928 ms) TBR=harryjin@google.com BUG=libyuv:520 Review URL: https://codereview.chromium.org/1407353010 .
-
- 04 Nov, 2015 7 commits
-
-
Frank Barchard authored
using a stripped down gn file from webrtc. BUG=libyuv:411,libyuv:519 R=kjellander@chromium.org Review URL: https://codereview.chromium.org/1417613007 .
-
Frank Barchard authored
Add alpha version of YUV to RGB to neon code for ARMv7 and aarch64. For other YUV to RGB conversions, hoist alpha set to 255 out of loop. TBR=harryjin@google.com BUG=libyuv:516 Review URL: https://codereview.chromium.org/1413763017 .
-
Frank Barchard authored
cpu flags of 1 disables SIMD and uses C. This used to be 0, but the change in auto init behavior means that 0 now means uninitialized, and will cause auto detect to reinit the cpu info. A value of 1 disables the auto init. TBR=harryjin@google.com BUG=none Review URL: https://codereview.chromium.org/1408753004 .
-
Frank Barchard authored
TBR=harryjin@google.com BUG=none Review URL: https://codereview.chromium.org/1412373006 .
-
Frank Barchard authored
R=harryjin@google.com BUG=none Review URL: https://codereview.chromium.org/1429693006 .
-
Frank Barchard authored
in order to compare C and Neon code, a new command line flag is added. historically environment variables controlled cpu features, but on android apk it is easier to pass a command line option to disable cpu optimizations. R=harryjin@google.com BUG=libyuv:516 Review URL: https://codereview.chromium.org/1407193009 .
-
Frank Barchard authored
DSP code is not actually used, only DSPR2. Remove the detect. TBR=harryjin@google.com BUG=none Review URL: https://codereview.chromium.org/1405043008 .
-
- 03 Nov, 2015 1 commit
-
-
Frank Barchard authored
Add unittests that do 1 step conversion vs 2 step conversion. Tests end swapping versions match direct conversions. R=harryjin@google.com BUG=libyuv:518 Review URL: https://codereview.chromium.org/1419103007 .
-
- 02 Nov, 2015 2 commits
-
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libyuv:518 Review URL: https://codereview.chromium.org/1420033004 .
-
Frank Barchard authored
Removes low levels for I420ToBGRA and I420ToRAW and reimplements them as I420ToRGBA and I420ToRGB24 with transposed color matrix. Adds unittests that do 1 step conversion vs 2 steps to test end swapping versions match direct conversions. R=harryjin@google.com BUG=libyuv:518 Review URL: https://codereview.chromium.org/1427993004 .
-
- 30 Oct, 2015 1 commit
-
-
Frank Barchard authored
Using a transposed conversion matrix, I420ToARGB can output ABGR. R=harryjin@google.com, xhwang@chromium.org BUG=libyuv:473 Review URL: https://codereview.chromium.org/1413573010 .
-
- 29 Oct, 2015 1 commit
-
-
Frank Barchard authored
R=harryjin@google.com BUG=libyuv:517 Review URL: https://codereview.chromium.org/1428843003 .
-
- 28 Oct, 2015 2 commits
-
-
Frank Barchard authored
In some methods with 7 arguments gcc fails to find enough registers to compile the assembler code when compiling debug. Simplest solution is to skip the assembler version in debug of those particular functions (I422Alpha -> ARBG/ABGR) R=harryjin@google.com,bratell@opera.com BUG=libyuv:517 Review URL: https://codereview.chromium.org/1423283002 .
-
Frank Barchard authored
R=ajm@chromium.org, ajm@google.com BUG=libyuv:513,webrtc:760 Review URL: https://codereview.chromium.org/1427643003 .
-
- 27 Oct, 2015 3 commits
-
-
Frank Barchard authored
swap U and V and transpose conversion matrix, so I420AlphaToARGB and I420AlphaToABGR share low level code. Having less code with same performance allows more focused optimization for future ARM versions. R=harryjin@google.com TBR=harryjin@chromium.org BUG=libyuv:473,libyuv:516 Review URL: https://codereview.chromium.org/1422263002 .
-
Frank Barchard authored
U contributes to B and G. V contributes to R and G. By swapping U and V, they contribute to the opposite channels. Adjust the matrix so the U contribution is in the matrix location such that it till contribute to the new B channel and vice versa. This allows ABGR versions of YUV conversion to use the same low level code as ARGB, just using a different matrix and swapping U and V pointers. As a result the existing I444ToABGRRow functions are no longer needed and are removed. Previously this function was only Intel AVX2 optimized for Windwos. Now it is also optimized for Arm and GCC. ARMv7 Neon Was LibYUVConvertTest.I444ToABGR_Opt (75971 ms) Now LibYUVConvertTest.I444ToABGR_Opt (3672 ms) 20.6 times faster. R=xhwang@chromium.org BUG=libyuv:515 Review URL: https://codereview.chromium.org/1414133006 .
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libyuv:515 Review URL: https://codereview.chromium.org/1423663007 .
-
- 26 Oct, 2015 1 commit
-
-
Frank Barchard authored
R=harryjin@google.com BUG=libyuv:514 Review URL: https://codereview.chromium.org/1413463004 .
-
- 23 Oct, 2015 1 commit
-
-
Frank Barchard authored
R=harryjin@google.com BUG=libyuv:512 Review URL: https://codereview.chromium.org/1418253002 .
-
- 22 Oct, 2015 4 commits
-
-
Frank Barchard authored
R=harryjin@google.com BUG=libyuv:512 Review URL: https://codereview.chromium.org/1422733003 .
-
Frank Barchard authored
R=harryjin@google.com BUG=libyuv:511 Review URL: https://codereview.chromium.org/1412683005 .
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libyuv:510 Review URL: https://codereview.chromium.org/1415583003 .
-
Frank Barchard authored
A bug was introduced on arm when the code for 'any' width switch to a temporary stack buffer and simd. The C version handles odd width by doing 1 pixel, instead of averaging 2. But the SIMD any version is supposed to replicate the last pixel, then the subsampling in Neon will average the pixel with itself, producing the same result. The previous version did this, but only for ARGB 32 bit, which was to avoid introducing issues with subsampled YUY2 source. This CL adds replication for RGB 16 bit values. TBR=harryjin@google.com BUG=libyuv:510 Review URL: https://codereview.chromium.org/1418983003 .
-
- 21 Oct, 2015 2 commits
-
-
Frank Barchard authored
TBR=harryjin@google.com BUG=none Review URL: https://codereview.chromium.org/1415213002 .
-
Frank Barchard authored
The any function for handling ARGBToI411 was not handling the pixel replication correctly. On 422 and odd width was handled by duplicating a pixel of source. 411 needs replication for remainders of 1, 2 or 3 pixels. The C version was handling odd width but with an average of the remainder pixels, which does not match the SIMD 'any' handling off remainder. This changes the odd width handling to mimic the any version. TBR=harryjin@google.com BUG=libyuv:491 Review URL: https://codereview.chromium.org/1411733004 .
-