- 08 Jan, 2018 1 commit
-
-
Frank Barchard authored
ABGR output is implemented using the same source code as ARGB, by swapping the u and v and supplying the mirrored conversion matrix. ABGR format (RGBA in memory) is popular on Android. Bug: libyuv:751 Test: H010ToABGR, I010ToABGR and I010ToARGB unittests Change-Id: I0b5103628c58dcb22a6442c03814d4d5972e0339 Reviewed-on: https://chromium-review.googlesource.com/852985 Commit-Queue: Miguel Casas <mcasas@chromium.org> Reviewed-by:
Miguel Casas <mcasas@chromium.org> Reviewed-by:
Frank Barchard <fbarchard@chromium.org>
-
- 05 Jan, 2018 1 commit
-
-
Frank Barchard authored
A sanity check that H010ToARGB is doing the correct math. The normal test only checks the C and ASM match, but they could both be wrong, or the common code could be wrong. This test checks a grey scale ramp matches expected results. Bug: libyuv:751 Test: LibYUVConvertTest.TestH420ToARGB and LibYUVConvertTest.TestH010ToARGB Change-Id: Ie8c2b91ac9993f41675c02d0dde9db72d0612450 Reviewed-on: https://chromium-review.googlesource.com/851474Reviewed-by:
Miguel Casas <mcasas@chromium.org> Reviewed-by:
Frank Barchard <fbarchard@chromium.org>
-
- 02 Jan, 2018 1 commit
-
-
Frank Barchard authored
Convert planar 8 bit formats to planar 16 bit formats. Includes msan fix for Convert8To16Row_Opt unittest. I420 is YUV bt.601 8 bits per channel with 420 subsampling. I010 is YUV bt.601 10 bits per channel with 420 subsampling. I is color space - bt.601. The function does no color space conversion so H420ToI010 is aliased to this function as well. 0 = 420 subsampling. The chroma channels are half width / height. 10 = 10 bits per channel, stored in low 10 bits of 16 bit samples. For SSSE3 version: out/Release/libyuv_unittest --gtest_filter=*LibYUVConvertTest.I420ToI010_Opt --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1 --libyuv_cpu_info=-1 [ RUN ] LibYUVConvertTest.I420ToI010_Opt [ OK ] LibYUVConvertTest.I420ToI010_Opt (276 ms) Bug: libyuv:751 Test: LibYUVConvertTest.I420ToI010_Opt Change-Id: I072876ee4fd74a2b74f459b628838bc808f9bdd2 Reviewed-on: https://chromium-review.googlesource.com/846421Reviewed-by:
Miguel Casas <mcasas@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
-
- 20 Dec, 2017 1 commit
-
-
Frank Barchard authored
Most conversion tests exactly match on Intel, so reduce max diff to zero for Intel and leave at 4 for ARM using a macro. TBR=braveyao@chromium.org Bug: libyuv:447 Test: libyuv_unittests pass Change-Id: Ife13a0dd9581b58135b39d95ff1081f74840655c Reviewed-on: https://chromium-review.googlesource.com/832927Reviewed-by:
Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
-
- 19 Dec, 2017 1 commit
-
-
Frank Barchard authored
Initial AR30ToARGB function to allow converion from AR30 to other formats if necessary and/or for testing. Not optimized at this point. Bug: libyuv:751 Test: LibYUVConvertTest.AR30ToARGB_Opt Change-Id: I38ef192315240f3caa7aee0218b38d5e88a2849f Reviewed-on: https://chromium-review.googlesource.com/833025 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
richard winterton <rrwinterton@gmail.com>
-
- 15 Dec, 2017 1 commit
-
-
Frank Barchard authored
Bug: libyuv:751 Test: LibYUVConvertTest.H010ToH010_Opt Change-Id: I996d309040a14193a97d05b62ac0b3e1ad1ee74b Reviewed-on: https://chromium-review.googlesource.com/823445 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
Cheng Wang <wangcheng@google.com> Reviewed-by:
richard winterton <rrwinterton@gmail.com>
-
- 12 Dec, 2017 3 commits
-
-
Frank Barchard authored
For more complete support of AR30 format, add I420ToAR30 allowing the new RGB 10 bit format to be used from standard 8 bit I420 format. Bug: libyuv:751 Test: I420ToAR30 unittest added Change-Id: Ia8b0857447408bd6adab485158ce5f38d6dc2faa Reviewed-on: https://chromium-review.googlesource.com/823243Reviewed-by:
Weiyong Yao <braveyao@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
-
Frank Barchard authored
AR30 is optimized with 3 techniques 1. pmulhuw is used to replicate 8 bits to 10 bits. 2. Two channels are processed at a time. R and B, and A and G. 3. pshufb is used to shift and mask 2 channels of R and B Bug: libyuv:751 Test: ARGBToAR30_Opt Change-Id: I4e62d6caa4df7d0ae80395fa911d3c922b6b897b Reviewed-on: https://chromium-review.googlesource.com/822520Reviewed-by:
richard winterton <rrwinterton@gmail.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
-
Frank Barchard authored
AR30 is optimized with 3 techniques 1. vpmulhuw is used to replicate 8 bits to 10 bits. 2. Two channels are processed at a time. R and B, and A and G. 3. vpshufb is used to shift and mask 2 channels of R and B Red Blue With the 8 bit value in the upper bits, vpmulhuw by (1024+4) will produce a 10 bit value in the low 10 bits of each 16 bit value. This is whats wanted for the blue channel. The red needs to be shifted 4 left, so multiply by (1024+4)*16 for red. Alpha Green Alpha and Green are already in the high bits so vpand can zero out the other bits, keeping just 2 upper bits of alpha and 8 bit green. The same multiplier could be used for Green - (1024+4) putting the 10 bit green in the lsb. Alpha would be a simple multiplier to shift it into position. It wants a gap of 10 above the green. Green is 10 bits, so there are 6 bits in the low short. 4 more are needed, so a multiplier of 4 gets the 2 bits into the upper 16 bits, and then a shift of 4 is a multiply of 16, so (4*16) = 64. Then shift the result left 10 to position the A and G channels. Bug: libyuv:751 Test: ARGBToAR30_Opt Change-Id: Ie4f20dce18203bae7b75acb1fd5232db8a8a4f11 Reviewed-on: https://chromium-review.googlesource.com/820046 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
Cheng Wang <wangcheng@google.com>
-
- 09 Dec, 2017 1 commit
-
-
Frank Barchard authored
Port ARGBToAR30Row_AVX2 to ARGBToAR30Row_SSE2 using same instructions but xmm registers and doing half as many pixels per loop. Bug: libyuv:751 Test: LibYUVConvertTest.ARGBToAR30_Opt Change-Id: Id644e54639133d1caf28ea3cd11ff6ab6891a673 Reviewed-on: https://chromium-review.googlesource.com/817918 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
richard winterton <rrwinterton@gmail.com>
-
- 07 Dec, 2017 1 commit
-
-
Frank Barchard authored
Bug: libyuv:751 Test: LibYUVConvertTest.H010ToARGB_Opt Change-Id: I668d3f3810e59a4fb6611503aae1c8edc7d596e7 Reviewed-on: https://chromium-review.googlesource.com/815015 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
richard winterton <rrwinterton@gmail.com>
-
- 30 Nov, 2017 1 commit
-
-
Frank Barchard authored
Bug: libyuv:762 Test: NV21ToABGR unittest Change-Id: I71448ab83930339083f07eeafccf240c6cb41c48 Reviewed-on: https://chromium-review.googlesource.com/795212 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
Cheng Wang <wangcheng@google.com>
-
- 28 Nov, 2017 1 commit
-
-
Frank Barchard authored
H010ToAR30 uses Convert16To8Row_SSSE3 to convert 10 bit YUV to 8 bit. Then standard YUV conversion can be used. This improves performance on low end CPUs. Future CL will by pass this conversion allowing for 10 bit YUV source, but the function will be useful as a utility for YUV conversions. Bug: libyuv:559, libyuv:751 Test: out/Release/libyuv_unittest --gtest_filter=*H010ToAR30* --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1 --libyuv_cpu_info=-1 Change-Id: I9b3ef22d88a5fd861de4cf1900b4c6e8fd24d0af Reviewed-on: https://chromium-review.googlesource.com/792334 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
Frank Barchard <fbarchard@chromium.org>
-
- 22 Nov, 2017 1 commit
-
-
Frank Barchard authored
This version of the H010ToAR30 provides a 3 step conversion Convert16To8Row_AVX2 H420ToARGB_AVX2 ARGBToAR30_AVX2 Low level function added to convert 16 bit to 8 bit using multiply to adjust 10 bit or other bit depths and then save the upper 16 bits. Bug: libyuv:751 Test: LibYUVPlanarTest.Convert16To8Row_Opt unittest added Change-Id: I9cc576fda8afa1003cb961d03e0e656e0b478f03 Reviewed-on: https://chromium-review.googlesource.com/783554 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
richard winterton <rrwinterton@gmail.com>
-
- 21 Nov, 2017 1 commit
-
-
Frank Barchard authored
Bug: libyuv:751 Test: LibYUVConvertTest.ARGBToAR30_Opt Change-Id: I09c13eb53ba5f1ce1740c013dc587f8300f1d9e0 Reviewed-on: https://chromium-review.googlesource.com/780437 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by:
richard winterton <rrwinterton@gmail.com>
-
- 17 Nov, 2017 1 commit
-
-
Frank Barchard authored
Bug: libyuv:760 Test: LibYUVConvertTest.H420ToRAW_Opt Change-Id: I050385f477309d5db02bb2218088f224c83392ed Reviewed-on: https://chromium-review.googlesource.com/775785 Commit-Queue: Frank Barchard <fbarchard@google.com> Reviewed-by:
Weiyong Yao <braveyao@chromium.org>
-
- 18 Apr, 2017 1 commit
-
-
Frank Barchard authored
Change log: https://chromium.googlesource.com/chromium/src/+log/da7cc8ca4c..ce95e5d83f Full diff: https://chromium.googlesource.com/chromium/src/+/da7cc8ca4c..ce95e5d83f Changed dependencies: * src/base: https://chromium.googlesource.com/chromium/src/base/+log/636a52bf9d..f6489f4fd2 * src/build: https://chromium.googlesource.com/chromium/src/build/+log/15013685bd..bca1cbe2aa * src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/9d4d917abc..9595ed7ed6 * src/testing: https://chromium.googlesource.com/chromium/src/testing/+log/6885521e31..7b3e681f96 * src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/be0a7d2acc..b28b3325f9 * src/third_party/catapult: https://chromium.googlesource.com/external/github.com/catapult-project/catapult.git/+log/49eb11f63e..e8775f0f64 * src/third_party/robolectric/robolectric: https://chromium.googlesource.com/external/robolectric.git/+log/e38b49a12f..2a0b6ba221 * src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/80ce3971a8..5c327d115e * src/tools/gyp: https://chromium.googlesource.com/external/gyp.git/+log/e7079f0e0e..eb296f67da DEPS diff: https://chromium.googlesource.com/chromium/src/+/da7cc8ca4c..ce95e5d83f/DEPS No update to Clang. TBR=kjellander@chromium.org BUG=libyuv:697 Change-Id: I34a5b3302ba369718536b1d0aa664f9b089386ca Reviewed-on: https://chromium-review.googlesource.com/481064Reviewed-by:
Frank Barchard <fbarchard@google.com>
-
- 17 Apr, 2017 1 commit
-
-
Frank Barchard authored
BUG=libyuv:699 TESTED=LibYUVConvertTest.I420ToARGB_RGB565_Opt Change-Id: I87943bcad056fbbe051301f45c7dc0ae0620c837 Reviewed-on: https://chromium-review.googlesource.com/478578Reviewed-by:
Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
- 11 Feb, 2017 1 commit
-
-
Frank Barchard authored
Uses 1 add instead of 2 leas to reduce port pressure on ports 1 and 5 used for SIMD instructions. BUG=libyuv:670 TEST=~/iaca-lin64/bin/iaca.sh -arch HSW out/Release/obj/libyuv/row_gcc.o Change-Id: I3965ee5dcb49941a535efa611b5988d977f5b65c Reviewed-on: https://chromium-review.googlesource.com/433391Reviewed-by:
Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
- 13 Jan, 2017 1 commit
-
-
Frank Barchard authored
add macros to enable/disable code analyst around blocks of code. Normally these macros should not be used, but if performance details are wanted for intel code, enable them around the code and then run via the iaca tool, available on the intel website. BUG=libyuv:670 TEST=~/iaca-lin64/bin/iaca.sh -64 out/Release/libyuv_unittest R=wangcheng@google.com Review-Url: https://codereview.chromium.org/2626193002 .
-
- 11 Jan, 2017 2 commits
-
-
Frank Barchard authored
BUG=libyuv:668 TEST=run unit tests R=fbarchard@google.com Review-Url: https://codereview.chromium.org/2620183002 .
-
Frank Barchard authored
Optimized functions: I444ToARGBRow_DSPR2 I422ToARGB4444Row_DSPR2 I422ToARGB1555Row_DSPR2 NV12ToARGBRow_DSPR2 BGRAToUVRow_DSPR2 BGRAToYRow_DSPR2 ABGRToUVRow_DSPR2 ARGBToYRow_DSPR2 ABGRToYRow_DSPR2 RGBAToUVRow_DSPR2 RGBAToYRow_DSPR2 ARGBToUVRow_DSPR2 RGB24ToARGBRow_DSPR2 RAWToARGBRow_DSPR2 RGB565ToARGBRow_DSPR2 ARGB1555ToARGBRow_DSPR2 ARGB4444ToARGBRow_DSPR2 ScaleAddRow_DSPR2 Bug-fixes in functions: ScaleRowDown2_DSPR2 ScaleRowDown4_DSPR2 BUG= Review-Url: https://codereview.chromium.org/2626123003 .
-
- 08 Nov, 2016 1 commit
-
-
Frank Barchard authored
BUG=libyuv:654 R=kjellander@chromium.org Review URL: https://codereview.chromium.org/2469353005 .
-
- 12 Oct, 2016 1 commit
-
-
Frank Barchard authored
R=kjellander@chromium.org BUG=libyuv:649 Review URL: https://codereview.chromium.org/2414763002 .
-
- 11 Oct, 2016 2 commits
-
-
Frank Barchard authored
YUV 411 is very uncommon format. Remove support. Update documentation to reflect that 411 is deprecated. Simplify tests for YUV to only test with the new side by side YUV but keep old 3 plane test around with a macro for now. BUG=libyuv:645 R=kjellander@chromium.org Review URL: https://codereview.chromium.org/2406123002 .
-
Frank Barchard authored
I420 output can be slow due to multi channel write. Putting the U and V into a single side by side buffer can improve performance. TBR=wangcheng@google.com BUG=None Review URL: https://codereview.chromium.org/2403223003 .
-
- 08 Oct, 2016 1 commit
-
-
Frank Barchard authored
This function is the first step of YUY2 To I420. Provided primarily for diagnostics. TBR=wangcheng@google.com BUG=libyuv:647 TESTED=LibYUVConvertTest.YUY2ToY_Opt Review URL: https://codereview.chromium.org/2399153004 .
-
- 24 Aug, 2016 1 commit
-
-
Frank Barchard authored
The conversion from NV12 and other Bi or Tri planar formats, differs only in the UV handling. The helper function supports passing a NULL for the dst_y channel indicating you only want to do the UV conversion. TBR=harryjin@google.com TEST=LibYUVConvertTest.NV12ToI420_NullY (601 ms) BUG=libyuv:626 Review URL: https://codereview.chromium.org/2276703002 .
-
- 13 Jul, 2016 2 commits
-
-
Frank Barchard authored
BUG=604 Review URL: https://codereview.chromium.org/2146763002 .
-
Frank Barchard authored
to Y,U,V and a pixel stride for U and V. The pixel stride is expected to be 1 or 2. [ RUN ] LibYUVConvertTest.Android420ToI420_1_Any [ OK ] LibYUVConvertTest.Android420ToI420_1_Any (253 ms) [ RUN ] LibYUVConvertTest.Android420ToI420_1_Unaligned [ OK ] LibYUVConvertTest.Android420ToI420_1_Unaligned (250 ms) [ RUN ] LibYUVConvertTest.Android420ToI420_1_Invert [ OK ] LibYUVConvertTest.Android420ToI420_1_Invert (254 ms) [ RUN ] LibYUVConvertTest.Android420ToI420_1_Opt [ OK ] LibYUVConvertTest.Android420ToI420_1_Opt (247 ms) [ RUN ] LibYUVConvertTest.Android420ToI420_2_Any [ OK ] LibYUVConvertTest.Android420ToI420_2_Any (132 ms) [ RUN ] LibYUVConvertTest.Android420ToI420_2_Unaligned [ OK ] LibYUVConvertTest.Android420ToI420_2_Unaligned (122 ms) [ RUN ] LibYUVConvertTest.Android420ToI420_2_Invert [ OK ] LibYUVConvertTest.Android420ToI420_2_Invert (124 ms) [ RUN ] LibYUVConvertTest.Android420ToI420_2_Opt [ OK ] LibYUVConvertTest.Android420ToI420_2_Opt (119 ms) TEST=LibYUVConvertTest.Android420ToI420_Opt BUG=libyuv:604 R=braveyao@chromium.org Review URL: https://codereview.chromium.org/2146733002 .
-
- 12 Jul, 2016 1 commit
-
-
Frank Barchard authored
to Y,U,V and a pixel stride for U and V. The pixel stride is expected to be 1 or 2. TEST=LibYUVConvertTest.Android420ToI420_Opt BUG=libyuv:604 R=braveyao@chromium.org Review URL: https://codereview.chromium.org/2114843002 .
-
- 27 May, 2016 1 commit
-
-
Frank Barchard authored
add SIMD_ALIGNED to unittest header. BUG=libyuv:594 TESTED=local build passes with row.h removed from tests. R=harryjin@google.com Review URL: https://codereview.chromium.org/2001373002 .
-
- 20 Jan, 2016 1 commit
-
-
Frank Barchard authored
When scanning profiles for unexpected _C functions this test function contained the substring. Changing the name will simplify the search. TBR=harryjin@google.com BUG=libyuv:543 Review URL: https://codereview.chromium.org/1602363002 .
-
- 19 Jan, 2016 1 commit
-
-
Frank Barchard authored
When width was odd Y channel wrote an extra pixel. This change splits the Y from UV into a temporary buffer and memcpy's to the destination. Performance is slower. Was YUY2ToNV12_Any (307 ms) YUY2ToNV12_Unaligned (213 ms) TestYUY2ToNV12 (181 ms) YUY2ToNV12_Opt (177 ms) YUY2ToNV12_Invert (177 ms) Npw YUY2ToNV12_Any (300 ms) YUY2ToNV12_Unaligned (226 ms) YUY2ToNV12_Invert (206 ms) TestYUY2ToNV12 (184 ms) YUY2ToNV12_Opt (181 ms) TBR=harryjin@google.com BUG=libyuv:545 Review URL: https://codereview.chromium.org/1593833002 .
-
- 13 Jan, 2016 1 commit
-
-
Frank Barchard authored
R=harryjin@google.com BUG=libyuv:546 Review URL: https://codereview.chromium.org/1574253004 .
-
- 11 Jan, 2016 1 commit
-
-
Frank Barchard authored
use_sysroot=0 is required for webrtc on linux intel builds, but libyuv doesnt use the affected libraries, so removing this. R=harryjin@google.com, sbc@chromium.org BUG=libyuv:534,libyuv:542 Review URL: https://codereview.chromium.org/1566303002 .
-
- 11 Dec, 2015 1 commit
-
-
Frank Barchard authored
remove include from unittest.cc that is already done by unittest.h TBR=harryjin@google.com BUG=libyuv:530 Review URL: https://codereview.chromium.org/1513263004 .
-
- 18 Nov, 2015 1 commit
-
-
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 1 commit
-
-
Frank Barchard authored
TBR=harryjin@google.com BUG=libyuv:524 Review URL: https://codereview.chromium.org/1452083002 .
-
- 10 Nov, 2015 1 commit
-
-
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 .
-