- 14 Dec, 2017 1 commit
-
-
Frank Barchard authored
Bug: libyuv:765 Test: build for mips still passes Change-Id: I99105ad3951d2210c0793e3b9241c178442fdc37 Reviewed-on: https://chromium-review.googlesource.com/826404Reviewed-by: Weiyong Yao <braveyao@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
-
- 12 Dec, 2017 4 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>
-
Mirko Bonadei authored
Using public_configs, client projects must rely on public_deps to propagate configurations up in the build graph. This is bad because public_deps allows the exposition of headers that live in another target. This can lead to a really unhealthy build. On the other side, all_dependent_configs is automatically propagated up in the build graph but if a target includes a libyuv header it is forced by GN to declare the dependency (and this will propagate libyuv_config). Bug: webrtc:8605, webrtc:8603 Change-Id: I4d71bb5de0b5b62a4ec110349223614f0b98e655 No-Try: True Reviewed-on: https://chromium-review.googlesource.com/822112 Commit-Queue: Mirko Bonadei <mbonadei@chromium.org> Reviewed-by: Patrik Höglund <phoglund@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>
-
- 08 Dec, 2017 1 commit
-
-
Frank Barchard authored
Reduce allocations of row buffers to 1 alloc/free. Do 2 rows at a time to avoid converting U and V planes twice. Bug: libyuv:715 Test: LibYUVConvertTest.H010ToAR30_Opt Change-Id: I2f3a03b4875df5e3b969112a78a1a0b28399fa2f Reviewed-on: https://chromium-review.googlesource.com/816021Reviewed-by: Cheng Wang <wangcheng@google.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>
-
- 05 Dec, 2017 1 commit
-
-
Frank Barchard authored
Add a comment in util/Makefile for how to enable OpenMP for MacOS. Requires updated gcc or clang compile. Bug: None Test: /usr/local/bin/g++-7 -msse2 -O3 -fopenmp -static-libgcc -o psnr_omp psnr.cc ssim.cc psnr_main.cc Change-Id: Icb3389bf8cf94f09a185fea055c69823b9fbc66b time ./psnr_omp -ssim -s 1920 1080 ~/test/garden2_mp4.yuv ~/test/garden2_ogv.yuv Reviewed-on: https://chromium-review.googlesource.com/807546Reviewed-by: Weiyong Yao <braveyao@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
-
- 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>
-
- 27 Nov, 2017 1 commit
-
-
Lei Zhang authored
This allows the linker to move the variables from the .data section to the .rodata section. Bug: libyuv:254 Test: out/Release/libyuv_unittest --gtest_filter=* --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1 --libyuv_cpu_info=-1 Change-Id: I6998570f1af4337d7b80313d9e18e36aa20d6ec0 Reviewed-on: https://chromium-review.googlesource.com/777033 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>
-
- 20 Nov, 2017 3 commits
-
-
Frank Barchard authored
Bug: libyuv:749 Test: LibYUVBaseTest.TestFourCC Change-Id: Iec378947248840c7e2cd87b1198503f39e7c7258 Reviewed-on: https://chromium-review.googlesource.com/780619Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
-
Frank Barchard authored
Bug: libyuv:749 Test: none Change-Id: Icdfb0ff7bb5886d73498f4d88ca4629b2dc3425c Reviewed-on: https://chromium-review.googlesource.com/780443Reviewed-by: Weiyong Yao <braveyao@chromium.org>
-
Frank Barchard authored
Bug: libyuv:751 Test: none Change-Id: If6d5e7b9c5e6e8d2a272e03ce5a1cc199ef364ca Reviewed-on: https://chromium-review.googlesource.com/779980Reviewed-by: Weiyong Yao <braveyao@chromium.org> Reviewed-by: Frank Barchard <fbarchard@google.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>
-
- 16 Nov, 2017 1 commit
-
-
Frank Barchard authored
Tests ScalePlane vs ScalePlane_16 match. Bug: libyuv:749 Test: LibYUVScaleTest.ScalePlaneDownBy4_Box_16 Change-Id: I3f71748da404982d5d48bfb11bbd3ae95a1d021c Reviewed-on: https://chromium-review.googlesource.com/765045Reviewed-by: Frank Barchard <fbarchard@google.com> Reviewed-by: richard winterton <rrwinterton@gmail.com> Reviewed-by: Weiyong Yao <braveyao@chromium.org>
-
- 15 Nov, 2017 1 commit
-
-
Frank Barchard authored
The unittest compares the results of 8 and 16 bit scaling and expects them to be the same. This CL makes the 16 bit scaling filter logic match. Bug: libyuv:749 Test: LibYUVScaleTest.DISABLED_ScaleDownBy4_Linear_16 Change-Id: Ifb3ca4d770ef38f9f16abe9b9aeb843b779bf371 Reviewed-on: https://chromium-review.googlesource.com/772370Reviewed-by: Weiyong Yao <braveyao@chromium.org> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
- 10 Nov, 2017 3 commits
-
-
Frank Barchard authored
clang-format does nested indents for macros that dont end with ; example: align_buffer_page_end(dst_y_8, dst_y_plane_size) align_buffer_page_end(dst_u_8, dst_uv_plane_size) align_buffer_page_end(dst_v_8, dst_uv_plane_size) align_buffer_page_end(dst_y_16, dst_y_plane_size * 2) align_buffer_page_end(dst_u_16, dst_uv_plane_size * 2) align_buffer_page_end(dst_v_16, dst_uv_plane_size * 2) use a similar allocator to the one used within libyuv in row.h which makes the caller add ; align_buffer_page_end(dst_y_8, dst_y_plane_size); align_buffer_page_end(dst_u_8, dst_uv_plane_size); align_buffer_page_end(dst_v_8, dst_uv_plane_size); align_buffer_page_end(dst_y_16, dst_y_plane_size * 2); align_buffer_page_end(dst_u_16, dst_uv_plane_size * 2); align_buffer_page_end(dst_v_16, dst_uv_plane_size * 2); Bug: libyuv:758 Test: try bots Change-Id: I4a0770707e7053e094a37bbfc3c5884d5663d078 Reviewed-on: https://chromium-review.googlesource.com/762757Reviewed-by: Patrik Höglund <phoglund@chromium.org> Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
Frank Barchard authored
When converting from lsb 10 bit formats to msb, the values need to be shifted to the top 10 bits. Using a multiply allows the different numbers of bits to be copied: // 128 = 9 bits // 64 = 10 bits // 16 = 12 bits // 1 = 16 bits Bug: libyuv:751 Test: LibYUVPlanarTest.MultiplyRow_16_Opt Change-Id: I9cf226053a164baa14155215cb175065b1c4f169 Reviewed-on: https://chromium-review.googlesource.com/762951Reviewed-by: richard winterton <rrwinterton@gmail.com> Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
Frank Barchard authored
Instead of hardcoded shift, use a multiply by a parameter. 128 = 9 bits 64 = 10 bits 16 = 12 bits 1 = 16 bits Bug: libyuv:751 Test: LibYUVPlanarTest.MergeUV10Row_Opt Change-Id: Id925edfdbf91243370c90641b50eb8e7625ec329 Reviewed-on: https://chromium-review.googlesource.com/762523Reviewed-by: richard winterton <rrwinterton@gmail.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
- 09 Nov, 2017 2 commits
-
-
Frank Barchard authored
Bug: libyuv:756 Test: CFLAGS="-m32 -static -std=gnu89 -mno-sse -O2" CXXFLAGS="-m32 -x c -static -std=gnu99 -mno-sse -O2" make -f linux.mk libyuv.a Change-Id: Ic362f93e01ccbb0bea14f361a58585e79297e7d2 Reviewed-on: https://chromium-review.googlesource.com/759423Reviewed-by: Frank Barchard <fbarchard@google.com> Reviewed-by: Patrik Höglund <phoglund@chromium.org> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
Frank Barchard authored
clang does not require -msse2 or -msse for inline, except the "x" parameter. So change this to "m" for 32 bit. 64 bit requires sse2 so use "x" for 64 bit. gcc requires -msse for xmm registers in clobber list. Reduce compiler requirement from -msse2 to -msse for enabling assembly. Bug: libyuv:754, libyuv:757 Test: CC=clang CXX=clang++ CFLAGS="-m32" CXXFLAGS="-m32 -mno-sse -O2" make -f linux.mk Change-Id: I86df72cfee80b7d349561c1fd7c97ad360767255 Reviewed-on: https://chromium-review.googlesource.com/759303Reviewed-by: richard winterton <rrwinterton@gmail.com> Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
- 08 Nov, 2017 3 commits
-
-
Frank Barchard authored
cleanup to remove ifdefs around functions affected by a clang bug. gn gen out/Release "--args=is_debug=false target_os=\"android\" target_cpu=\"mips64el\" mips_arch_variant=\"r6\" mips_use_msa=true is_component_build=true is_clang=true" ninja -v -C out/Release libyuv_unittest Bug: libyuv:634 Test: build for mips with clang Change-Id: I278b368dbb2fe89082240e280267d0a27a214c78 Reviewed-on: https://chromium-review.googlesource.com/757980Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
Frank Barchard authored
This reverts commit 01e994d7. Change-Id: Ie76710d0f4e641e071889c5125fd3be23cdcdb59 Reviewed-on: https://chromium-review.googlesource.com/758499Reviewed-by: Frank Barchard <fbarchard@google.com>
-
Frank Barchard authored
Bug: libyuv:754 Test: CC=clang CXX=clang++ CFLAGS="-m32" CXXFLAGS="-m32 -mno-sse -O2" make -f linux.mk Change-Id: I74bf8d032013694e65ea7637bc38d3253db53ff2 Reviewed-on: https://chromium-review.googlesource.com/758043Reviewed-by: Frank Barchard <fbarchard@google.com>
-
- 07 Nov, 2017 3 commits
-
-
Frank Barchard authored
Bug: libyuv:755 Test: ~/intelsde/sde -p4p -- out/Release/libyuv_unittest --gtest_filter=LibYUVScaleTest* Change-Id: Ibb0c908c38efc49dc56e86fa54ae7bd48ced02b5 Reviewed-on: https://chromium-review.googlesource.com/756363Reviewed-by: Cheng Wang <wangcheng@google.com>
-
Frank Barchard authored
Key instruction sets added for each microarchitecture: AVX512BW, AVX512VL, AVX512DQ - skylake server or later AVX512_VBMI, AVX512_IFMA - cannon lake or later AVX512_BITALG, AVX512_VBMI2, AVX512_VPOPCNTDQ, AVX512_VNNI, GFNI, VAES, VPCLMULQDQ - ice lake or later Bug: libyuv:752 Test: ~/intelsde/sde -icl -- out/Release/libyuv_unittest --gtest_filter=*Cpu* Change-Id: I9ee28904c90009d66721b9f805a440c5fc2da122 Reviewed-on: https://chromium-review.googlesource.com/755617Reviewed-by: Frank Barchard <fbarchard@google.com> Reviewed-by: richard winterton <rrwinterton@gmail.com>
-
Frank Barchard authored
vmovd is an AVX instruction. This will crash on an older CPU with only SSSE3 but not AVX. Use movd instead. Bug: libyuv:753 Test: ~/intelsde/sde -mrm -- out/Release/libyuv_unittest --gtest_filter=LibYUVCompareTest.BenchmarkHammingDistance_Opt Change-Id: I1fb0026039d5f83d124f5d03fed7dc0d2d723e49 Reviewed-on: https://chromium-review.googlesource.com/756200Reviewed-by: Cheng Wang <wangcheng@google.com> Reviewed-by: richard winterton <rrwinterton@gmail.com>
-
- 03 Nov, 2017 1 commit
-
-
Frank Barchard authored
H010 is 10 bit planar format with 10 bits in lower bits. P010 is 10 bit biplanar format with 10 bits in upper bits. This function weaves the U and V channels and shifts the bits into the upper bits. Bug: libyuv:751 Test: LibYUVPlanarTest.MergeUV10Row_Opt Change-Id: I4a0bac0ef1ff95aa1b8d68261ec8e8e86f2d1fbf Reviewed-on: https://chromium-review.googlesource.com/752692Reviewed-by: Cheng Wang <wangcheng@google.com> Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
- 02 Nov, 2017 1 commit
-
-
Frank Barchard authored
Bug: None Test: None Change-Id: Ie7cab948b7e879b08e5e5efaae008977513a0a80 Reviewed-on: https://chromium-review.googlesource.com/749895 Commit-Queue: Frank Barchard <fbarchard@google.com> Reviewed-by: Patrik Höglund <phoglund@chromium.org>
-
- 01 Nov, 2017 1 commit
-
-
Frank Barchard authored
Bug: libyuv:750 Test: build with WITH_TIDY=1 Change-Id: I09b7c24f52d0daa72fe7d1928d11a56208526bd1 Reviewed-on: https://chromium-review.googlesource.com/748307Reviewed-by: Patrik Höglund <phoglund@chromium.org>
-
- 31 Oct, 2017 2 commits
-
-
Frank Barchard authored
Bug: libyuv:701 Test: objdump to confirm code gen Change-Id: Ibdcb2cc6bc9bf14b4ccb874c49fc9ff664650e1a Reviewed-on: https://chromium-review.googlesource.com/745390Reviewed-by: Frank Barchard <fbarchard@google.com> Reviewed-by: richard winterton <rrwinterton@gmail.com>
-
Frank Barchard authored
Bug: None Test: lint passes Change-Id: I1fd40d3506bab1f4f9100902f633a9c9e7b96337 Reviewed-on: https://chromium-review.googlesource.com/745038Reviewed-by: Frank Barchard <fbarchard@google.com>
-
- 23 Oct, 2017 1 commit
-
-
Frank Barchard authored
popcnt has a fake dependency on the destination. This assembly avoids the dependency by using a different register for each popcnt. Bug: libyuv:701 Test: LIBYUV_DISABLE_SSSE3=1 out/Release/libyuv_unittest --gtest_filter=*Ham*Opt --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=9999 --libyuv_flags=-1 --libyuv_cpu_info=-1 Change-Id: Ie1d202e2613b7fa8a3c02acd433940e92c80eafa Reviewed-on: https://chromium-review.googlesource.com/731826Reviewed-by: Cheng Wang <wangcheng@google.com> Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
- 19 Oct, 2017 2 commits
-
-
Frank Barchard authored
Bug: libyuv:746 Test: mm cpuid yuvconvert compare psnr libyuv_unittest Change-Id: I08f6d5b519151f274e6baee993eb74950161ef53 Reviewed-on: https://chromium-review.googlesource.com/726749Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-
Frank Barchard authored
Bug: libyuv:747 Test: mm cpuid under android builds Change-Id: I7fff13006b47a59873f29f8992bb3faf9bdb85f1 Reviewed-on: https://chromium-review.googlesource.com/727263 Commit-Queue: Frank Barchard <fbarchard@google.com> Reviewed-by: Frank Barchard <fbarchard@google.com>
-
- 18 Oct, 2017 1 commit
-
-
Frank Barchard authored
Bug: libyuv:746 Test: mm from android repo Change-Id: I7c124acfacc87cc263b19483cea79a63084f3f96 Reviewed-on: https://chromium-review.googlesource.com/724237Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Frank Barchard <fbarchard@google.com>
-