react-native-vision-camera-spoof-detector 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/README.md +220 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/cache-v2-701700ba4bb2215c1ccd.json +1599 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-9189be15e8b04df8f258.json +857 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-073369af1c5eb367d160.json +185 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json +14 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/directory-libyuv-Debug-68bb497e958fc902f93a.json +100 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/index-2025-11-18T09-41-06-0926.json +92 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-cpuid-Debug-5af24d55c9649a4c3a3f.json +136 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-faceantispoof-Debug-aa45fddb87a8ac2074bb.json +181 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-fastyuv-Debug-4dd5b049ce28a8e070d1.json +182 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv-Debug-b8d5ee3e10a1f31a29fe.json +433 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_common_objects-Debug-ae517204d04beeb2df23.json +522 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_neon64-Debug-2ab157e6b75bcb340b03.json +137 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_shared-Debug-2aecda61b70017f775b5.json +455 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_sme-Debug-73d1e6cc8ef043b4e243.json +126 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_sve-Debug-9d95a17080a7480f85a6.json +104 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuvconstants-Debug-31b06c1ed2b225cf2443.json +136 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuvconvert-Debug-2231dac0a591237abb04.json +157 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.ninja_deps +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.ninja_log +63 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeCache.txt +465 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/CMakeOutput.log +276 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/TargetDirectories.txt +27 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/faceantispoof.dir/48ddb531beec5c42d2f7a5f3aa0b5968/ReactCommon/jsi/jsi/jsi.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/faceantispoof.dir/FaceAntiSpoofJSI.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/fastyuv.dir/FastYuvJni.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/rules.ninja +198 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CPackConfig.cmake +71 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CPackSourceConfig.cmake +79 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/additional_project_files.txt +48 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/android_gradle_build.json +106 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/android_gradle_build_mini.json +87 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/build.ninja +1071 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/build_file_index.txt +3 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/cmake_install.cmake +59 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/compile_commands.json +277 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/compile_commands.json.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/configure_fingerprint.bin +29 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/cpuid.dir/util/cpuid.c.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_jpeg.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_i420.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/cpu_id.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_decoder.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_validate.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/planar_functions.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lasx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_rvv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rgb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rvv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_uv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/video_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_neon64.dir/source/compare_neon64.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_neon64.dir/source/rotate_neon64.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_neon64.dir/source/row_neon64.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_neon64.dir/source/scale_neon64.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_sme.dir/source/rotate_sme.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_sme.dir/source/row_sme.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_sme.dir/source/scale_sme.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_sve.dir/source/row_sve.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuvconstants.dir/util/yuvconstants.c.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuvconvert.dir/util/yuvconvert.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/cmake_install.cmake +87 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/libyuv.a +0 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/metadata_generation_command.txt +19 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/prefab_config.json +4 -0
- package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/symbol_folder_index.txt +1 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/cache-v2-3c91c5cee78e3e904960.json +1587 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-7cc7148edcc0267ae184.json +857 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-3db6484795577cf354b3.json +167 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json +14 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/directory-libyuv-Debug-063ed54195fe25617bc7.json +100 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/index-2025-11-18T09-41-44-0186.json +92 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-cpuid-Debug-a3f2884614434f8f188a.json +150 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-faceantispoof-Debug-c905db8d2a36c2f49235.json +181 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-fastyuv-Debug-e08fb9fb89a090bfee1a.json +190 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuv-Debug-4b1ffa979fbf6ac68418.json +406 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuv_common_objects-Debug-245e248f528e11e2d34d.json +536 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuv_neon-Debug-2ea21009709c7febf67d.json +151 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuv_shared-Debug-e387ee44aace33b18140.json +428 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuvconstants-Debug-14fbb0c58620d35bb155.json +150 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuvconvert-Debug-c40ecea0358b0e737802.json +171 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.ninja_deps +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.ninja_log +59 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeCache.txt +463 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/CMakeOutput.log +268 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/TargetDirectories.txt +25 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/faceantispoof.dir/48ddb531beec5c42d2f7a5f3aa0b5968/ReactCommon/jsi/jsi/jsi.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/faceantispoof.dir/FaceAntiSpoofJSI.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/fastyuv.dir/FastYuvJni.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/rules.ninja +178 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CPackConfig.cmake +71 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CPackSourceConfig.cmake +79 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/additional_project_files.txt +44 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/android_gradle_build.json +96 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/android_gradle_build_mini.json +77 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/build.ninja +1046 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/build_file_index.txt +3 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/cmake_install.cmake +59 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/compile_commands.json +257 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/compile_commands.json.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/configure_fingerprint.bin +29 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/cpuid.dir/util/cpuid.c.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_jpeg.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_i420.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/cpu_id.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_decoder.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_validate.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/planar_functions.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lasx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_rvv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rgb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rvv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_uv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/video_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_neon.dir/source/compare_neon.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_neon.dir/source/rotate_neon.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_neon.dir/source/row_neon.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_neon.dir/source/scale_neon.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuvconstants.dir/util/yuvconstants.c.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuvconvert.dir/util/yuvconvert.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/cmake_install.cmake +87 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/libyuv.a +0 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/metadata_generation_command.txt +19 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/prefab_config.json +4 -0
- package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/symbol_folder_index.txt +1 -0
- package/android/.cxx/Debug/2a3w6u3n/hash_key.txt +26 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/cache-v2-2fe46b6519c8341b1982.json +1587 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/cmakeFiles-v1-a03e763d0c6effec9f6f.json +857 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/codemodel-v2-2412bbfc0c74a0dc613a.json +158 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json +14 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/directory-libyuv-Debug-7cf182a5e476bc9b5f34.json +100 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/index-2025-11-18T09-41-52-0585.json +92 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-cpuid-Debug-931d089bced0b77c5070.json +136 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-faceantispoof-Debug-7b58f88faeacc46f961d.json +181 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-fastyuv-Debug-9283b76b8a94ba273122.json +157 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuv-Debug-c270d4a92a15ef45f650.json +368 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuv_common_objects-Debug-ae517204d04beeb2df23.json +522 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuv_shared-Debug-42c6196dd1672984dcd7.json +390 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuvconstants-Debug-7e8432d4753ee3bd592d.json +136 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuvconvert-Debug-2cc934aa605d443ac9a1.json +157 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.ninja_deps +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/.ninja_log +55 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeCache.txt +463 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/CMakeOutput.log +258 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/TargetDirectories.txt +24 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/faceantispoof.dir/FaceAntiSpoofJSI.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/faceantispoof.dir/c9fdc8b0d027394fa06b64ba7ac7706f/react-native/ReactCommon/jsi/jsi/jsi.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/fastyuv.dir/FastYuvJni.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/rules.ninja +168 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CPackConfig.cmake +71 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/CPackSourceConfig.cmake +79 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/additional_project_files.txt +40 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/android_gradle_build.json +91 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/android_gradle_build_mini.json +72 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/build.ninja +945 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/build_file_index.txt +3 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/cmake_install.cmake +59 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/compile_commands.json +237 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/compile_commands.json.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/configure_fingerprint.bin +29 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/cpuid.dir/util/cpuid.c.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_jpeg.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_i420.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/cpu_id.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_decoder.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_validate.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/planar_functions.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lasx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_rvv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rgb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rvv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_uv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/video_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuvconstants.dir/util/yuvconstants.c.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuvconvert.dir/util/yuvconvert.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/cmake_install.cmake +87 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/libyuv.a +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/metadata_generation_command.txt +19 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/prefab_config.json +4 -0
- package/android/.cxx/Debug/2a3w6u3n/x86/symbol_folder_index.txt +1 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/cache-v2-5ca7fb88a80849964189.json +1587 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-9871675aa6610f6180ca.json +857 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/codemodel-v2-deb41c72c38c1ff57431.json +158 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json +14 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/directory-libyuv-Debug-edf355e979425c71897d.json +100 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/index-2025-11-18T09-42-00-0374.json +92 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-cpuid-Debug-264b6f675c69e42e8113.json +136 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-faceantispoof-Debug-c95714fd9c4cd04d4222.json +181 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-fastyuv-Debug-80c6b1b5d8e35770dde3.json +157 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuv-Debug-6d3d5c5dcc6bffc18ce6.json +368 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuv_common_objects-Debug-ae517204d04beeb2df23.json +522 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuv_shared-Debug-6e364a075e5b9b47274e.json +390 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuvconstants-Debug-f6a29384c5629faf75f4.json +136 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuvconvert-Debug-dca5f1cf9af89281fc95.json +157 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.ninja_deps +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/.ninja_log +55 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeCache.txt +463 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/CMakeOutput.log +258 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/TargetDirectories.txt +24 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/faceantispoof.dir/FaceAntiSpoofJSI.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/faceantispoof.dir/c9fdc8b0d027394fa06b64ba7ac7706f/react-native/ReactCommon/jsi/jsi/jsi.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/fastyuv.dir/FastYuvJni.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/rules.ninja +168 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CPackConfig.cmake +71 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/CPackSourceConfig.cmake +79 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/additional_project_files.txt +40 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/android_gradle_build.json +91 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/android_gradle_build_mini.json +72 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/build.ninja +945 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/build_file_index.txt +3 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/cmake_install.cmake +59 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/compile_commands.json +237 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/compile_commands.json.bin +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/configure_fingerprint.bin +29 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/cpuid.dir/util/cpuid.c.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_jpeg.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_i420.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/cpu_id.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_decoder.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_validate.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/planar_functions.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lasx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_rvv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_any.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_argb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_gcc.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_lsx.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rgb.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rvv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_uv.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_win.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/video_common.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuvconstants.dir/util/yuvconstants.c.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuvconvert.dir/util/yuvconvert.cc.o +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/cmake_install.cmake +87 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/libyuv.a +0 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/metadata_generation_command.txt +19 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/prefab_config.json +4 -0
- package/android/.cxx/Debug/2a3w6u3n/x86_64/symbol_folder_index.txt +1 -0
- package/android/.cxx/tools/debug/arm64-v8a/compile_commands.json +277 -0
- package/android/.cxx/tools/debug/armeabi-v7a/compile_commands.json +257 -0
- package/android/.cxx/tools/debug/x86/compile_commands.json +237 -0
- package/android/.cxx/tools/debug/x86_64/compile_commands.json +237 -0
- package/android/build/.transforms/477a48f41cbd60a6044ae2b6659edb2d/results.bin +1 -0
- package/android/build/.transforms/477a48f41cbd60a6044ae2b6659edb2d/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/results.bin +1 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/AcceleratorConfig.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/AntiSpoofingResult.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/BuildConfig.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofFrameProcessor.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofModule$Companion.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofModule.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofPackage.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofingAdvanced$Companion.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofingAdvanced.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FastYuv.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/YuvToFloatArrayConverter.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/YuvToRgbConverter.dex +0 -0
- package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/generated/source/buildConfig/debug/com/faceantispoof/BuildConfig.java +14 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +13 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
- package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +1 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/build_command_targets.bat +10 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/build_model.json +199 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/build_stderr_targets.txt +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/build_stdout_targets.txt +63 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/configure_command.bat +19 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/configure_stderr.txt +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/configure_stdout.txt +21 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/generate_cxx_metadata_8656_timing.txt +9 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/metadata_generation_record.json +158 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/build_command_targets.bat +10 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/build_model.json +199 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/build_stderr_targets.txt +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/build_stdout_targets.txt +59 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/configure_command.bat +19 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/configure_stderr.txt +1 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/configure_stdout.txt +19 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/generate_cxx_metadata_8659_timing.txt +9 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/metadata_generation_record.json +158 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/build_command_targets.bat +10 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/build_model.json +199 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/build_stderr_targets.txt +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/build_stdout_targets.txt +55 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/configure_command.bat +19 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/configure_stderr.txt +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/configure_stdout.txt +19 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/generate_cxx_metadata_8659_timing.txt +9 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/metadata_generation_record.json +158 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/build_command_targets.bat +10 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/build_model.json +199 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/build_stderr_targets.txt +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/build_stdout_targets.txt +55 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/configure_command.bat +19 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/configure_stderr.txt +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/configure_stdout.txt +19 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/generate_cxx_metadata_8659_timing.txt +9 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/metadata_generation_record.json +158 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/cpuid +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/libfaceantispoof.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/libfastyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/libyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/yuvconstants +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/yuvconvert +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/cpuid +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/libfaceantispoof.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/libfastyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/libyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/yuvconstants +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/yuvconvert +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/cpuid +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/libfaceantispoof.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/libfastyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/libyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/yuvconstants +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/yuvconvert +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/cpuid +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/libfaceantispoof.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/libfastyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/libyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/yuvconstants +0 -0
- package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/yuvconvert +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml +4 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-vision-camera-face-antispoof-detector_debug.kotlin_module +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/faceantispoof/BuildConfig.class +0 -0
- package/android/build/intermediates/library_assets/debug/packageDebugAssets/out/FaceAntiSpoofing.tflite +0 -0
- package/android/build/intermediates/library_assets/debug/packageDebugAssets/out/spoof_model_scale_2_7.tflite +0 -0
- package/android/build/intermediates/library_assets/debug/packageDebugAssets/out/spoof_model_scale_4_0.tflite +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libfaceantispoof.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libfastyuv.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libyuv.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/libfaceantispoof.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/libfastyuv.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/libyuv.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/libfaceantispoof.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/libfastyuv.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/libyuv.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libfaceantispoof.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libfastyuv.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libyuv.so +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +3 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +17 -0
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +13 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/libfaceantispoof.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/libfastyuv.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/libyuv.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/libfaceantispoof.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/libfastyuv.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/libyuv.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/libfaceantispoof.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/libfastyuv.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/libyuv.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/libfaceantispoof.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/libfastyuv.so +0 -0
- package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/libyuv.so +0 -0
- package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
- package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
- package/android/build/intermediates/packaged_res/debug/packageDebugResources/values/values.xml +4 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-vision-camera-face-antispoof-detector_debug.kotlin_module +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/AcceleratorConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/AntiSpoofingResult.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofFrameProcessor.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofModule$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofingAdvanced$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofingAdvanced.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FastYuv.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/YuvToFloatArrayConverter.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/YuvToRgbConverter.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +2 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +25 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-vision-camera-face-antispoof-detector_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/AcceleratorConfig.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/AntiSpoofingResult.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofFrameProcessor.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofModule$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofPackage.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofingAdvanced$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofingAdvanced.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FastYuv.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/YuvToFloatArrayConverter.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/YuvToRgbConverter.class +0 -0
- package/android/build.gradle +128 -0
- package/android/src/main/AndroidManifest.xml +9 -0
- package/android/src/main/assets/FaceAntiSpoofing.tflite +0 -0
- package/android/src/main/assets/spoof_model_scale_2_7.tflite +0 -0
- package/android/src/main/assets/spoof_model_scale_4_0.tflite +0 -0
- package/android/src/main/cpp/CMakeLists.txt +94 -0
- package/android/src/main/cpp/FaceAntiSpoofJSI.cpp +68 -0
- package/android/src/main/cpp/FastYuvJni.cpp +111 -0
- package/android/src/main/cpp/fast_yuv.cpp +332 -0
- package/android/src/main/cpp/fast_yuv.h +23 -0
- package/android/src/main/cpp/libyuv/.clang-format +6 -0
- package/android/src/main/cpp/libyuv/.gn +40 -0
- package/android/src/main/cpp/libyuv/.vpython3 +410 -0
- package/android/src/main/cpp/libyuv/AUTHORS +7 -0
- package/android/src/main/cpp/libyuv/Android.bp +202 -0
- package/android/src/main/cpp/libyuv/Android.mk +106 -0
- package/android/src/main/cpp/libyuv/BUILD.gn +490 -0
- package/android/src/main/cpp/libyuv/CM_linux_packages.cmake +70 -0
- package/android/src/main/cpp/libyuv/CMakeLists.txt +252 -0
- package/android/src/main/cpp/libyuv/DEPS +935 -0
- package/android/src/main/cpp/libyuv/DIR_METADATA +3 -0
- package/android/src/main/cpp/libyuv/LICENSE +29 -0
- package/android/src/main/cpp/libyuv/OWNERS +11 -0
- package/android/src/main/cpp/libyuv/PATENTS +24 -0
- package/android/src/main/cpp/libyuv/PRESUBMIT.py +65 -0
- package/android/src/main/cpp/libyuv/README.chromium +11 -0
- package/android/src/main/cpp/libyuv/README.md +19 -0
- package/android/src/main/cpp/libyuv/build_overrides/build.gni +60 -0
- package/android/src/main/cpp/libyuv/build_overrides/gtest.gni +19 -0
- package/android/src/main/cpp/libyuv/build_overrides/partition_alloc.gni +17 -0
- package/android/src/main/cpp/libyuv/codereview.settings +5 -0
- package/android/src/main/cpp/libyuv/docs/deprecated_builds.md +409 -0
- package/android/src/main/cpp/libyuv/docs/environment_variables.md +64 -0
- package/android/src/main/cpp/libyuv/docs/feature_detection.md +108 -0
- package/android/src/main/cpp/libyuv/docs/filtering.md +196 -0
- package/android/src/main/cpp/libyuv/docs/formats.md +208 -0
- package/android/src/main/cpp/libyuv/docs/getting_started.md +296 -0
- package/android/src/main/cpp/libyuv/docs/rotation.md +107 -0
- package/android/src/main/cpp/libyuv/download_vs_toolchain.py +29 -0
- package/android/src/main/cpp/libyuv/include/libyuv/basic_types.h +68 -0
- package/android/src/main/cpp/libyuv/include/libyuv/compare.h +111 -0
- package/android/src/main/cpp/libyuv/include/libyuv/compare_row.h +112 -0
- package/android/src/main/cpp/libyuv/include/libyuv/convert.h +1117 -0
- package/android/src/main/cpp/libyuv/include/libyuv/convert_argb.h +2335 -0
- package/android/src/main/cpp/libyuv/include/libyuv/convert_from.h +203 -0
- package/android/src/main/cpp/libyuv/include/libyuv/convert_from_argb.h +394 -0
- package/android/src/main/cpp/libyuv/include/libyuv/cpu_id.h +147 -0
- package/android/src/main/cpp/libyuv/include/libyuv/cpu_support.h +99 -0
- package/android/src/main/cpp/libyuv/include/libyuv/loongson_intrinsics.h +1949 -0
- package/android/src/main/cpp/libyuv/include/libyuv/mjpeg_decoder.h +195 -0
- package/android/src/main/cpp/libyuv/include/libyuv/planar_functions.h +1131 -0
- package/android/src/main/cpp/libyuv/include/libyuv/rotate.h +296 -0
- package/android/src/main/cpp/libyuv/include/libyuv/rotate_argb.h +37 -0
- package/android/src/main/cpp/libyuv/include/libyuv/rotate_row.h +265 -0
- package/android/src/main/cpp/libyuv/include/libyuv/row.h +6738 -0
- package/android/src/main/cpp/libyuv/include/libyuv/row_sve.h +2154 -0
- package/android/src/main/cpp/libyuv/include/libyuv/scale.h +336 -0
- package/android/src/main/cpp/libyuv/include/libyuv/scale_argb.h +76 -0
- package/android/src/main/cpp/libyuv/include/libyuv/scale_rgb.h +42 -0
- package/android/src/main/cpp/libyuv/include/libyuv/scale_row.h +1726 -0
- package/android/src/main/cpp/libyuv/include/libyuv/scale_uv.h +51 -0
- package/android/src/main/cpp/libyuv/include/libyuv/version.h +16 -0
- package/android/src/main/cpp/libyuv/include/libyuv/video_common.h +222 -0
- package/android/src/main/cpp/libyuv/include/libyuv.h +33 -0
- package/android/src/main/cpp/libyuv/infra/config/OWNERS +3 -0
- package/android/src/main/cpp/libyuv/infra/config/PRESUBMIT.py +17 -0
- package/android/src/main/cpp/libyuv/infra/config/README.md +2 -0
- package/android/src/main/cpp/libyuv/infra/config/codereview.settings +6 -0
- package/android/src/main/cpp/libyuv/infra/config/commit-queue.cfg +144 -0
- package/android/src/main/cpp/libyuv/infra/config/cr-buildbucket.cfg +1185 -0
- package/android/src/main/cpp/libyuv/infra/config/luci-logdog.cfg +9 -0
- package/android/src/main/cpp/libyuv/infra/config/luci-milo.cfg +246 -0
- package/android/src/main/cpp/libyuv/infra/config/luci-scheduler.cfg +385 -0
- package/android/src/main/cpp/libyuv/infra/config/main.star +402 -0
- package/android/src/main/cpp/libyuv/infra/config/project.cfg +16 -0
- package/android/src/main/cpp/libyuv/infra/config/realms.cfg +111 -0
- package/android/src/main/cpp/libyuv/libyuv.gni +34 -0
- package/android/src/main/cpp/libyuv/libyuv.gyp +149 -0
- package/android/src/main/cpp/libyuv/libyuv.gypi +87 -0
- package/android/src/main/cpp/libyuv/linux.mk +96 -0
- package/android/src/main/cpp/libyuv/public.mk +13 -0
- package/android/src/main/cpp/libyuv/pylintrc +49 -0
- package/android/src/main/cpp/libyuv/riscv_script/prepare_toolchain_qemu.sh +74 -0
- package/android/src/main/cpp/libyuv/riscv_script/riscv-clang.cmake +56 -0
- package/android/src/main/cpp/libyuv/riscv_script/run_qemu.sh +15 -0
- package/android/src/main/cpp/libyuv/source/compare.cc +435 -0
- package/android/src/main/cpp/libyuv/source/compare_common.cc +74 -0
- package/android/src/main/cpp/libyuv/source/compare_gcc.cc +362 -0
- package/android/src/main/cpp/libyuv/source/compare_neon.cc +96 -0
- package/android/src/main/cpp/libyuv/source/compare_neon64.cc +223 -0
- package/android/src/main/cpp/libyuv/source/compare_win.cc +241 -0
- package/android/src/main/cpp/libyuv/source/convert.cc +4746 -0
- package/android/src/main/cpp/libyuv/source/convert_argb.cc +9179 -0
- package/android/src/main/cpp/libyuv/source/convert_from.cc +866 -0
- package/android/src/main/cpp/libyuv/source/convert_from_argb.cc +3671 -0
- package/android/src/main/cpp/libyuv/source/convert_jpeg.cc +602 -0
- package/android/src/main/cpp/libyuv/source/convert_to_argb.cc +391 -0
- package/android/src/main/cpp/libyuv/source/convert_to_i420.cc +288 -0
- package/android/src/main/cpp/libyuv/source/cpu_id.cc +496 -0
- package/android/src/main/cpp/libyuv/source/mjpeg_decoder.cc +580 -0
- package/android/src/main/cpp/libyuv/source/mjpeg_validate.cc +71 -0
- package/android/src/main/cpp/libyuv/source/planar_functions.cc +5663 -0
- package/android/src/main/cpp/libyuv/source/rotate.cc +1241 -0
- package/android/src/main/cpp/libyuv/source/rotate_any.cc +76 -0
- package/android/src/main/cpp/libyuv/source/rotate_argb.cc +259 -0
- package/android/src/main/cpp/libyuv/source/rotate_common.cc +208 -0
- package/android/src/main/cpp/libyuv/source/rotate_gcc.cc +505 -0
- package/android/src/main/cpp/libyuv/source/rotate_lsx.cc +233 -0
- package/android/src/main/cpp/libyuv/source/rotate_neon.cc +219 -0
- package/android/src/main/cpp/libyuv/source/rotate_neon64.cc +273 -0
- package/android/src/main/cpp/libyuv/source/rotate_sme.cc +174 -0
- package/android/src/main/cpp/libyuv/source/rotate_win.cc +253 -0
- package/android/src/main/cpp/libyuv/source/row_any.cc +2519 -0
- package/android/src/main/cpp/libyuv/source/row_common.cc +4461 -0
- package/android/src/main/cpp/libyuv/source/row_gcc.cc +9570 -0
- package/android/src/main/cpp/libyuv/source/row_lasx.cc +2343 -0
- package/android/src/main/cpp/libyuv/source/row_lsx.cc +3030 -0
- package/android/src/main/cpp/libyuv/source/row_neon.cc +4026 -0
- package/android/src/main/cpp/libyuv/source/row_neon64.cc +5617 -0
- package/android/src/main/cpp/libyuv/source/row_rvv.cc +2599 -0
- package/android/src/main/cpp/libyuv/source/row_sme.cc +1183 -0
- package/android/src/main/cpp/libyuv/source/row_sve.cc +1088 -0
- package/android/src/main/cpp/libyuv/source/row_win.cc +6453 -0
- package/android/src/main/cpp/libyuv/source/scale.cc +2710 -0
- package/android/src/main/cpp/libyuv/source/scale_any.cc +991 -0
- package/android/src/main/cpp/libyuv/source/scale_argb.cc +1158 -0
- package/android/src/main/cpp/libyuv/source/scale_common.cc +1977 -0
- package/android/src/main/cpp/libyuv/source/scale_gcc.cc +2947 -0
- package/android/src/main/cpp/libyuv/source/scale_lsx.cc +739 -0
- package/android/src/main/cpp/libyuv/source/scale_neon.cc +1449 -0
- package/android/src/main/cpp/libyuv/source/scale_neon64.cc +1552 -0
- package/android/src/main/cpp/libyuv/source/scale_rgb.cc +82 -0
- package/android/src/main/cpp/libyuv/source/scale_rvv.cc +1971 -0
- package/android/src/main/cpp/libyuv/source/scale_sme.cc +555 -0
- package/android/src/main/cpp/libyuv/source/scale_uv.cc +1159 -0
- package/android/src/main/cpp/libyuv/source/scale_win.cc +1392 -0
- package/android/src/main/cpp/libyuv/source/test.sh +35 -0
- package/android/src/main/cpp/libyuv/source/video_common.cc +62 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/OWNERS +4 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/roll_deps.py +931 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/roll_deps_test.py +164 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS +21 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.new +13 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old +13 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/get_landmines.py +38 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/msan/OWNERS +3 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/msan/blacklist.txt +9 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/OWNERS +3 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/blacklist.txt +15 -0
- package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/vptr_blacklist.txt +25 -0
- package/android/src/main/cpp/libyuv/unit_test/basictypes_test.cc +43 -0
- package/android/src/main/cpp/libyuv/unit_test/color_test.cc +848 -0
- package/android/src/main/cpp/libyuv/unit_test/compare_test.cc +739 -0
- package/android/src/main/cpp/libyuv/unit_test/convert_argb_test.cc +2867 -0
- package/android/src/main/cpp/libyuv/unit_test/convert_test.cc +2133 -0
- package/android/src/main/cpp/libyuv/unit_test/cpu_test.cc +427 -0
- package/android/src/main/cpp/libyuv/unit_test/cpu_thread_test.cc +63 -0
- package/android/src/main/cpp/libyuv/unit_test/math_test.cc +160 -0
- package/android/src/main/cpp/libyuv/unit_test/planar_test.cc +4731 -0
- package/android/src/main/cpp/libyuv/unit_test/rotate_argb_test.cc +334 -0
- package/android/src/main/cpp/libyuv/unit_test/rotate_test.cc +962 -0
- package/android/src/main/cpp/libyuv/unit_test/scale_argb_test.cc +590 -0
- package/android/src/main/cpp/libyuv/unit_test/scale_plane_test.cc +465 -0
- package/android/src/main/cpp/libyuv/unit_test/scale_rgb_test.cc +280 -0
- package/android/src/main/cpp/libyuv/unit_test/scale_test.cc +1135 -0
- package/android/src/main/cpp/libyuv/unit_test/scale_uv_test.cc +249 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/arm_v7.txt +12 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/mips.txt +7 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson2k.txt +5 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson3.txt +10 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson_mmi.txt +7 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64.txt +4 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv.txt +4 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv_zvfh.txt +4 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/tegra3.txt +23 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/test0.jpg +0 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/test1.jpg +0 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/test2.jpg +0 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/test3.jpg +0 -0
- package/android/src/main/cpp/libyuv/unit_test/testdata/test4.jpg +0 -0
- package/android/src/main/cpp/libyuv/unit_test/unit_test.cc +581 -0
- package/android/src/main/cpp/libyuv/unit_test/unit_test.h +232 -0
- package/android/src/main/cpp/libyuv/unit_test/video_common_test.cc +112 -0
- package/android/src/main/cpp/libyuv/util/Makefile +9 -0
- package/android/src/main/cpp/libyuv/util/color.cc +120 -0
- package/android/src/main/cpp/libyuv/util/compare.cc +67 -0
- package/android/src/main/cpp/libyuv/util/cpuid.c +211 -0
- package/android/src/main/cpp/libyuv/util/i444tonv12_eg.cc +28 -0
- package/android/src/main/cpp/libyuv/util/psnr.cc +291 -0
- package/android/src/main/cpp/libyuv/util/psnr.h +47 -0
- package/android/src/main/cpp/libyuv/util/psnr_main.cc +620 -0
- package/android/src/main/cpp/libyuv/util/ssim.cc +364 -0
- package/android/src/main/cpp/libyuv/util/ssim.h +38 -0
- package/android/src/main/cpp/libyuv/util/yuvconstants.c +114 -0
- package/android/src/main/cpp/libyuv/util/yuvconvert.cc +367 -0
- package/android/src/main/cpp/libyuv/winarm.mk +47 -0
- package/android/src/main/java/com/faceantispoof/AcceleratorConfig.kt +49 -0
- package/android/src/main/java/com/faceantispoof/FaceAntiSpoofFrameProcessor.kt +145 -0
- package/android/src/main/java/com/faceantispoof/FaceAntiSpoofModule.kt +170 -0
- package/android/src/main/java/com/faceantispoof/FaceAntiSpoofPackage.kt +38 -0
- package/android/src/main/java/com/faceantispoof/FaceAntiSpoofingAdvanced.kt +288 -0
- package/android/src/main/java/com/faceantispoof/FastYuv.kt +51 -0
- package/android/src/main/java/com/faceantispoof/YuvToFloatArrayConverter.kt +198 -0
- package/android/src/main/java/com/faceantispoof/YuvToRgbConverter.kt +73 -0
- package/android/src/main/res/values/strings.xml +3 -0
- package/index.d.ts +84 -0
- package/index.js +47 -0
- package/package.json +73 -0
|
@@ -0,0 +1,2154 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 The LibYuv Project Authors. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed by a BSD-style license
|
|
5
|
+
* that can be found in the LICENSE file in the root of the source
|
|
6
|
+
* tree. An additional intellectual property rights grant can be found
|
|
7
|
+
* in the file PATENTS. All contributing project authors may
|
|
8
|
+
* be found in the AUTHORS file in the root of the source tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#ifndef INCLUDE_LIBYUV_ROW_SVE_H_
|
|
12
|
+
#define INCLUDE_LIBYUV_ROW_SVE_H_
|
|
13
|
+
|
|
14
|
+
#include "libyuv/row.h"
|
|
15
|
+
|
|
16
|
+
#ifdef __cplusplus
|
|
17
|
+
namespace libyuv {
|
|
18
|
+
extern "C" {
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#if !defined(LIBYUV_DISABLE_SVE) && defined(__aarch64__)
|
|
22
|
+
|
|
23
|
+
#if !defined(LIBYUV_DISABLE_SME) && defined(CLANG_HAS_SME) && \
|
|
24
|
+
defined(__aarch64__)
|
|
25
|
+
#define STREAMING_COMPATIBLE __arm_streaming_compatible
|
|
26
|
+
#else // defined(LIBYUV_DISABLE_SME) || !defined(CLANG_HAS_SME) ||
|
|
27
|
+
// !defined(__aarch64__)
|
|
28
|
+
#define STREAMING_COMPATIBLE
|
|
29
|
+
#endif // !defined(LIBYUV_DISABLE_SME) && defined(CLANG_HAS_SME) &&
|
|
30
|
+
// defined(__aarch64__)
|
|
31
|
+
|
|
32
|
+
#define YUVTORGB_SVE_SETUP \
|
|
33
|
+
"ld1rb {z28.b}, p0/z, [%[kUVCoeff], #0] \n" \
|
|
34
|
+
"ld1rb {z29.b}, p0/z, [%[kUVCoeff], #1] \n" \
|
|
35
|
+
"ld1rb {z30.b}, p0/z, [%[kUVCoeff], #2] \n" \
|
|
36
|
+
"ld1rb {z31.b}, p0/z, [%[kUVCoeff], #3] \n" \
|
|
37
|
+
"ld1rh {z24.h}, p0/z, [%[kRGBCoeffBias], #0] \n" \
|
|
38
|
+
"ld1rh {z25.h}, p0/z, [%[kRGBCoeffBias], #2] \n" \
|
|
39
|
+
"ld1rh {z26.h}, p0/z, [%[kRGBCoeffBias], #4] \n" \
|
|
40
|
+
"ld1rh {z27.h}, p0/z, [%[kRGBCoeffBias], #6] \n"
|
|
41
|
+
|
|
42
|
+
#define READYUV444_SVE \
|
|
43
|
+
"ld1b {z0.h}, p1/z, [%[src_y]] \n" \
|
|
44
|
+
"ld1b {z1.h}, p1/z, [%[src_u]] \n" \
|
|
45
|
+
"ld1b {z2.h}, p1/z, [%[src_v]] \n" \
|
|
46
|
+
"add %[src_y], %[src_y], %[vl] \n" \
|
|
47
|
+
"add %[src_u], %[src_u], %[vl] \n" \
|
|
48
|
+
"add %[src_v], %[src_v], %[vl] \n" \
|
|
49
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
50
|
+
"prfm pldl1keep, [%[src_u], 448] \n" \
|
|
51
|
+
"trn1 z0.b, z0.b, z0.b \n" \
|
|
52
|
+
"prfm pldl1keep, [%[src_v], 448] \n"
|
|
53
|
+
|
|
54
|
+
// Read twice as much data from YUV, putting the even elements from the Y data
|
|
55
|
+
// in z0.h and odd elements in z1.h.
|
|
56
|
+
#define READYUV444_SVE_2X \
|
|
57
|
+
"ld1b {z0.b}, p1/z, [%[src_y]] \n" \
|
|
58
|
+
"ld1b {z2.b}, p1/z, [%[src_u]] \n" \
|
|
59
|
+
"ld1b {z3.b}, p1/z, [%[src_v]] \n" \
|
|
60
|
+
"incb %[src_y] \n" \
|
|
61
|
+
"incb %[src_u] \n" \
|
|
62
|
+
"incb %[src_v] \n" \
|
|
63
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
64
|
+
"prfm pldl1keep, [%[src_u], 128] \n" \
|
|
65
|
+
"prfm pldl1keep, [%[src_v], 128] \n" \
|
|
66
|
+
"trn2 z1.b, z0.b, z0.b \n" \
|
|
67
|
+
"trn1 z0.b, z0.b, z0.b \n"
|
|
68
|
+
|
|
69
|
+
#define READYUV400_SVE \
|
|
70
|
+
"ld1b {z0.h}, p1/z, [%[src_y]] \n" \
|
|
71
|
+
"inch %[src_y] \n" \
|
|
72
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
73
|
+
"trn1 z0.b, z0.b, z0.b \n"
|
|
74
|
+
|
|
75
|
+
#define READYUV422_SVE \
|
|
76
|
+
"ld1b {z0.h}, p1/z, [%[src_y]] \n" \
|
|
77
|
+
"ld1b {z1.s}, p1/z, [%[src_u]] \n" \
|
|
78
|
+
"ld1b {z2.s}, p1/z, [%[src_v]] \n" \
|
|
79
|
+
"inch %[src_y] \n" \
|
|
80
|
+
"incw %[src_u] \n" \
|
|
81
|
+
"incw %[src_v] \n" \
|
|
82
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
83
|
+
"prfm pldl1keep, [%[src_u], 128] \n" \
|
|
84
|
+
"prfm pldl1keep, [%[src_v], 128] \n" \
|
|
85
|
+
"trn1 z0.b, z0.b, z0.b \n" \
|
|
86
|
+
"trn1 z1.h, z1.h, z1.h \n" \
|
|
87
|
+
"trn1 z2.h, z2.h, z2.h \n"
|
|
88
|
+
|
|
89
|
+
// Read twice as much data from YUV, putting the even elements from the Y data
|
|
90
|
+
// in z0.h and odd elements in z1.h. U/V data is not duplicated, stored in
|
|
91
|
+
// z2.h/z3.h.
|
|
92
|
+
#define READYUV422_SVE_2X \
|
|
93
|
+
"ld1b {z0.b}, p1/z, [%[src_y]] \n" \
|
|
94
|
+
"ld1b {z2.h}, p1/z, [%[src_u]] \n" \
|
|
95
|
+
"ld1b {z3.h}, p1/z, [%[src_v]] \n" \
|
|
96
|
+
"incb %[src_y] \n" \
|
|
97
|
+
"inch %[src_u] \n" \
|
|
98
|
+
"inch %[src_v] \n" \
|
|
99
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
100
|
+
"prfm pldl1keep, [%[src_u], 128] \n" \
|
|
101
|
+
"prfm pldl1keep, [%[src_v], 128] \n" \
|
|
102
|
+
"trn2 z1.b, z0.b, z0.b \n" \
|
|
103
|
+
"trn1 z0.b, z0.b, z0.b \n"
|
|
104
|
+
|
|
105
|
+
#define READI210_SVE \
|
|
106
|
+
"ld1h {z3.h}, p1/z, [%[src_y]] \n" \
|
|
107
|
+
"ld1h {z1.s}, p1/z, [%[src_u]] \n" \
|
|
108
|
+
"ld1h {z2.s}, p1/z, [%[src_v]] \n" \
|
|
109
|
+
"incb %[src_y] \n" \
|
|
110
|
+
"inch %[src_u] \n" \
|
|
111
|
+
"inch %[src_v] \n" \
|
|
112
|
+
"lsl z0.h, z3.h, #6 \n" \
|
|
113
|
+
"trn1 z1.h, z1.h, z1.h \n" \
|
|
114
|
+
"trn1 z2.h, z2.h, z2.h \n" \
|
|
115
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
116
|
+
"prfm pldl1keep, [%[src_u], 128] \n" \
|
|
117
|
+
"prfm pldl1keep, [%[src_v], 128] \n" \
|
|
118
|
+
"usra z0.h, z3.h, #4 \n" \
|
|
119
|
+
"uqshrnb z1.b, z1.h, #2 \n" \
|
|
120
|
+
"uqshrnb z2.b, z2.h, #2 \n"
|
|
121
|
+
|
|
122
|
+
#define READI210_SVE_2X \
|
|
123
|
+
"ld1h {z4.h}, p2/z, [%[src_y]] \n" \
|
|
124
|
+
"ld1h {z5.h}, p3/z, [%[src_y], #1, mul vl] \n" \
|
|
125
|
+
"ld1h {z2.h}, p1/z, [%[src_u]] \n" \
|
|
126
|
+
"ld1h {z3.h}, p1/z, [%[src_v]] \n" \
|
|
127
|
+
"incb %[src_y], all, mul #2 \n" \
|
|
128
|
+
"uzp1 z6.h, z4.h, z5.h \n" \
|
|
129
|
+
"uzp2 z5.h, z4.h, z5.h \n" \
|
|
130
|
+
"incb %[src_u] \n" \
|
|
131
|
+
"incb %[src_v] \n" \
|
|
132
|
+
"lsl z0.h, z6.h, #6 \n" \
|
|
133
|
+
"lsl z1.h, z5.h, #6 \n" \
|
|
134
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
135
|
+
"prfm pldl1keep, [%[src_u], 128] \n" \
|
|
136
|
+
"prfm pldl1keep, [%[src_v], 128] \n" \
|
|
137
|
+
"usra z0.h, z6.h, #4 \n" \
|
|
138
|
+
"usra z1.h, z5.h, #4 \n" \
|
|
139
|
+
"uqshrnb z2.b, z2.h, #2 \n" \
|
|
140
|
+
"uqshrnb z3.b, z3.h, #2 \n"
|
|
141
|
+
|
|
142
|
+
#define READP210_SVE \
|
|
143
|
+
"ld1h {z0.h}, p1/z, [%[src_y]] \n" \
|
|
144
|
+
"ld1h {z1.h}, p2/z, [%[src_uv]] \n" \
|
|
145
|
+
"incb %[src_y] \n" \
|
|
146
|
+
"incb %[src_uv] \n" \
|
|
147
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
148
|
+
"prfm pldl1keep, [%[src_uv], 256] \n" \
|
|
149
|
+
"tbl z1.b, {z1.b}, z22.b \n"
|
|
150
|
+
|
|
151
|
+
#define READI410_SVE \
|
|
152
|
+
"ld1h {z3.h}, p1/z, [%[src_y]] \n" \
|
|
153
|
+
"lsl z0.h, z3.h, #6 \n" \
|
|
154
|
+
"usra z0.h, z3.h, #4 \n" \
|
|
155
|
+
"ld1h {z1.h}, p1/z, [%[src_u]] \n" \
|
|
156
|
+
"ld1h {z2.h}, p1/z, [%[src_v]] \n" \
|
|
157
|
+
"incb %[src_y] \n" \
|
|
158
|
+
"incb %[src_u] \n" \
|
|
159
|
+
"incb %[src_v] \n" \
|
|
160
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
161
|
+
"prfm pldl1keep, [%[src_u], 128] \n" \
|
|
162
|
+
"prfm pldl1keep, [%[src_v], 128] \n" \
|
|
163
|
+
"uqshrnb z1.b, z1.h, #2 \n" \
|
|
164
|
+
"uqshrnb z2.b, z2.h, #2 \n"
|
|
165
|
+
|
|
166
|
+
// We need different predicates for the UV components since we are reading
|
|
167
|
+
// 32-bit (pairs of UV) elements rather than 16-bit Y elements.
|
|
168
|
+
#define READP410_SVE \
|
|
169
|
+
"ld1h {z0.h}, p1/z, [%[src_y]] \n" \
|
|
170
|
+
"ld1w {z1.s}, p2/z, [%[src_uv]] \n" \
|
|
171
|
+
"ld1w {z2.s}, p3/z, [%[src_uv], #1, mul vl] \n" \
|
|
172
|
+
"incb %[src_y] \n" \
|
|
173
|
+
"incb %[src_uv], all, mul #2 \n" \
|
|
174
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
175
|
+
"prfm pldl1keep, [%[src_uv], 256] \n" \
|
|
176
|
+
"uzp2 z1.b, z1.b, z2.b \n"
|
|
177
|
+
|
|
178
|
+
#define READI212_SVE \
|
|
179
|
+
"ld1h {z3.h}, p1/z, [%[src_y]] \n" \
|
|
180
|
+
"ld1h {z1.s}, p1/z, [%[src_u]] \n" \
|
|
181
|
+
"ld1h {z2.s}, p1/z, [%[src_v]] \n" \
|
|
182
|
+
"incb %[src_y] \n" \
|
|
183
|
+
"inch %[src_u] \n" \
|
|
184
|
+
"inch %[src_v] \n" \
|
|
185
|
+
"lsl z0.h, z3.h, #4 \n" \
|
|
186
|
+
"trn1 z1.h, z1.h, z1.h \n" \
|
|
187
|
+
"trn1 z2.h, z2.h, z2.h \n" \
|
|
188
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
189
|
+
"prfm pldl1keep, [%[src_u], 128] \n" \
|
|
190
|
+
"prfm pldl1keep, [%[src_v], 128] \n" \
|
|
191
|
+
"usra z0.h, z3.h, #8 \n" \
|
|
192
|
+
"uqshrnb z1.b, z1.h, #4 \n" \
|
|
193
|
+
"uqshrnb z2.b, z2.h, #4 \n"
|
|
194
|
+
|
|
195
|
+
#define I400TORGB_SVE \
|
|
196
|
+
"umulh z18.h, z24.h, z0.h \n" /* Y */ \
|
|
197
|
+
"movprfx z16, z18 \n" \
|
|
198
|
+
"usqadd z16.h, p0/m, z16.h, z4.h \n" /* B */ \
|
|
199
|
+
"movprfx z17, z18 \n" \
|
|
200
|
+
"usqadd z17.h, p0/m, z17.h, z6.h \n" /* G */ \
|
|
201
|
+
"usqadd z18.h, p0/m, z18.h, z5.h \n" /* R */
|
|
202
|
+
|
|
203
|
+
// We need a different predicate for the UV component to handle the tail.
|
|
204
|
+
// If there is a single element remaining then we want to load one Y element
|
|
205
|
+
// but two UV elements.
|
|
206
|
+
#define READNV_SVE_2X \
|
|
207
|
+
"ld1b {z0.b}, p1/z, [%[src_y]] \n" /* Y0Y0 */ \
|
|
208
|
+
"ld1b {z2.b}, p2/z, [%[src_uv]] \n" /* U0V0 or V0U0 */ \
|
|
209
|
+
"incb %[src_y] \n" \
|
|
210
|
+
"incb %[src_uv] \n" \
|
|
211
|
+
"prfm pldl1keep, [%[src_y], 448] \n" \
|
|
212
|
+
"prfm pldl1keep, [%[src_uv], 256] \n" \
|
|
213
|
+
"trn2 z1.b, z0.b, z0.b \n" /* YYYY */ \
|
|
214
|
+
"trn1 z0.b, z0.b, z0.b \n" /* YYYY */
|
|
215
|
+
|
|
216
|
+
// Like NVTORGB_SVE but U/V components are stored in widened .h elements of
|
|
217
|
+
// z1/z2 rather than even/odd .b lanes of z1.
|
|
218
|
+
#define I4XXTORGB_SVE \
|
|
219
|
+
"umulh z0.h, z24.h, z0.h \n" /* Y */ \
|
|
220
|
+
"umullb z6.h, z30.b, z1.b \n" \
|
|
221
|
+
"umullb z4.h, z28.b, z1.b \n" /* DB */ \
|
|
222
|
+
"umullb z5.h, z29.b, z2.b \n" /* DR */ \
|
|
223
|
+
"umlalb z6.h, z31.b, z2.b \n" /* DG */ \
|
|
224
|
+
"add z17.h, z0.h, z26.h \n" /* G */ \
|
|
225
|
+
"add z16.h, z0.h, z4.h \n" /* B */ \
|
|
226
|
+
"add z18.h, z0.h, z5.h \n" /* R */ \
|
|
227
|
+
"uqsub z17.h, z17.h, z6.h \n" /* G */ \
|
|
228
|
+
"uqsub z16.h, z16.h, z25.h \n" /* B */ \
|
|
229
|
+
"uqsub z18.h, z18.h, z27.h \n" /* R */
|
|
230
|
+
|
|
231
|
+
#define I444TORGB_SVE_2X \
|
|
232
|
+
"umulh z0.h, z24.h, z0.h \n" /* Y0 */ \
|
|
233
|
+
"umulh z1.h, z24.h, z1.h \n" /* Y1 */ \
|
|
234
|
+
"umullb z6.h, z30.b, z2.b \n" \
|
|
235
|
+
"umullt z7.h, z30.b, z2.b \n" \
|
|
236
|
+
"umullb z4.h, z28.b, z2.b \n" /* DB */ \
|
|
237
|
+
"umullt z2.h, z28.b, z2.b \n" /* DB */ \
|
|
238
|
+
"umlalb z6.h, z31.b, z3.b \n" /* DG */ \
|
|
239
|
+
"umlalt z7.h, z31.b, z3.b \n" /* DG */ \
|
|
240
|
+
"umullb z5.h, z29.b, z3.b \n" /* DR */ \
|
|
241
|
+
"umullt z3.h, z29.b, z3.b \n" /* DR */ \
|
|
242
|
+
"add z17.h, z0.h, z26.h \n" /* G */ \
|
|
243
|
+
"add z21.h, z1.h, z26.h \n" /* G */ \
|
|
244
|
+
"add z16.h, z0.h, z4.h \n" /* B */ \
|
|
245
|
+
"add z20.h, z1.h, z2.h \n" /* B */ \
|
|
246
|
+
"add z18.h, z0.h, z5.h \n" /* R */ \
|
|
247
|
+
"add z22.h, z1.h, z3.h \n" /* R */ \
|
|
248
|
+
"uqsub z17.h, z17.h, z6.h \n" /* G */ \
|
|
249
|
+
"uqsub z21.h, z21.h, z7.h \n" /* G */ \
|
|
250
|
+
"uqsub z16.h, z16.h, z25.h \n" /* B */ \
|
|
251
|
+
"uqsub z20.h, z20.h, z25.h \n" /* B */ \
|
|
252
|
+
"uqsub z18.h, z18.h, z27.h \n" /* R */ \
|
|
253
|
+
"uqsub z22.h, z22.h, z27.h \n" /* R */
|
|
254
|
+
|
|
255
|
+
// Like I4XXTORGB_SVE but U/V components are stored in even/odd .b lanes of z1
|
|
256
|
+
// rather than widened .h elements of z1/z2.
|
|
257
|
+
#define NVTORGB_SVE \
|
|
258
|
+
"umulh z0.h, z24.h, z0.h \n" /* Y */ \
|
|
259
|
+
"umullb z6.h, z30.b, z1.b \n" \
|
|
260
|
+
"umullb z4.h, z28.b, z1.b \n" /* DB */ \
|
|
261
|
+
"umullt z5.h, z29.b, z1.b \n" /* DR */ \
|
|
262
|
+
"umlalt z6.h, z31.b, z1.b \n" /* DG */ \
|
|
263
|
+
"add z17.h, z0.h, z26.h \n" /* G */ \
|
|
264
|
+
"add z16.h, z0.h, z4.h \n" /* B */ \
|
|
265
|
+
"add z18.h, z0.h, z5.h \n" /* R */ \
|
|
266
|
+
"uqsub z17.h, z17.h, z6.h \n" /* G */ \
|
|
267
|
+
"uqsub z16.h, z16.h, z25.h \n" /* B */ \
|
|
268
|
+
"uqsub z18.h, z18.h, z27.h \n" /* R */
|
|
269
|
+
|
|
270
|
+
// The U/V component multiplies do not need to be duplicated in I422, we just
|
|
271
|
+
// need to combine them with Y0/Y1 correctly.
|
|
272
|
+
#define I422TORGB_SVE_2X \
|
|
273
|
+
"umulh z0.h, z24.h, z0.h \n" /* Y0 */ \
|
|
274
|
+
"umulh z1.h, z24.h, z1.h \n" /* Y1 */ \
|
|
275
|
+
"umullb z6.h, z30.b, z2.b \n" \
|
|
276
|
+
"umullb z4.h, z28.b, z2.b \n" /* DB */ \
|
|
277
|
+
"umullb z5.h, z29.b, z3.b \n" /* DR */ \
|
|
278
|
+
"umlalb z6.h, z31.b, z3.b \n" /* DG */ \
|
|
279
|
+
\
|
|
280
|
+
"add z17.h, z0.h, z26.h \n" /* G0 */ \
|
|
281
|
+
"add z21.h, z1.h, z26.h \n" /* G1 */ \
|
|
282
|
+
"add z16.h, z0.h, z4.h \n" /* B0 */ \
|
|
283
|
+
"add z20.h, z1.h, z4.h \n" /* B1 */ \
|
|
284
|
+
"add z18.h, z0.h, z5.h \n" /* R0 */ \
|
|
285
|
+
"add z22.h, z1.h, z5.h \n" /* R1 */ \
|
|
286
|
+
"uqsub z17.h, z17.h, z6.h \n" /* G0 */ \
|
|
287
|
+
"uqsub z21.h, z21.h, z6.h \n" /* G1 */ \
|
|
288
|
+
"uqsub z16.h, z16.h, z25.h \n" /* B0 */ \
|
|
289
|
+
"uqsub z20.h, z20.h, z25.h \n" /* B1 */ \
|
|
290
|
+
"uqsub z18.h, z18.h, z27.h \n" /* R0 */ \
|
|
291
|
+
"uqsub z22.h, z22.h, z27.h \n" /* R1 */
|
|
292
|
+
|
|
293
|
+
// clang-format off
|
|
294
|
+
#define NVTORGB_SVE_2X(bt_u, bt_v) \
|
|
295
|
+
"umulh z0.h, z24.h, z0.h \n" /* Y0 */ \
|
|
296
|
+
"umulh z1.h, z24.h, z1.h \n" /* Y1 */ \
|
|
297
|
+
"umull" #bt_u " z6.h, z30.b, z2.b \n" \
|
|
298
|
+
"umull" #bt_u " z4.h, z28.b, z2.b \n" /* DB */ \
|
|
299
|
+
"umull" #bt_v " z5.h, z29.b, z2.b \n" /* DR */ \
|
|
300
|
+
"umlal" #bt_v " z6.h, z31.b, z2.b \n" /* DG */ \
|
|
301
|
+
\
|
|
302
|
+
"add z17.h, z0.h, z26.h \n" /* G0 */ \
|
|
303
|
+
"add z21.h, z1.h, z26.h \n" /* G1 */ \
|
|
304
|
+
"add z16.h, z0.h, z4.h \n" /* B0 */ \
|
|
305
|
+
"add z20.h, z1.h, z4.h \n" /* B1 */ \
|
|
306
|
+
"add z18.h, z0.h, z5.h \n" /* R0 */ \
|
|
307
|
+
"add z22.h, z1.h, z5.h \n" /* R1 */ \
|
|
308
|
+
"uqsub z17.h, z17.h, z6.h \n" /* G0 */ \
|
|
309
|
+
"uqsub z21.h, z21.h, z6.h \n" /* G1 */ \
|
|
310
|
+
"uqsub z16.h, z16.h, z25.h \n" /* B0 */ \
|
|
311
|
+
"uqsub z20.h, z20.h, z25.h \n" /* B1 */ \
|
|
312
|
+
"uqsub z18.h, z18.h, z27.h \n" /* R0 */ \
|
|
313
|
+
"uqsub z22.h, z22.h, z27.h \n" /* R1 */
|
|
314
|
+
// clang-format on
|
|
315
|
+
|
|
316
|
+
#define RGBTOARGB8_SVE_TOP_2X \
|
|
317
|
+
/* Inputs: B: z16.h, G: z17.h, R: z18.h */ \
|
|
318
|
+
"uqshl z16.h, p0/m, z16.h, #2 \n" /* B0 */ \
|
|
319
|
+
"uqshl z17.h, p0/m, z17.h, #2 \n" /* G0 */ \
|
|
320
|
+
"uqshl z18.h, p0/m, z18.h, #2 \n" /* R0 */ \
|
|
321
|
+
"uqshl z20.h, p0/m, z20.h, #2 \n" /* B1 */ \
|
|
322
|
+
"uqshl z21.h, p0/m, z21.h, #2 \n" /* G1 */ \
|
|
323
|
+
"uqshl z22.h, p0/m, z22.h, #2 \n" /* R1 */
|
|
324
|
+
|
|
325
|
+
// Convert from 2.14 fixed point RGB to 8 bit ARGB, interleaving as BG and RA
|
|
326
|
+
// pairs to allow us to use ST2 for storing rather than ST4.
|
|
327
|
+
#define RGBTOARGB8_SVE \
|
|
328
|
+
/* Inputs: B: z16.h, G: z17.h, R: z18.h, A: z19.b */ \
|
|
329
|
+
"uqshrnb z16.b, z16.h, #6 \n" /* B0 */ \
|
|
330
|
+
"uqshrnb z18.b, z18.h, #6 \n" /* R0 */ \
|
|
331
|
+
"uqshrnt z16.b, z17.h, #6 \n" /* BG */ \
|
|
332
|
+
"trn1 z17.b, z18.b, z19.b \n" /* RA */
|
|
333
|
+
|
|
334
|
+
// Convert from 2.14 fixed point RGBA to 8 bit ARGB, interleaving as BG and RA
|
|
335
|
+
// pairs to allow us to use ST2 for storing rather than ST4.
|
|
336
|
+
#define RGBATOARGB8_SVE \
|
|
337
|
+
/* Inputs: B: z16.h, G: z17.h, R: z18.h, A: z19.h */ \
|
|
338
|
+
"uqshrnb z16.b, z16.h, #6 \n" /* B0 */ \
|
|
339
|
+
"uqshrnt z16.b, z17.h, #6 \n" /* BG */ \
|
|
340
|
+
"uqshrnb z17.b, z18.h, #6 \n" /* R0 */ \
|
|
341
|
+
"uqshrnt z17.b, z19.h, #2 \n" /* RA */
|
|
342
|
+
|
|
343
|
+
// Convert from 2.14 fixed point RGB to 8 bit RGBA, interleaving as AB and GR
|
|
344
|
+
// pairs to allow us to use ST2 for storing rather than ST4.
|
|
345
|
+
#define RGBTORGBA8_SVE \
|
|
346
|
+
/* Inputs: B: z16.h, G: z17.h, R: z18.h, A: z19.b */ \
|
|
347
|
+
"uqshrnt z19.b, z16.h, #6 \n" /* AB */ \
|
|
348
|
+
"uqshrnb z20.b, z17.h, #6 \n" /* G0 */ \
|
|
349
|
+
"uqshrnt z20.b, z18.h, #6 \n" /* GR */
|
|
350
|
+
|
|
351
|
+
#define RGBTOARGB8_SVE_2X \
|
|
352
|
+
/* Inputs: B: z16.h, G: z17.h, R: z18.h, A: z19.b */ \
|
|
353
|
+
"uqshrnb z16.b, z16.h, #6 \n" /* B0 */ \
|
|
354
|
+
"uqshrnb z17.b, z17.h, #6 \n" /* G0 */ \
|
|
355
|
+
"uqshrnb z18.b, z18.h, #6 \n" /* R0 */ \
|
|
356
|
+
"uqshrnt z16.b, z20.h, #6 \n" /* B1 */ \
|
|
357
|
+
"uqshrnt z17.b, z21.h, #6 \n" /* G1 */ \
|
|
358
|
+
"uqshrnt z18.b, z22.h, #6 \n" /* R1 */
|
|
359
|
+
|
|
360
|
+
// Store AR30 elements. Inputs are 2.14 fixed point RGB. We expect z23 to be
|
|
361
|
+
// populated with 0x3ff0 (0x3fff would also work) to saturate the R input
|
|
362
|
+
// rather than needing a pair of shifts to saturate and then insert into the
|
|
363
|
+
// correct position in the lane.
|
|
364
|
+
#define STOREAR30_SVE \
|
|
365
|
+
/* Inputs: B: z16.h, G: z17.h, R: z18.h */ \
|
|
366
|
+
"uqshl z16.h, p0/m, z16.h, #2 \n" /* bbbbbbbbbbxxxxxx */ \
|
|
367
|
+
"uqshl z17.h, p0/m, z17.h, #2 \n" /* ggggggggggxxxxxx */ \
|
|
368
|
+
"umin z18.h, p0/m, z18.h, z23.h \n" /* 00rrrrrrrrrrxxxx */ \
|
|
369
|
+
"orr z18.h, z18.h, #0xc000 \n" /* 11rrrrrrrrrrxxxx */ \
|
|
370
|
+
"sri z18.h, z17.h, #12 \n" /* 11rrrrrrrrrrgggg */ \
|
|
371
|
+
"lsl z17.h, z17.h, #4 \n" /* ggggggxxxxxx0000 */ \
|
|
372
|
+
"sri z17.h, z16.h, #6 \n" /* ggggggbbbbbbbbbb */ \
|
|
373
|
+
"st2h {z17.h, z18.h}, p1, [%[dst_ar30]] \n" \
|
|
374
|
+
"incb %[dst_ar30], all, mul #2 \n"
|
|
375
|
+
|
|
376
|
+
#define STOREAR30_SVE_2X \
|
|
377
|
+
/* Inputs: B: z16.h, G: z17.h, R: z18.h */ \
|
|
378
|
+
/* B: z20.h, G: z21.h, R: z22.h */ \
|
|
379
|
+
"uqshl z16.h, p0/m, z16.h, #2 \n" /* bbbbbbbbbbxxxxxx */ \
|
|
380
|
+
"uqshl z20.h, p0/m, z20.h, #2 \n" /* bbbbbbbbbbxxxxxx */ \
|
|
381
|
+
"uqshl z17.h, p0/m, z17.h, #2 \n" /* ggggggggggxxxxxx */ \
|
|
382
|
+
"uqshl z21.h, p0/m, z21.h, #2 \n" /* ggggggggggxxxxxx */ \
|
|
383
|
+
"umin z18.h, p0/m, z18.h, z23.h \n" /* 00rrrrrrrrrrxxxx */ \
|
|
384
|
+
"umin z22.h, p0/m, z22.h, z23.h \n" /* 00rrrrrrrrrrxxxx */ \
|
|
385
|
+
"orr z18.h, z18.h, #0xc000 \n" /* 11rrrrrrrrrrxxxx */ \
|
|
386
|
+
"orr z22.h, z22.h, #0xc000 \n" /* 11rrrrrrrrrrxxxx */ \
|
|
387
|
+
"sri z18.h, z17.h, #12 \n" /* 11rrrrrrrrrrgggg */ \
|
|
388
|
+
"sri z22.h, z21.h, #12 \n" /* 11rrrrrrrrrrgggg */ \
|
|
389
|
+
"lsl z17.h, z17.h, #4 \n" /* ggggggxxxxxx0000 */ \
|
|
390
|
+
"lsl z19.h, z21.h, #4 \n" /* ggggggxxxxxx0000 */ \
|
|
391
|
+
"sri z17.h, z16.h, #6 \n" /* ggggggbbbbbbbbbb */ \
|
|
392
|
+
"sri z19.h, z20.h, #6 \n" /* ggggggbbbbbbbbbb */ \
|
|
393
|
+
"zip2 z16.h, z17.h, z19.h \n" \
|
|
394
|
+
"zip1 z21.h, z17.h, z19.h \n" \
|
|
395
|
+
"zip2 z17.h, z18.h, z22.h \n" \
|
|
396
|
+
"zip1 z22.h, z18.h, z22.h \n" \
|
|
397
|
+
"st2h {z21.h, z22.h}, p2, [%[dst_ar30]] \n" \
|
|
398
|
+
"st2h {z16.h, z17.h}, p3, [%[dst_ar30], #2, mul vl] \n" \
|
|
399
|
+
"incb %[dst_ar30], all, mul #4 \n"
|
|
400
|
+
|
|
401
|
+
#define YUVTORGB_SVE_REGS \
|
|
402
|
+
"z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "z16", "z17", "z18", "z19", \
|
|
403
|
+
"z20", "z21", "z22", "z23", "z24", "z25", "z26", "z27", "z28", "z29", \
|
|
404
|
+
"z30", "z31", "p0", "p1", "p2", "p3"
|
|
405
|
+
|
|
406
|
+
static inline void I444ToRGB24Row_SVE_SC(
|
|
407
|
+
const uint8_t* src_y,
|
|
408
|
+
const uint8_t* src_u,
|
|
409
|
+
const uint8_t* src_v,
|
|
410
|
+
uint8_t* dst_rgb24,
|
|
411
|
+
const struct YuvConstants* yuvconstants,
|
|
412
|
+
int width) STREAMING_COMPATIBLE {
|
|
413
|
+
uint64_t vl;
|
|
414
|
+
asm volatile(
|
|
415
|
+
"cntb %[vl] \n"
|
|
416
|
+
"ptrue p0.b \n" //
|
|
417
|
+
YUVTORGB_SVE_SETUP
|
|
418
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
419
|
+
"b.lt 2f \n"
|
|
420
|
+
|
|
421
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
422
|
+
// generation overhead.
|
|
423
|
+
"ptrue p1.b \n"
|
|
424
|
+
"1: \n" //
|
|
425
|
+
READYUV444_SVE_2X I444TORGB_SVE_2X RGBTOARGB8_SVE_2X
|
|
426
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
427
|
+
"st3b {z16.b, z17.b, z18.b}, p1, [%[dst_rgb24]] \n"
|
|
428
|
+
"incb %[dst_rgb24], all, mul #3 \n"
|
|
429
|
+
"b.ge 1b \n"
|
|
430
|
+
|
|
431
|
+
"2: \n"
|
|
432
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
433
|
+
"b.eq 99f \n"
|
|
434
|
+
|
|
435
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
436
|
+
"cnth %[vl] \n"
|
|
437
|
+
"whilelt p1.b, wzr, %w[width] \n" //
|
|
438
|
+
READYUV444_SVE_2X I444TORGB_SVE_2X RGBTOARGB8_SVE_2X
|
|
439
|
+
"st3b {z16.b, z17.b, z18.b}, p1, [%[dst_rgb24]] \n"
|
|
440
|
+
|
|
441
|
+
"99: \n"
|
|
442
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
443
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
444
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
445
|
+
[dst_rgb24] "+r"(dst_rgb24), // %[dst_argb]
|
|
446
|
+
[width] "+r"(width), // %[width]
|
|
447
|
+
[vl] "=&r"(vl) // %[vl]
|
|
448
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
449
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
450
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
static inline void I400ToARGBRow_SVE_SC(const uint8_t* src_y,
|
|
454
|
+
uint8_t* dst_argb,
|
|
455
|
+
const struct YuvConstants* yuvconstants,
|
|
456
|
+
int width) STREAMING_COMPATIBLE {
|
|
457
|
+
uint64_t vl;
|
|
458
|
+
asm volatile(
|
|
459
|
+
"cnth %[vl] \n"
|
|
460
|
+
"ptrue p0.b \n"
|
|
461
|
+
"dup z19.b, #255 \n" // Alpha
|
|
462
|
+
YUVTORGB_SVE_SETUP
|
|
463
|
+
"cmp %w[width], %w[vl] \n"
|
|
464
|
+
"mov z1.h, #128 \n" // U/V
|
|
465
|
+
"umullb z6.h, z30.b, z1.b \n"
|
|
466
|
+
"umullb z4.h, z28.b, z1.b \n" // DB
|
|
467
|
+
"umullb z5.h, z29.b, z1.b \n" // DR
|
|
468
|
+
"mla z6.h, p0/m, z31.h, z1.h \n" // DG
|
|
469
|
+
"sub z4.h, z4.h, z25.h \n"
|
|
470
|
+
"sub z5.h, z5.h, z27.h \n"
|
|
471
|
+
"sub z6.h, z26.h, z6.h \n"
|
|
472
|
+
"b.le 2f \n"
|
|
473
|
+
|
|
474
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
475
|
+
// generation overhead.
|
|
476
|
+
"ptrue p1.h \n"
|
|
477
|
+
"sub %w[width], %w[width], %w[vl] \n"
|
|
478
|
+
"1: \n" //
|
|
479
|
+
READYUV400_SVE I400TORGB_SVE RGBTOARGB8_SVE
|
|
480
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
481
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
482
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
483
|
+
"b.gt 1b \n"
|
|
484
|
+
"add %w[width], %w[width], %w[vl] \n"
|
|
485
|
+
|
|
486
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
487
|
+
"2: \n"
|
|
488
|
+
"whilelt p1.h, wzr, %w[width] \n" //
|
|
489
|
+
READYUV400_SVE I400TORGB_SVE RGBTOARGB8_SVE
|
|
490
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
491
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
492
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
493
|
+
[width] "+r"(width), // %[width]
|
|
494
|
+
[vl] "=&r"(vl) // %[vl]
|
|
495
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
496
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
497
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
static inline void I422ToARGBRow_SVE_SC(const uint8_t* src_y,
|
|
501
|
+
const uint8_t* src_u,
|
|
502
|
+
const uint8_t* src_v,
|
|
503
|
+
uint8_t* dst_argb,
|
|
504
|
+
const struct YuvConstants* yuvconstants,
|
|
505
|
+
int width) STREAMING_COMPATIBLE {
|
|
506
|
+
uint64_t vl;
|
|
507
|
+
asm volatile(
|
|
508
|
+
"cntb %[vl] \n"
|
|
509
|
+
"ptrue p0.b \n" //
|
|
510
|
+
YUVTORGB_SVE_SETUP
|
|
511
|
+
"dup z19.b, #255 \n" // Alpha
|
|
512
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
513
|
+
"b.lt 2f \n"
|
|
514
|
+
|
|
515
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
516
|
+
// generation overhead.
|
|
517
|
+
"ptrue p1.b \n"
|
|
518
|
+
"1: \n" //
|
|
519
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_2X
|
|
520
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
521
|
+
"st4b {z16.b, z17.b, z18.b, z19.b}, p1, [%[dst_argb]] \n"
|
|
522
|
+
"incb %[dst_argb], all, mul #4 \n"
|
|
523
|
+
"b.ge 1b \n"
|
|
524
|
+
|
|
525
|
+
"2: \n"
|
|
526
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
527
|
+
"b.eq 99f \n"
|
|
528
|
+
|
|
529
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
530
|
+
"cnth %[vl] \n"
|
|
531
|
+
"whilelt p1.b, wzr, %w[width] \n" //
|
|
532
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_2X
|
|
533
|
+
"st4b {z16.b, z17.b, z18.b, z19.b}, p1, [%[dst_argb]] \n"
|
|
534
|
+
|
|
535
|
+
"99: \n"
|
|
536
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
537
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
538
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
539
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
540
|
+
[width] "+r"(width), // %[width]
|
|
541
|
+
[vl] "=&r"(vl) // %[vl]
|
|
542
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
543
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
544
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
static inline void I422ToRGB24Row_SVE_SC(
|
|
548
|
+
const uint8_t* src_y,
|
|
549
|
+
const uint8_t* src_u,
|
|
550
|
+
const uint8_t* src_v,
|
|
551
|
+
uint8_t* dst_argb,
|
|
552
|
+
const struct YuvConstants* yuvconstants,
|
|
553
|
+
int width) STREAMING_COMPATIBLE {
|
|
554
|
+
uint64_t vl;
|
|
555
|
+
asm volatile(
|
|
556
|
+
"cntb %[vl] \n"
|
|
557
|
+
"ptrue p0.b \n" //
|
|
558
|
+
YUVTORGB_SVE_SETUP
|
|
559
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
560
|
+
"b.lt 2f \n"
|
|
561
|
+
|
|
562
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
563
|
+
// generation overhead.
|
|
564
|
+
"ptrue p1.b \n"
|
|
565
|
+
"1: \n" //
|
|
566
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_2X
|
|
567
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
568
|
+
"st3b {z16.b, z17.b, z18.b}, p1, [%[dst_argb]] \n"
|
|
569
|
+
"incb %[dst_argb], all, mul #3 \n"
|
|
570
|
+
"b.ge 1b \n"
|
|
571
|
+
|
|
572
|
+
"2: \n"
|
|
573
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
574
|
+
"b.eq 99f \n"
|
|
575
|
+
|
|
576
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
577
|
+
"cnth %[vl] \n"
|
|
578
|
+
"whilelt p1.b, wzr, %w[width] \n" //
|
|
579
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_2X
|
|
580
|
+
"st3b {z16.b, z17.b, z18.b}, p1, [%[dst_argb]] \n"
|
|
581
|
+
|
|
582
|
+
"99: \n"
|
|
583
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
584
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
585
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
586
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
587
|
+
[width] "+r"(width), // %[width]
|
|
588
|
+
[vl] "=&r"(vl) // %[vl]
|
|
589
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
590
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
591
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
#define RGB8TORGB565_SVE_FROM_TOP_2X \
|
|
595
|
+
"sri z18.h, z17.h, #5 \n" /* rrrrrgggggg00000 */ \
|
|
596
|
+
"sri z22.h, z21.h, #5 \n" /* rrrrrgggggg00000 */ \
|
|
597
|
+
"sri z18.h, z16.h, #11 \n" /* rrrrrggggggbbbbb */ \
|
|
598
|
+
"sri z22.h, z20.h, #11 \n" /* rrrrrggggggbbbbb */ \
|
|
599
|
+
"mov z19.d, z22.d \n"
|
|
600
|
+
|
|
601
|
+
static inline void I422ToRGB565Row_SVE_SC(
|
|
602
|
+
const uint8_t* src_y,
|
|
603
|
+
const uint8_t* src_u,
|
|
604
|
+
const uint8_t* src_v,
|
|
605
|
+
uint8_t* dst_rgb565,
|
|
606
|
+
const struct YuvConstants* yuvconstants,
|
|
607
|
+
int width) STREAMING_COMPATIBLE {
|
|
608
|
+
uint64_t vl;
|
|
609
|
+
asm volatile(
|
|
610
|
+
"cntb %[vl] \n"
|
|
611
|
+
"ptrue p0.b \n" //
|
|
612
|
+
YUVTORGB_SVE_SETUP
|
|
613
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
614
|
+
"b.lt 2f \n"
|
|
615
|
+
|
|
616
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
617
|
+
// generation overhead.
|
|
618
|
+
"ptrue p1.b \n"
|
|
619
|
+
"1: \n" //
|
|
620
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_TOP_2X
|
|
621
|
+
"subs %w[width], %w[width], %w[vl] \n" //
|
|
622
|
+
RGB8TORGB565_SVE_FROM_TOP_2X
|
|
623
|
+
"st2h {z18.h, z19.h}, p1, [%[dst]] \n"
|
|
624
|
+
"incb %[dst], all, mul #2 \n"
|
|
625
|
+
"b.ge 1b \n"
|
|
626
|
+
|
|
627
|
+
"2: \n"
|
|
628
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
629
|
+
"b.eq 99f \n"
|
|
630
|
+
|
|
631
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
632
|
+
"cnth %[vl] \n"
|
|
633
|
+
"whilelt p1.b, wzr, %w[width] \n" //
|
|
634
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_TOP_2X
|
|
635
|
+
RGB8TORGB565_SVE_FROM_TOP_2X
|
|
636
|
+
// Need to permute the data on the final iteration such that the
|
|
637
|
+
// predicates (.b) line up with the 16-bit element data.
|
|
638
|
+
"trn1 z20.b, z18.b, z19.b \n"
|
|
639
|
+
"trn2 z21.b, z18.b, z19.b \n"
|
|
640
|
+
"st2b {z20.b, z21.b}, p1, [%[dst]] \n"
|
|
641
|
+
|
|
642
|
+
"99: \n"
|
|
643
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
644
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
645
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
646
|
+
[dst] "+r"(dst_rgb565), // %[dst]
|
|
647
|
+
[width] "+r"(width), // %[width]
|
|
648
|
+
[vl] "=&r"(vl) // %[vl]
|
|
649
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
650
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
651
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
#define RGB8TOARGB1555_SVE_FROM_TOP_2X \
|
|
655
|
+
"dup z0.h, #0x8000 \n" /* 1000000000000000 */ \
|
|
656
|
+
"dup z1.h, #0x8000 \n" /* 1000000000000000 */ \
|
|
657
|
+
"sri z0.h, z18.h, #1 \n" /* 1rrrrrxxxxxxxxxx */ \
|
|
658
|
+
"sri z1.h, z22.h, #1 \n" /* 1rrrrrxxxxxxxxxx */ \
|
|
659
|
+
"sri z0.h, z17.h, #6 \n" /* 1rrrrrgggggxxxxx */ \
|
|
660
|
+
"sri z1.h, z21.h, #6 \n" /* 1rrrrrgggggxxxxx */ \
|
|
661
|
+
"sri z0.h, z16.h, #11 \n" /* 1rrrrrgggggbbbbb */ \
|
|
662
|
+
"sri z1.h, z20.h, #11 \n" /* 1rrrrrgggggbbbbb */
|
|
663
|
+
|
|
664
|
+
static inline void I422ToARGB1555Row_SVE_SC(
|
|
665
|
+
const uint8_t* src_y,
|
|
666
|
+
const uint8_t* src_u,
|
|
667
|
+
const uint8_t* src_v,
|
|
668
|
+
uint8_t* dst_argb1555,
|
|
669
|
+
const struct YuvConstants* yuvconstants,
|
|
670
|
+
int width) STREAMING_COMPATIBLE {
|
|
671
|
+
uint64_t vl;
|
|
672
|
+
asm volatile(
|
|
673
|
+
"cntb %[vl] \n"
|
|
674
|
+
"ptrue p0.b \n" //
|
|
675
|
+
YUVTORGB_SVE_SETUP
|
|
676
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
677
|
+
"b.lt 2f \n"
|
|
678
|
+
|
|
679
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
680
|
+
// generation overhead.
|
|
681
|
+
"ptrue p1.b \n"
|
|
682
|
+
"1: \n" //
|
|
683
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_TOP_2X
|
|
684
|
+
"subs %w[width], %w[width], %w[vl] \n" //
|
|
685
|
+
RGB8TOARGB1555_SVE_FROM_TOP_2X
|
|
686
|
+
"st2h {z0.h, z1.h}, p1, [%[dst]] \n"
|
|
687
|
+
"incb %[dst], all, mul #2 \n"
|
|
688
|
+
"b.ge 1b \n"
|
|
689
|
+
|
|
690
|
+
"2: \n"
|
|
691
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
692
|
+
"b.eq 99f \n"
|
|
693
|
+
|
|
694
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
695
|
+
"cnth %[vl] \n"
|
|
696
|
+
"whilelt p1.b, wzr, %w[width] \n" //
|
|
697
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_TOP_2X
|
|
698
|
+
RGB8TOARGB1555_SVE_FROM_TOP_2X
|
|
699
|
+
"st2h {z0.h, z1.h}, p1, [%[dst]] \n"
|
|
700
|
+
|
|
701
|
+
"99: \n"
|
|
702
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
703
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
704
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
705
|
+
[dst] "+r"(dst_argb1555), // %[dst]
|
|
706
|
+
[width] "+r"(width), // %[width]
|
|
707
|
+
[vl] "=&r"(vl) // %[vl]
|
|
708
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
709
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
710
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
#define RGB8TOARGB4444_SVE_FROM_TOP_2X \
|
|
714
|
+
"dup z0.h, #0xf000 \n" /* 1111000000000000 */ \
|
|
715
|
+
"dup z1.h, #0xf000 \n" /* 1111000000000000 */ \
|
|
716
|
+
"sri z0.h, z18.h, #4 \n" /* 1111rrrrxxxxxxxx */ \
|
|
717
|
+
"sri z1.h, z22.h, #4 \n" /* 1111rrrrxxxxxxxx */ \
|
|
718
|
+
"sri z0.h, z17.h, #8 \n" /* 1111rrrrggggxxxx */ \
|
|
719
|
+
"sri z1.h, z21.h, #8 \n" /* 1111rrrrggggxxxx */ \
|
|
720
|
+
"sri z0.h, z16.h, #12 \n" /* 1111rrrrggggbbbb */ \
|
|
721
|
+
"sri z1.h, z20.h, #12 \n" /* 1111rrrrggggbbbb */
|
|
722
|
+
|
|
723
|
+
static inline void I422ToARGB4444Row_SVE_SC(
|
|
724
|
+
const uint8_t* src_y,
|
|
725
|
+
const uint8_t* src_u,
|
|
726
|
+
const uint8_t* src_v,
|
|
727
|
+
uint8_t* dst_argb4444,
|
|
728
|
+
const struct YuvConstants* yuvconstants,
|
|
729
|
+
int width) STREAMING_COMPATIBLE {
|
|
730
|
+
uint64_t vl;
|
|
731
|
+
asm volatile(
|
|
732
|
+
"cntb %[vl] \n"
|
|
733
|
+
"ptrue p0.b \n" //
|
|
734
|
+
YUVTORGB_SVE_SETUP
|
|
735
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
736
|
+
"b.lt 2f \n"
|
|
737
|
+
|
|
738
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
739
|
+
// generation overhead.
|
|
740
|
+
"ptrue p1.b \n"
|
|
741
|
+
"1: \n" //
|
|
742
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_TOP_2X
|
|
743
|
+
"subs %w[width], %w[width], %w[vl] \n" //
|
|
744
|
+
RGB8TOARGB4444_SVE_FROM_TOP_2X
|
|
745
|
+
"st2h {z0.h, z1.h}, p1, [%[dst]] \n"
|
|
746
|
+
"incb %[dst], all, mul #2 \n"
|
|
747
|
+
"b.ge 1b \n"
|
|
748
|
+
|
|
749
|
+
"2: \n"
|
|
750
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
751
|
+
"b.eq 99f \n"
|
|
752
|
+
|
|
753
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
754
|
+
"cnth %[vl] \n"
|
|
755
|
+
"whilelt p1.b, wzr, %w[width] \n" //
|
|
756
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X RGBTOARGB8_SVE_TOP_2X
|
|
757
|
+
RGB8TOARGB4444_SVE_FROM_TOP_2X
|
|
758
|
+
"st2h {z0.h, z1.h}, p1, [%[dst]] \n"
|
|
759
|
+
|
|
760
|
+
"99: \n"
|
|
761
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
762
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
763
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
764
|
+
[dst] "+r"(dst_argb4444), // %[dst]
|
|
765
|
+
[width] "+r"(width), // %[width]
|
|
766
|
+
[vl] "=&r"(vl) // %[vl]
|
|
767
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
768
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
769
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
static inline void I422ToRGBARow_SVE_SC(const uint8_t* src_y,
|
|
773
|
+
const uint8_t* src_u,
|
|
774
|
+
const uint8_t* src_v,
|
|
775
|
+
uint8_t* dst_argb,
|
|
776
|
+
const struct YuvConstants* yuvconstants,
|
|
777
|
+
int width) STREAMING_COMPATIBLE {
|
|
778
|
+
uint64_t vl;
|
|
779
|
+
asm volatile(
|
|
780
|
+
"cnth %[vl] \n"
|
|
781
|
+
"ptrue p0.b \n" //
|
|
782
|
+
YUVTORGB_SVE_SETUP
|
|
783
|
+
"dup z19.b, #255 \n" // Alpha
|
|
784
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
785
|
+
"b.le 2f \n"
|
|
786
|
+
|
|
787
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
788
|
+
// generation overhead.
|
|
789
|
+
"ptrue p1.h \n"
|
|
790
|
+
"1: \n" //
|
|
791
|
+
READYUV422_SVE I4XXTORGB_SVE RGBTORGBA8_SVE
|
|
792
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
793
|
+
"st2h {z19.h, z20.h}, p1, [%[dst_argb]] \n"
|
|
794
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
795
|
+
"b.gt 1b \n"
|
|
796
|
+
|
|
797
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
798
|
+
"2: \n"
|
|
799
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
800
|
+
"b.eq 99f \n"
|
|
801
|
+
|
|
802
|
+
"whilelt p1.h, wzr, %w[width] \n" //
|
|
803
|
+
READYUV422_SVE I4XXTORGB_SVE RGBTORGBA8_SVE
|
|
804
|
+
"st2h {z19.h, z20.h}, p1, [%[dst_argb]] \n"
|
|
805
|
+
|
|
806
|
+
"99: \n"
|
|
807
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
808
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
809
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
810
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
811
|
+
[width] "+r"(width), // %[width]
|
|
812
|
+
[vl] "=&r"(vl) // %[vl]
|
|
813
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
814
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
815
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
static inline void I422ToAR30Row_SVE_SC(const uint8_t* src_y,
|
|
819
|
+
const uint8_t* src_u,
|
|
820
|
+
const uint8_t* src_v,
|
|
821
|
+
uint8_t* dst_ar30,
|
|
822
|
+
const struct YuvConstants* yuvconstants,
|
|
823
|
+
int width) STREAMING_COMPATIBLE {
|
|
824
|
+
uint64_t vl;
|
|
825
|
+
// The limit is used for saturating the 2.14 red channel in STOREAR30_SVE_2X.
|
|
826
|
+
const uint16_t limit = 0x3ff0;
|
|
827
|
+
asm volatile(
|
|
828
|
+
"cnth %[vl] \n"
|
|
829
|
+
"ptrue p0.b \n" //
|
|
830
|
+
YUVTORGB_SVE_SETUP
|
|
831
|
+
"dup z23.h, %w[limit] \n"
|
|
832
|
+
"subs %w[width], %w[width], %w[vl], lsl #1 \n"
|
|
833
|
+
"b.le 2f \n"
|
|
834
|
+
|
|
835
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
836
|
+
// generation overhead.
|
|
837
|
+
"ptrue p1.b \n"
|
|
838
|
+
"ptrue p2.b \n"
|
|
839
|
+
"ptrue p3.b \n"
|
|
840
|
+
"1: \n" //
|
|
841
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X STOREAR30_SVE_2X
|
|
842
|
+
"subs %w[width], %w[width], %w[vl], lsl #1 \n"
|
|
843
|
+
"b.gt 1b \n"
|
|
844
|
+
|
|
845
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
846
|
+
"2: \n"
|
|
847
|
+
"adds %w[width], %w[width], %w[vl], lsl #1 \n"
|
|
848
|
+
"b.eq 99f \n"
|
|
849
|
+
|
|
850
|
+
"whilelt p1.b, wzr, %w[width] \n"
|
|
851
|
+
"whilelt p2.h, wzr, %w[width] \n"
|
|
852
|
+
"whilelt p3.h, %w[vl], %w[width] \n" //
|
|
853
|
+
READYUV422_SVE_2X I422TORGB_SVE_2X STOREAR30_SVE_2X
|
|
854
|
+
|
|
855
|
+
"99: \n"
|
|
856
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
857
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
858
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
859
|
+
[dst_ar30] "+r"(dst_ar30), // %[dst_ar30]
|
|
860
|
+
[width] "+r"(width), // %[width]
|
|
861
|
+
[vl] "=&r"(vl) // %[vl]
|
|
862
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
863
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
864
|
+
[limit] "r"(limit) // %[limit]
|
|
865
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
static inline void I422AlphaToARGBRow_SVE_SC(
|
|
869
|
+
const uint8_t* src_y,
|
|
870
|
+
const uint8_t* src_u,
|
|
871
|
+
const uint8_t* src_v,
|
|
872
|
+
const uint8_t* src_a,
|
|
873
|
+
uint8_t* dst_argb,
|
|
874
|
+
const struct YuvConstants* yuvconstants,
|
|
875
|
+
int width) STREAMING_COMPATIBLE {
|
|
876
|
+
uint64_t vl;
|
|
877
|
+
asm volatile(
|
|
878
|
+
"cntb %[vl] \n"
|
|
879
|
+
"ptrue p0.b \n" //
|
|
880
|
+
YUVTORGB_SVE_SETUP
|
|
881
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
882
|
+
"b.lt 2f \n"
|
|
883
|
+
|
|
884
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
885
|
+
// generation overhead.
|
|
886
|
+
"ptrue p1.b \n"
|
|
887
|
+
"1: \n" //
|
|
888
|
+
READYUV422_SVE_2X
|
|
889
|
+
"ld1b {z19.b}, p1/z, [%[src_a]] \n"
|
|
890
|
+
"add %[src_a], %[src_a], %[vl] \n" // Alpha
|
|
891
|
+
I422TORGB_SVE_2X RGBTOARGB8_SVE_2X
|
|
892
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
893
|
+
"st4b {z16.b, z17.b, z18.b, z19.b}, p1, [%[dst_argb]] \n"
|
|
894
|
+
"incb %[dst_argb], all, mul #4 \n"
|
|
895
|
+
"b.ge 1b \n"
|
|
896
|
+
|
|
897
|
+
"2: \n"
|
|
898
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
899
|
+
"b.eq 99f \n"
|
|
900
|
+
|
|
901
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
902
|
+
"cnth %[vl] \n"
|
|
903
|
+
"whilelt p1.b, wzr, %w[width] \n" //
|
|
904
|
+
READYUV422_SVE_2X
|
|
905
|
+
"ld1b {z19.b}, p1/z, [%[src_a]] \n" // Alpha
|
|
906
|
+
I422TORGB_SVE_2X RGBTOARGB8_SVE_2X
|
|
907
|
+
"st4b {z16.b, z17.b, z18.b, z19.b}, p1, [%[dst_argb]] \n"
|
|
908
|
+
|
|
909
|
+
"99: \n"
|
|
910
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
911
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
912
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
913
|
+
[src_a] "+r"(src_a), // %[src_a]
|
|
914
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
915
|
+
[width] "+r"(width), // %[width]
|
|
916
|
+
[vl] "=&r"(vl) // %[vl]
|
|
917
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
918
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
919
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
static inline void I444AlphaToARGBRow_SVE_SC(
|
|
923
|
+
const uint8_t* src_y,
|
|
924
|
+
const uint8_t* src_u,
|
|
925
|
+
const uint8_t* src_v,
|
|
926
|
+
const uint8_t* src_a,
|
|
927
|
+
uint8_t* dst_argb,
|
|
928
|
+
const struct YuvConstants* yuvconstants,
|
|
929
|
+
int width) STREAMING_COMPATIBLE {
|
|
930
|
+
uint64_t vl;
|
|
931
|
+
asm volatile(
|
|
932
|
+
"cnth %[vl] \n"
|
|
933
|
+
"ptrue p0.b \n" //
|
|
934
|
+
YUVTORGB_SVE_SETUP
|
|
935
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
936
|
+
"b.lt 2f \n"
|
|
937
|
+
|
|
938
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
939
|
+
// generation overhead.
|
|
940
|
+
"ptrue p1.h \n"
|
|
941
|
+
"1: \n" //
|
|
942
|
+
READYUV444_SVE
|
|
943
|
+
"ld1b {z19.h}, p1/z, [%[src_a]] \n"
|
|
944
|
+
"add %[src_a], %[src_a], %[vl] \n" // Alpha
|
|
945
|
+
I4XXTORGB_SVE RGBTOARGB8_SVE
|
|
946
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
947
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
948
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
949
|
+
"b.ge 1b \n"
|
|
950
|
+
|
|
951
|
+
"2: \n"
|
|
952
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
953
|
+
"b.eq 99f \n"
|
|
954
|
+
|
|
955
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
956
|
+
"whilelt p1.h, wzr, %w[width] \n" //
|
|
957
|
+
READYUV444_SVE
|
|
958
|
+
"ld1b {z19.h}, p1/z, [%[src_a]] \n" // Alpha
|
|
959
|
+
I4XXTORGB_SVE RGBTOARGB8_SVE
|
|
960
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
961
|
+
|
|
962
|
+
"99: \n"
|
|
963
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
964
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
965
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
966
|
+
[src_a] "+r"(src_a), // %[src_a]
|
|
967
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
968
|
+
[width] "+r"(width), // %[width]
|
|
969
|
+
[vl] "=&r"(vl) // %[vl]
|
|
970
|
+
: [kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
971
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias) // %[kRGBCoeffBias]
|
|
972
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
static inline void NV12ToARGBRow_SVE_SC(const uint8_t* src_y,
|
|
976
|
+
const uint8_t* src_uv,
|
|
977
|
+
uint8_t* dst_argb,
|
|
978
|
+
const struct YuvConstants* yuvconstants,
|
|
979
|
+
int width) STREAMING_COMPATIBLE {
|
|
980
|
+
uint64_t vl;
|
|
981
|
+
asm("cntb %0" : "=r"(vl));
|
|
982
|
+
int width_last_y = width & (vl - 1);
|
|
983
|
+
int width_last_uv = width_last_y + (width_last_y & 1);
|
|
984
|
+
asm volatile(
|
|
985
|
+
"ptrue p0.b \n" //
|
|
986
|
+
YUVTORGB_SVE_SETUP
|
|
987
|
+
"dup z19.b, #255 \n" // Alpha
|
|
988
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
989
|
+
"b.lt 2f \n"
|
|
990
|
+
|
|
991
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
992
|
+
// generation overhead.
|
|
993
|
+
"ptrue p1.b \n"
|
|
994
|
+
"ptrue p2.b \n"
|
|
995
|
+
"1: \n" //
|
|
996
|
+
READNV_SVE_2X NVTORGB_SVE_2X(b, t) RGBTOARGB8_SVE_2X
|
|
997
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
998
|
+
"st4b {z16.b, z17.b, z18.b, z19.b}, p1, [%[dst_argb]] \n"
|
|
999
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1000
|
+
"b.ge 1b \n"
|
|
1001
|
+
|
|
1002
|
+
"2: \n"
|
|
1003
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1004
|
+
"b.eq 99f \n"
|
|
1005
|
+
|
|
1006
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1007
|
+
"whilelt p1.b, wzr, %w[width_last_y] \n"
|
|
1008
|
+
"whilelt p2.b, wzr, %w[width_last_uv] \n" //
|
|
1009
|
+
READNV_SVE_2X NVTORGB_SVE_2X(b, t) RGBTOARGB8_SVE_2X
|
|
1010
|
+
"st4b {z16.b, z17.b, z18.b, z19.b}, p1, [%[dst_argb]] \n"
|
|
1011
|
+
|
|
1012
|
+
"99: \n"
|
|
1013
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1014
|
+
[src_uv] "+r"(src_uv), // %[src_uv]
|
|
1015
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1016
|
+
[width] "+r"(width) // %[width]
|
|
1017
|
+
: [vl] "r"(vl), // %[vl]
|
|
1018
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1019
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1020
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1021
|
+
[width_last_uv] "r"(width_last_uv) // %[width_last_uv]
|
|
1022
|
+
: "cc", "memory", YUVTORGB_SVE_REGS, "p2");
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
static inline void NV21ToARGBRow_SVE_SC(const uint8_t* src_y,
|
|
1026
|
+
const uint8_t* src_vu,
|
|
1027
|
+
uint8_t* dst_argb,
|
|
1028
|
+
const struct YuvConstants* yuvconstants,
|
|
1029
|
+
int width) STREAMING_COMPATIBLE {
|
|
1030
|
+
uint64_t vl;
|
|
1031
|
+
asm("cntb %0" : "=r"(vl));
|
|
1032
|
+
int width_last_y = width & (vl - 1);
|
|
1033
|
+
int width_last_uv = width_last_y + (width_last_y & 1);
|
|
1034
|
+
asm volatile(
|
|
1035
|
+
"ptrue p0.b \n" //
|
|
1036
|
+
YUVTORGB_SVE_SETUP
|
|
1037
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1038
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1039
|
+
"b.lt 2f \n"
|
|
1040
|
+
|
|
1041
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1042
|
+
// generation overhead.
|
|
1043
|
+
"ptrue p1.b \n"
|
|
1044
|
+
"ptrue p2.b \n"
|
|
1045
|
+
"1: \n" //
|
|
1046
|
+
READNV_SVE_2X NVTORGB_SVE_2X(t, b) RGBTOARGB8_SVE_2X
|
|
1047
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1048
|
+
"st4b {z16.b, z17.b, z18.b, z19.b}, p1, [%[dst_argb]] \n"
|
|
1049
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1050
|
+
"b.ge 1b \n"
|
|
1051
|
+
|
|
1052
|
+
"2: \n"
|
|
1053
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1054
|
+
"b.eq 99f \n"
|
|
1055
|
+
|
|
1056
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1057
|
+
"whilelt p1.b, wzr, %w[width_last_y] \n"
|
|
1058
|
+
"whilelt p2.b, wzr, %w[width_last_uv] \n" //
|
|
1059
|
+
READNV_SVE_2X NVTORGB_SVE_2X(t, b) RGBTOARGB8_SVE_2X
|
|
1060
|
+
"st4b {z16.b, z17.b, z18.b, z19.b}, p1, [%[dst_argb]] \n"
|
|
1061
|
+
|
|
1062
|
+
"99: \n"
|
|
1063
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1064
|
+
[src_uv] "+r"(src_vu), // %[src_vu]
|
|
1065
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1066
|
+
[width] "+r"(width) // %[width]
|
|
1067
|
+
: [vl] "r"(vl), // %[vl]
|
|
1068
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1069
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1070
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1071
|
+
[width_last_uv] "r"(width_last_uv) // %[width_last_uv]
|
|
1072
|
+
: "cc", "memory", YUVTORGB_SVE_REGS, "p2");
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
static inline void NV12ToRGB24Row_SVE_SC(
|
|
1076
|
+
const uint8_t* src_y,
|
|
1077
|
+
const uint8_t* src_uv,
|
|
1078
|
+
uint8_t* dst_rgb24,
|
|
1079
|
+
const struct YuvConstants* yuvconstants,
|
|
1080
|
+
int width) STREAMING_COMPATIBLE {
|
|
1081
|
+
uint64_t vl;
|
|
1082
|
+
asm("cntb %0" : "=r"(vl));
|
|
1083
|
+
int width_last_y = width & (vl - 1);
|
|
1084
|
+
int width_last_uv = width_last_y + (width_last_y & 1);
|
|
1085
|
+
asm volatile(
|
|
1086
|
+
"ptrue p0.b \n" //
|
|
1087
|
+
YUVTORGB_SVE_SETUP
|
|
1088
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1089
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1090
|
+
"b.lt 2f \n"
|
|
1091
|
+
|
|
1092
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1093
|
+
// generation overhead.
|
|
1094
|
+
"ptrue p1.b \n"
|
|
1095
|
+
"ptrue p2.b \n"
|
|
1096
|
+
"1: \n" //
|
|
1097
|
+
READNV_SVE_2X NVTORGB_SVE_2X(b, t) RGBTOARGB8_SVE_2X
|
|
1098
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1099
|
+
"st3b {z16.b, z17.b, z18.b}, p1, [%[dst_rgb24]] \n"
|
|
1100
|
+
"incb %[dst_rgb24], all, mul #3 \n"
|
|
1101
|
+
"b.ge 1b \n"
|
|
1102
|
+
|
|
1103
|
+
"2: \n"
|
|
1104
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1105
|
+
"b.eq 99f \n"
|
|
1106
|
+
|
|
1107
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1108
|
+
"whilelt p1.b, wzr, %w[width_last_y] \n"
|
|
1109
|
+
"whilelt p2.b, wzr, %w[width_last_uv] \n" //
|
|
1110
|
+
READNV_SVE_2X NVTORGB_SVE_2X(b, t) RGBTOARGB8_SVE_2X
|
|
1111
|
+
"st3b {z16.b, z17.b, z18.b}, p1, [%[dst_rgb24]] \n"
|
|
1112
|
+
|
|
1113
|
+
"99: \n"
|
|
1114
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1115
|
+
[src_uv] "+r"(src_uv), // %[src_uv]
|
|
1116
|
+
[dst_rgb24] "+r"(dst_rgb24), // %[dst_rgb24]
|
|
1117
|
+
[width] "+r"(width) // %[width]
|
|
1118
|
+
: [vl] "r"(vl), // %[vl]
|
|
1119
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1120
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1121
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1122
|
+
[width_last_uv] "r"(width_last_uv) // %[width_last_uv]
|
|
1123
|
+
: "cc", "memory", YUVTORGB_SVE_REGS, "p2");
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
static inline void NV21ToRGB24Row_SVE_SC(
|
|
1127
|
+
const uint8_t* src_y,
|
|
1128
|
+
const uint8_t* src_vu,
|
|
1129
|
+
uint8_t* dst_rgb24,
|
|
1130
|
+
const struct YuvConstants* yuvconstants,
|
|
1131
|
+
int width) STREAMING_COMPATIBLE {
|
|
1132
|
+
uint64_t vl;
|
|
1133
|
+
asm("cntb %0" : "=r"(vl));
|
|
1134
|
+
int width_last_y = width & (vl - 1);
|
|
1135
|
+
int width_last_uv = width_last_y + (width_last_y & 1);
|
|
1136
|
+
asm volatile(
|
|
1137
|
+
"ptrue p0.b \n" //
|
|
1138
|
+
YUVTORGB_SVE_SETUP
|
|
1139
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1140
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1141
|
+
"b.lt 2f \n"
|
|
1142
|
+
|
|
1143
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1144
|
+
// generation overhead.
|
|
1145
|
+
"ptrue p1.b \n"
|
|
1146
|
+
"ptrue p2.b \n"
|
|
1147
|
+
"1: \n" //
|
|
1148
|
+
READNV_SVE_2X NVTORGB_SVE_2X(t, b) RGBTOARGB8_SVE_2X
|
|
1149
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1150
|
+
"st3b {z16.b, z17.b, z18.b}, p1, [%[dst_rgb24]] \n"
|
|
1151
|
+
"incb %[dst_rgb24], all, mul #3 \n"
|
|
1152
|
+
"b.ge 1b \n"
|
|
1153
|
+
|
|
1154
|
+
"2: \n"
|
|
1155
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1156
|
+
"b.eq 99f \n"
|
|
1157
|
+
|
|
1158
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1159
|
+
"whilelt p1.b, wzr, %w[width_last_y] \n"
|
|
1160
|
+
"whilelt p2.b, wzr, %w[width_last_uv] \n" //
|
|
1161
|
+
READNV_SVE_2X NVTORGB_SVE_2X(t, b) RGBTOARGB8_SVE_2X
|
|
1162
|
+
"st3b {z16.b, z17.b, z18.b}, p1, [%[dst_rgb24]] \n"
|
|
1163
|
+
|
|
1164
|
+
"99: \n"
|
|
1165
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1166
|
+
[src_uv] "+r"(src_vu), // %[src_vu]
|
|
1167
|
+
[dst_rgb24] "+r"(dst_rgb24), // %[dst_rgb24]
|
|
1168
|
+
[width] "+r"(width) // %[width]
|
|
1169
|
+
: [vl] "r"(vl), // %[vl]
|
|
1170
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1171
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1172
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1173
|
+
[width_last_uv] "r"(width_last_uv) // %[width_last_uv]
|
|
1174
|
+
: "cc", "memory", YUVTORGB_SVE_REGS, "p2");
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
#define READYUY2_SVE \
|
|
1178
|
+
"ld1w {z0.s}, p2/z, [%[src_yuy2]] \n" /* YUYV */ \
|
|
1179
|
+
"incb %[src_yuy2] \n" \
|
|
1180
|
+
"prfm pldl1keep, [%[src_yuy2], 448] \n" \
|
|
1181
|
+
"tbl z1.b, {z0.b}, z22.b \n" /* UVUV */ \
|
|
1182
|
+
"trn1 z0.b, z0.b, z0.b \n" /* YYYY */
|
|
1183
|
+
|
|
1184
|
+
static inline void YUY2ToARGBRow_SVE_SC(const uint8_t* src_yuy2,
|
|
1185
|
+
uint8_t* dst_argb,
|
|
1186
|
+
const struct YuvConstants* yuvconstants,
|
|
1187
|
+
int width) STREAMING_COMPATIBLE {
|
|
1188
|
+
uint32_t nv_uv_start = 0x03010301U;
|
|
1189
|
+
uint32_t nv_uv_step = 0x04040404U;
|
|
1190
|
+
uint64_t vl;
|
|
1191
|
+
asm("cnth %0" : "=r"(vl));
|
|
1192
|
+
int width_last_y = width & (vl - 1);
|
|
1193
|
+
int width_last_uv = width_last_y + (width_last_y & 1);
|
|
1194
|
+
asm volatile(
|
|
1195
|
+
"ptrue p0.b \n"
|
|
1196
|
+
"index z22.s, %w[nv_uv_start], %w[nv_uv_step] \n"
|
|
1197
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1198
|
+
YUVTORGB_SVE_SETUP
|
|
1199
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1200
|
+
"b.lt 2f \n"
|
|
1201
|
+
|
|
1202
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1203
|
+
// generation overhead.
|
|
1204
|
+
"ptrue p1.h \n"
|
|
1205
|
+
"ptrue p2.h \n"
|
|
1206
|
+
"1: \n" //
|
|
1207
|
+
READYUY2_SVE NVTORGB_SVE RGBTOARGB8_SVE
|
|
1208
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1209
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1210
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1211
|
+
"b.ge 1b \n"
|
|
1212
|
+
|
|
1213
|
+
"2: \n"
|
|
1214
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1215
|
+
"b.eq 99f \n"
|
|
1216
|
+
|
|
1217
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1218
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n"
|
|
1219
|
+
"whilelt p2.h, wzr, %w[width_last_uv] \n" //
|
|
1220
|
+
READYUY2_SVE NVTORGB_SVE RGBTOARGB8_SVE
|
|
1221
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1222
|
+
|
|
1223
|
+
"99: \n"
|
|
1224
|
+
: [src_yuy2] "+r"(src_yuy2), // %[src_yuy2]
|
|
1225
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1226
|
+
[width] "+r"(width) // %[width]
|
|
1227
|
+
: [vl] "r"(vl), // %[vl]
|
|
1228
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1229
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1230
|
+
[nv_uv_start] "r"(nv_uv_start), // %[nv_uv_start]
|
|
1231
|
+
[nv_uv_step] "r"(nv_uv_step), // %[nv_uv_step]
|
|
1232
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1233
|
+
[width_last_uv] "r"(width_last_uv) // %[width_last_uv]
|
|
1234
|
+
: "cc", "memory", YUVTORGB_SVE_REGS, "p2");
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
#define READUYVY_SVE \
|
|
1238
|
+
"ld1w {z0.s}, p2/z, [%[src_uyvy]] \n" /* UYVY */ \
|
|
1239
|
+
"incb %[src_uyvy] \n" \
|
|
1240
|
+
"prfm pldl1keep, [%[src_uyvy], 448] \n" \
|
|
1241
|
+
"tbl z1.b, {z0.b}, z22.b \n" /* UVUV */ \
|
|
1242
|
+
"trn2 z0.b, z0.b, z0.b \n" /* YYYY */
|
|
1243
|
+
|
|
1244
|
+
static inline void UYVYToARGBRow_SVE_SC(const uint8_t* src_uyvy,
|
|
1245
|
+
uint8_t* dst_argb,
|
|
1246
|
+
const struct YuvConstants* yuvconstants,
|
|
1247
|
+
int width) STREAMING_COMPATIBLE {
|
|
1248
|
+
uint32_t nv_uv_start = 0x02000200U;
|
|
1249
|
+
uint32_t nv_uv_step = 0x04040404U;
|
|
1250
|
+
uint64_t vl;
|
|
1251
|
+
asm("cnth %0" : "=r"(vl));
|
|
1252
|
+
int width_last_y = width & (vl - 1);
|
|
1253
|
+
int width_last_uv = width_last_y + (width_last_y & 1);
|
|
1254
|
+
asm volatile(
|
|
1255
|
+
"ptrue p0.b \n"
|
|
1256
|
+
"index z22.s, %w[nv_uv_start], %w[nv_uv_step] \n"
|
|
1257
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1258
|
+
YUVTORGB_SVE_SETUP
|
|
1259
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1260
|
+
"b.lt 2f \n"
|
|
1261
|
+
|
|
1262
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1263
|
+
// generation overhead.
|
|
1264
|
+
"ptrue p1.h \n"
|
|
1265
|
+
"ptrue p2.h \n"
|
|
1266
|
+
"1: \n" //
|
|
1267
|
+
READUYVY_SVE NVTORGB_SVE RGBTOARGB8_SVE
|
|
1268
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1269
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1270
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1271
|
+
"b.ge 1b \n"
|
|
1272
|
+
|
|
1273
|
+
"2: \n"
|
|
1274
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1275
|
+
"b.eq 99f \n"
|
|
1276
|
+
|
|
1277
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1278
|
+
"2: \n"
|
|
1279
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n"
|
|
1280
|
+
"whilelt p2.h, wzr, %w[width_last_uv] \n" //
|
|
1281
|
+
READUYVY_SVE NVTORGB_SVE RGBTOARGB8_SVE
|
|
1282
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1283
|
+
|
|
1284
|
+
"99: \n"
|
|
1285
|
+
: [src_uyvy] "+r"(src_uyvy), // %[src_yuy2]
|
|
1286
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1287
|
+
[width] "+r"(width) // %[width]
|
|
1288
|
+
: [vl] "r"(vl), // %[vl]
|
|
1289
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1290
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1291
|
+
[nv_uv_start] "r"(nv_uv_start), // %[nv_uv_start]
|
|
1292
|
+
[nv_uv_step] "r"(nv_uv_step), // %[nv_uv_step]
|
|
1293
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1294
|
+
[width_last_uv] "r"(width_last_uv) // %[width_last_uv]
|
|
1295
|
+
: "cc", "memory", YUVTORGB_SVE_REGS, "p2");
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
static inline void I210ToARGBRow_SVE_SC(const uint16_t* src_y,
|
|
1299
|
+
const uint16_t* src_u,
|
|
1300
|
+
const uint16_t* src_v,
|
|
1301
|
+
uint8_t* dst_argb,
|
|
1302
|
+
const struct YuvConstants* yuvconstants,
|
|
1303
|
+
int width) STREAMING_COMPATIBLE {
|
|
1304
|
+
uint64_t vl;
|
|
1305
|
+
asm("cnth %0" : "=r"(vl));
|
|
1306
|
+
int width_last_y = width & (vl - 1);
|
|
1307
|
+
asm volatile(
|
|
1308
|
+
"ptrue p0.b \n" //
|
|
1309
|
+
YUVTORGB_SVE_SETUP
|
|
1310
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1311
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1312
|
+
"b.lt 2f \n"
|
|
1313
|
+
|
|
1314
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1315
|
+
// generation overhead.
|
|
1316
|
+
"ptrue p1.h \n"
|
|
1317
|
+
"1: \n" //
|
|
1318
|
+
READI210_SVE I4XXTORGB_SVE RGBTOARGB8_SVE
|
|
1319
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1320
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1321
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1322
|
+
"b.ge 1b \n"
|
|
1323
|
+
|
|
1324
|
+
"2: \n"
|
|
1325
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1326
|
+
"b.eq 99f \n"
|
|
1327
|
+
|
|
1328
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1329
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n" //
|
|
1330
|
+
READI210_SVE I4XXTORGB_SVE RGBTOARGB8_SVE
|
|
1331
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1332
|
+
|
|
1333
|
+
"99: \n"
|
|
1334
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1335
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
1336
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
1337
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1338
|
+
[width] "+r"(width) // %[width]
|
|
1339
|
+
: [vl] "r"(vl), // %[vl]
|
|
1340
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1341
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1342
|
+
[width_last_y] "r"(width_last_y) // %[width_last_y]
|
|
1343
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
static inline void I210AlphaToARGBRow_SVE_SC(
|
|
1347
|
+
const uint16_t* src_y,
|
|
1348
|
+
const uint16_t* src_u,
|
|
1349
|
+
const uint16_t* src_v,
|
|
1350
|
+
const uint16_t* src_a,
|
|
1351
|
+
uint8_t* dst_argb,
|
|
1352
|
+
const struct YuvConstants* yuvconstants,
|
|
1353
|
+
int width) STREAMING_COMPATIBLE {
|
|
1354
|
+
uint64_t vl;
|
|
1355
|
+
asm("cnth %0" : "=r"(vl));
|
|
1356
|
+
int width_last_y = width & (vl - 1);
|
|
1357
|
+
asm volatile(
|
|
1358
|
+
"ptrue p0.b \n" //
|
|
1359
|
+
YUVTORGB_SVE_SETUP
|
|
1360
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1361
|
+
"b.lt 2f \n"
|
|
1362
|
+
|
|
1363
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1364
|
+
// generation overhead.
|
|
1365
|
+
"ptrue p1.h \n"
|
|
1366
|
+
"1: \n" //
|
|
1367
|
+
READI210_SVE
|
|
1368
|
+
"ld1h {z19.h}, p1/z, [%[src_a]] \n" //
|
|
1369
|
+
I4XXTORGB_SVE
|
|
1370
|
+
"incb %[src_a] \n" //
|
|
1371
|
+
RGBATOARGB8_SVE
|
|
1372
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1373
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1374
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1375
|
+
"b.ge 1b \n"
|
|
1376
|
+
|
|
1377
|
+
"2: \n"
|
|
1378
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1379
|
+
"b.eq 99f \n"
|
|
1380
|
+
|
|
1381
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1382
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n" //
|
|
1383
|
+
READI210_SVE
|
|
1384
|
+
"ld1h {z19.h}, p1/z, [%[src_a]] \n" //
|
|
1385
|
+
I4XXTORGB_SVE RGBATOARGB8_SVE
|
|
1386
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1387
|
+
|
|
1388
|
+
"99: \n"
|
|
1389
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1390
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
1391
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
1392
|
+
[src_a] "+r"(src_a), // %[src_a]
|
|
1393
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1394
|
+
[width] "+r"(width) // %[width]
|
|
1395
|
+
: [vl] "r"(vl), // %[vl]
|
|
1396
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1397
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1398
|
+
[width_last_y] "r"(width_last_y) // %[width_last_y]
|
|
1399
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
static inline void I210ToAR30Row_SVE_SC(const uint16_t* src_y,
|
|
1403
|
+
const uint16_t* src_u,
|
|
1404
|
+
const uint16_t* src_v,
|
|
1405
|
+
uint8_t* dst_ar30,
|
|
1406
|
+
const struct YuvConstants* yuvconstants,
|
|
1407
|
+
int width) STREAMING_COMPATIBLE {
|
|
1408
|
+
uint64_t vl;
|
|
1409
|
+
asm("cnth %0" : "=r"(vl));
|
|
1410
|
+
int width_last_y = width & (2 * vl - 1);
|
|
1411
|
+
int width_last_uv = (width_last_y + 1) / 2;
|
|
1412
|
+
// The limit is used for saturating the 2.14 red channel in STOREAR30_SVE_2X.
|
|
1413
|
+
uint16_t limit = 0x3ff0;
|
|
1414
|
+
asm volatile(
|
|
1415
|
+
"ptrue p0.b \n" //
|
|
1416
|
+
YUVTORGB_SVE_SETUP
|
|
1417
|
+
"dup z23.h, %w[limit] \n"
|
|
1418
|
+
"subs %w[width], %w[width], %w[vl], lsl #1 \n"
|
|
1419
|
+
"b.lt 2f \n"
|
|
1420
|
+
|
|
1421
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1422
|
+
// generation overhead.
|
|
1423
|
+
"ptrue p1.h \n"
|
|
1424
|
+
"ptrue p2.h \n"
|
|
1425
|
+
"ptrue p3.h \n"
|
|
1426
|
+
"1: \n" //
|
|
1427
|
+
READI210_SVE_2X I422TORGB_SVE_2X STOREAR30_SVE_2X
|
|
1428
|
+
"subs %w[width], %w[width], %w[vl], lsl #1 \n"
|
|
1429
|
+
"b.ge 1b \n"
|
|
1430
|
+
|
|
1431
|
+
"2: \n"
|
|
1432
|
+
"adds %w[width], %w[width], %w[vl], lsl #1 \n"
|
|
1433
|
+
"b.eq 99f \n"
|
|
1434
|
+
|
|
1435
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1436
|
+
"whilelt p1.h, wzr, %w[width_last_uv] \n"
|
|
1437
|
+
"whilelt p2.h, wzr, %w[width_last_y] \n"
|
|
1438
|
+
"whilelt p3.h, %w[vl], %w[width_last_y] \n" //
|
|
1439
|
+
READI210_SVE_2X I422TORGB_SVE_2X STOREAR30_SVE_2X
|
|
1440
|
+
|
|
1441
|
+
"99: \n"
|
|
1442
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1443
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
1444
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
1445
|
+
[dst_ar30] "+r"(dst_ar30), // %[dst_ar30]
|
|
1446
|
+
[width] "+r"(width) // %[width]
|
|
1447
|
+
: [vl] "r"(vl), // %[vl]
|
|
1448
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1449
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1450
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1451
|
+
[width_last_uv] "r"(width_last_uv), // %[width_last_uv]
|
|
1452
|
+
[limit] "r"(limit) // %[limit]
|
|
1453
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
// P210 has 10 bits in msb of 16 bit NV12 style layout.
|
|
1457
|
+
static inline void P210ToARGBRow_SVE_SC(const uint16_t* src_y,
|
|
1458
|
+
const uint16_t* src_uv,
|
|
1459
|
+
uint8_t* dst_argb,
|
|
1460
|
+
const struct YuvConstants* yuvconstants,
|
|
1461
|
+
int width) STREAMING_COMPATIBLE {
|
|
1462
|
+
uint64_t vl;
|
|
1463
|
+
asm("cnth %0" : "=r"(vl));
|
|
1464
|
+
int width_last_y = width & (vl - 1);
|
|
1465
|
+
int width_last_uv = width_last_y + (width_last_y & 1);
|
|
1466
|
+
uint32_t nv_uv_start = 0x03010301U;
|
|
1467
|
+
uint32_t nv_uv_step = 0x04040404U;
|
|
1468
|
+
asm volatile(
|
|
1469
|
+
"ptrue p0.b \n" //
|
|
1470
|
+
YUVTORGB_SVE_SETUP
|
|
1471
|
+
"index z22.s, %w[nv_uv_start], %w[nv_uv_step] \n"
|
|
1472
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1473
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1474
|
+
"b.lt 2f \n"
|
|
1475
|
+
|
|
1476
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1477
|
+
// generation overhead.
|
|
1478
|
+
"ptrue p1.h \n"
|
|
1479
|
+
"ptrue p2.h \n"
|
|
1480
|
+
"1: \n" //
|
|
1481
|
+
READP210_SVE NVTORGB_SVE RGBTOARGB8_SVE
|
|
1482
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1483
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1484
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1485
|
+
"b.ge 1b \n"
|
|
1486
|
+
|
|
1487
|
+
"2: \n"
|
|
1488
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1489
|
+
"b.eq 99f \n"
|
|
1490
|
+
|
|
1491
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1492
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n"
|
|
1493
|
+
"whilelt p2.h, wzr, %w[width_last_uv] \n" //
|
|
1494
|
+
READP210_SVE NVTORGB_SVE RGBTOARGB8_SVE
|
|
1495
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1496
|
+
|
|
1497
|
+
"99: \n"
|
|
1498
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1499
|
+
[src_uv] "+r"(src_uv), // %[src_uv]
|
|
1500
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1501
|
+
[width] "+r"(width) // %[width]
|
|
1502
|
+
: [vl] "r"(vl), // %[vl]
|
|
1503
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1504
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1505
|
+
[nv_uv_start] "r"(nv_uv_start), // %[nv_uv_start]
|
|
1506
|
+
[nv_uv_step] "r"(nv_uv_step), // %[nv_uv_step]
|
|
1507
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1508
|
+
[width_last_uv] "r"(width_last_uv) // %[width_last_uv]
|
|
1509
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1510
|
+
}
|
|
1511
|
+
|
|
1512
|
+
static inline void P210ToAR30Row_SVE_SC(const uint16_t* src_y,
|
|
1513
|
+
const uint16_t* src_uv,
|
|
1514
|
+
uint8_t* dst_ar30,
|
|
1515
|
+
const struct YuvConstants* yuvconstants,
|
|
1516
|
+
int width) STREAMING_COMPATIBLE {
|
|
1517
|
+
uint64_t vl;
|
|
1518
|
+
asm("cnth %0" : "=r"(vl));
|
|
1519
|
+
int width_last_y = width & (vl - 1);
|
|
1520
|
+
int width_last_uv = width_last_y + (width_last_y & 1);
|
|
1521
|
+
uint32_t nv_uv_start = 0x03010301U;
|
|
1522
|
+
uint32_t nv_uv_step = 0x04040404U;
|
|
1523
|
+
// The limit is used for saturating the 2.14 red channel in STOREAR30_SVE.
|
|
1524
|
+
uint16_t limit = 0x3ff0;
|
|
1525
|
+
asm volatile(
|
|
1526
|
+
"ptrue p0.b \n" //
|
|
1527
|
+
YUVTORGB_SVE_SETUP
|
|
1528
|
+
"index z22.s, %w[nv_uv_start], %w[nv_uv_step] \n"
|
|
1529
|
+
"dup z23.h, %w[limit] \n"
|
|
1530
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1531
|
+
"b.lt 2f \n"
|
|
1532
|
+
|
|
1533
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1534
|
+
// generation overhead.
|
|
1535
|
+
"ptrue p1.h \n"
|
|
1536
|
+
"ptrue p2.h \n"
|
|
1537
|
+
"1: \n" //
|
|
1538
|
+
READP210_SVE NVTORGB_SVE
|
|
1539
|
+
"subs %w[width], %w[width], %w[vl] \n" //
|
|
1540
|
+
STOREAR30_SVE
|
|
1541
|
+
"b.ge 1b \n"
|
|
1542
|
+
|
|
1543
|
+
"2: \n"
|
|
1544
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1545
|
+
"b.eq 99f \n"
|
|
1546
|
+
|
|
1547
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1548
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n"
|
|
1549
|
+
"whilelt p2.h, wzr, %w[width_last_uv] \n" //
|
|
1550
|
+
READP210_SVE NVTORGB_SVE STOREAR30_SVE
|
|
1551
|
+
|
|
1552
|
+
"99: \n"
|
|
1553
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1554
|
+
[src_uv] "+r"(src_uv), // %[src_uv]
|
|
1555
|
+
[dst_ar30] "+r"(dst_ar30), // %[dst_ar30]
|
|
1556
|
+
[width] "+r"(width) // %[width]
|
|
1557
|
+
: [vl] "r"(vl), // %[vl]
|
|
1558
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1559
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1560
|
+
[nv_uv_start] "r"(nv_uv_start), // %[nv_uv_start]
|
|
1561
|
+
[nv_uv_step] "r"(nv_uv_step), // %[nv_uv_step]
|
|
1562
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1563
|
+
[width_last_uv] "r"(width_last_uv), // %[width_last_uv]
|
|
1564
|
+
[limit] "r"(limit) // %[limit]
|
|
1565
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
static inline void I410ToARGBRow_SVE_SC(const uint16_t* src_y,
|
|
1569
|
+
const uint16_t* src_u,
|
|
1570
|
+
const uint16_t* src_v,
|
|
1571
|
+
uint8_t* dst_argb,
|
|
1572
|
+
const struct YuvConstants* yuvconstants,
|
|
1573
|
+
int width) STREAMING_COMPATIBLE {
|
|
1574
|
+
uint64_t vl;
|
|
1575
|
+
asm("cnth %0" : "=r"(vl));
|
|
1576
|
+
int width_last_y = width & (vl - 1);
|
|
1577
|
+
asm volatile(
|
|
1578
|
+
"ptrue p0.b \n" //
|
|
1579
|
+
YUVTORGB_SVE_SETUP
|
|
1580
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1581
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1582
|
+
"b.lt 2f \n"
|
|
1583
|
+
|
|
1584
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1585
|
+
// generation overhead.
|
|
1586
|
+
"ptrue p1.h \n"
|
|
1587
|
+
"1: \n" //
|
|
1588
|
+
READI410_SVE I4XXTORGB_SVE RGBTOARGB8_SVE
|
|
1589
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1590
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1591
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1592
|
+
"b.ge 1b \n"
|
|
1593
|
+
|
|
1594
|
+
"2: \n"
|
|
1595
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1596
|
+
"b.eq 99f \n"
|
|
1597
|
+
|
|
1598
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1599
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n" //
|
|
1600
|
+
READI410_SVE I4XXTORGB_SVE RGBTOARGB8_SVE
|
|
1601
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1602
|
+
|
|
1603
|
+
"99: \n"
|
|
1604
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1605
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
1606
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
1607
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1608
|
+
[width] "+r"(width) // %[width]
|
|
1609
|
+
: [vl] "r"(vl), // %[vl]
|
|
1610
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1611
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1612
|
+
[width_last_y] "r"(width_last_y) // %[width_last_y]
|
|
1613
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
static inline void I410AlphaToARGBRow_SVE_SC(
|
|
1617
|
+
const uint16_t* src_y,
|
|
1618
|
+
const uint16_t* src_u,
|
|
1619
|
+
const uint16_t* src_v,
|
|
1620
|
+
const uint16_t* src_a,
|
|
1621
|
+
uint8_t* dst_argb,
|
|
1622
|
+
const struct YuvConstants* yuvconstants,
|
|
1623
|
+
int width) STREAMING_COMPATIBLE {
|
|
1624
|
+
uint64_t vl;
|
|
1625
|
+
asm("cnth %0" : "=r"(vl));
|
|
1626
|
+
int width_last_y = width & (vl - 1);
|
|
1627
|
+
asm volatile(
|
|
1628
|
+
"ptrue p0.b \n" //
|
|
1629
|
+
YUVTORGB_SVE_SETUP
|
|
1630
|
+
"cmp %w[width], %w[vl] \n"
|
|
1631
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1632
|
+
"b.lt 2f \n"
|
|
1633
|
+
|
|
1634
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1635
|
+
// generation overhead.
|
|
1636
|
+
"ptrue p1.h \n"
|
|
1637
|
+
"1: \n" //
|
|
1638
|
+
READI410_SVE
|
|
1639
|
+
"ld1h {z19.h}, p1/z, [%[src_a]] \n" //
|
|
1640
|
+
I4XXTORGB_SVE
|
|
1641
|
+
"incb %[src_a] \n" //
|
|
1642
|
+
RGBATOARGB8_SVE
|
|
1643
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1644
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1645
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1646
|
+
"b.ge 1b \n"
|
|
1647
|
+
|
|
1648
|
+
"2: \n"
|
|
1649
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1650
|
+
"b.eq 99f \n"
|
|
1651
|
+
|
|
1652
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1653
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n" //
|
|
1654
|
+
READI410_SVE
|
|
1655
|
+
"ld1h {z19.h}, p1/z, [%[src_a]] \n" //
|
|
1656
|
+
I4XXTORGB_SVE RGBATOARGB8_SVE
|
|
1657
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1658
|
+
|
|
1659
|
+
"99: \n"
|
|
1660
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1661
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
1662
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
1663
|
+
[src_a] "+r"(src_a), // %[src_a]
|
|
1664
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1665
|
+
[width] "+r"(width) // %[width]
|
|
1666
|
+
: [vl] "r"(vl), // %[vl]
|
|
1667
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1668
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1669
|
+
[width_last_y] "r"(width_last_y) // %[width_last_y]
|
|
1670
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
static inline void I410ToAR30Row_SVE_SC(const uint16_t* src_y,
|
|
1674
|
+
const uint16_t* src_u,
|
|
1675
|
+
const uint16_t* src_v,
|
|
1676
|
+
uint8_t* dst_ar30,
|
|
1677
|
+
const struct YuvConstants* yuvconstants,
|
|
1678
|
+
int width) STREAMING_COMPATIBLE {
|
|
1679
|
+
uint64_t vl;
|
|
1680
|
+
asm("cnth %0" : "=r"(vl));
|
|
1681
|
+
int width_last_y = width & (vl - 1);
|
|
1682
|
+
// The limit is used for saturating the 2.14 red channel in STOREAR30_SVE.
|
|
1683
|
+
uint16_t limit = 0x3ff0;
|
|
1684
|
+
asm volatile(
|
|
1685
|
+
"ptrue p0.b \n" //
|
|
1686
|
+
YUVTORGB_SVE_SETUP
|
|
1687
|
+
"dup z23.h, %w[limit] \n"
|
|
1688
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1689
|
+
"b.lt 2f \n"
|
|
1690
|
+
|
|
1691
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1692
|
+
// generation overhead.
|
|
1693
|
+
"ptrue p1.h \n"
|
|
1694
|
+
"1: \n" //
|
|
1695
|
+
READI410_SVE I4XXTORGB_SVE STOREAR30_SVE
|
|
1696
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1697
|
+
"b.ge 1b \n"
|
|
1698
|
+
|
|
1699
|
+
"2: \n"
|
|
1700
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1701
|
+
"b.eq 99f \n"
|
|
1702
|
+
|
|
1703
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1704
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n" //
|
|
1705
|
+
READI410_SVE I4XXTORGB_SVE STOREAR30_SVE
|
|
1706
|
+
|
|
1707
|
+
"99: \n"
|
|
1708
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1709
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
1710
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
1711
|
+
[dst_ar30] "+r"(dst_ar30), // %[dst_argb]
|
|
1712
|
+
[width] "+r"(width) // %[width]
|
|
1713
|
+
: [vl] "r"(vl), // %[vl]
|
|
1714
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1715
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1716
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1717
|
+
[limit] "r"(limit) // %[limit]
|
|
1718
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
static inline void P410ToARGBRow_SVE_SC(const uint16_t* src_y,
|
|
1722
|
+
const uint16_t* src_uv,
|
|
1723
|
+
uint8_t* dst_argb,
|
|
1724
|
+
const struct YuvConstants* yuvconstants,
|
|
1725
|
+
int width) STREAMING_COMPATIBLE {
|
|
1726
|
+
uint64_t vl;
|
|
1727
|
+
asm("cnth %0" : "=r"(vl));
|
|
1728
|
+
int width_last_y = width & (vl - 1);
|
|
1729
|
+
asm volatile(
|
|
1730
|
+
"ptrue p0.b \n" //
|
|
1731
|
+
YUVTORGB_SVE_SETUP
|
|
1732
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1733
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1734
|
+
"b.lt 2f \n"
|
|
1735
|
+
|
|
1736
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1737
|
+
// generation overhead.
|
|
1738
|
+
"ptrue p1.h \n"
|
|
1739
|
+
"ptrue p2.s \n"
|
|
1740
|
+
"ptrue p3.s \n"
|
|
1741
|
+
"1: \n" //
|
|
1742
|
+
READP410_SVE NVTORGB_SVE RGBTOARGB8_SVE
|
|
1743
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1744
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1745
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1746
|
+
"b.ge 1b \n"
|
|
1747
|
+
|
|
1748
|
+
"2: \n"
|
|
1749
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1750
|
+
"b.eq 99f \n"
|
|
1751
|
+
|
|
1752
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1753
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n"
|
|
1754
|
+
"whilelt p2.s, wzr, %w[width_last_y] \n"
|
|
1755
|
+
"cntw %x[vl] \n"
|
|
1756
|
+
"whilelt p3.s, %w[vl], %w[width_last_y] \n" //
|
|
1757
|
+
READP410_SVE NVTORGB_SVE RGBTOARGB8_SVE
|
|
1758
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1759
|
+
|
|
1760
|
+
"99: \n"
|
|
1761
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1762
|
+
[src_uv] "+r"(src_uv), // %[src_uv]
|
|
1763
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1764
|
+
[width] "+r"(width) // %[width]
|
|
1765
|
+
: [vl] "r"(vl), // %[vl]
|
|
1766
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1767
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1768
|
+
[width_last_y] "r"(width_last_y) // %[width_last_y]
|
|
1769
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1772
|
+
static inline void P410ToAR30Row_SVE_SC(const uint16_t* src_y,
|
|
1773
|
+
const uint16_t* src_uv,
|
|
1774
|
+
uint8_t* dst_ar30,
|
|
1775
|
+
const struct YuvConstants* yuvconstants,
|
|
1776
|
+
int width) STREAMING_COMPATIBLE {
|
|
1777
|
+
uint64_t vl;
|
|
1778
|
+
asm("cnth %0" : "=r"(vl));
|
|
1779
|
+
int width_last_y = width & (vl - 1);
|
|
1780
|
+
// The limit is used for saturating the 2.14 red channel in STOREAR30_SVE.
|
|
1781
|
+
uint16_t limit = 0x3ff0;
|
|
1782
|
+
asm volatile(
|
|
1783
|
+
"ptrue p0.b \n" //
|
|
1784
|
+
YUVTORGB_SVE_SETUP
|
|
1785
|
+
"dup z23.h, %w[limit] \n"
|
|
1786
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1787
|
+
"b.lt 2f \n"
|
|
1788
|
+
|
|
1789
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1790
|
+
// generation overhead.
|
|
1791
|
+
"ptrue p1.h \n"
|
|
1792
|
+
"ptrue p2.s \n"
|
|
1793
|
+
"ptrue p3.s \n"
|
|
1794
|
+
"1: \n" //
|
|
1795
|
+
READP410_SVE NVTORGB_SVE
|
|
1796
|
+
"subs %w[width], %w[width], %w[vl] \n" //
|
|
1797
|
+
STOREAR30_SVE
|
|
1798
|
+
"b.ge 1b \n"
|
|
1799
|
+
|
|
1800
|
+
"2: \n"
|
|
1801
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1802
|
+
"b.eq 99f \n"
|
|
1803
|
+
|
|
1804
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1805
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n"
|
|
1806
|
+
"whilelt p2.s, wzr, %w[width_last_y] \n"
|
|
1807
|
+
"cntw %x[vl] \n"
|
|
1808
|
+
"whilelt p3.s, %w[vl], %w[width_last_y] \n" //
|
|
1809
|
+
READP410_SVE NVTORGB_SVE STOREAR30_SVE
|
|
1810
|
+
|
|
1811
|
+
"99: \n"
|
|
1812
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1813
|
+
[src_uv] "+r"(src_uv), // %[src_uv]
|
|
1814
|
+
[dst_ar30] "+r"(dst_ar30), // %[dst_ar30]
|
|
1815
|
+
[width] "+r"(width) // %[width]
|
|
1816
|
+
: [vl] "r"(vl), // %[vl]
|
|
1817
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1818
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1819
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1820
|
+
[limit] "r"(limit) // %[limit]
|
|
1821
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1824
|
+
static inline void I212ToAR30Row_SVE_SC(const uint16_t* src_y,
|
|
1825
|
+
const uint16_t* src_u,
|
|
1826
|
+
const uint16_t* src_v,
|
|
1827
|
+
uint8_t* dst_ar30,
|
|
1828
|
+
const struct YuvConstants* yuvconstants,
|
|
1829
|
+
int width) STREAMING_COMPATIBLE {
|
|
1830
|
+
uint64_t vl;
|
|
1831
|
+
asm("cnth %0" : "=r"(vl));
|
|
1832
|
+
int width_last_y = width & (vl - 1);
|
|
1833
|
+
// The limit is used for saturating the 2.14 red channel in STOREAR30_SVE.
|
|
1834
|
+
uint16_t limit = 0x3ff0;
|
|
1835
|
+
asm volatile(
|
|
1836
|
+
"ptrue p0.b \n" //
|
|
1837
|
+
YUVTORGB_SVE_SETUP
|
|
1838
|
+
"dup z23.h, %w[limit] \n"
|
|
1839
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1840
|
+
"b.lt 2f \n"
|
|
1841
|
+
|
|
1842
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1843
|
+
// generation overhead.
|
|
1844
|
+
"ptrue p1.h \n"
|
|
1845
|
+
"1: \n" //
|
|
1846
|
+
READI212_SVE I4XXTORGB_SVE STOREAR30_SVE
|
|
1847
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1848
|
+
"b.ge 1b \n"
|
|
1849
|
+
|
|
1850
|
+
"2: \n"
|
|
1851
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1852
|
+
"b.eq 99f \n"
|
|
1853
|
+
|
|
1854
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1855
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n" //
|
|
1856
|
+
READI212_SVE I4XXTORGB_SVE STOREAR30_SVE
|
|
1857
|
+
|
|
1858
|
+
"99: \n"
|
|
1859
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1860
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
1861
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
1862
|
+
[dst_ar30] "+r"(dst_ar30), // %[dst_ar30]
|
|
1863
|
+
[width] "+r"(width) // %[width]
|
|
1864
|
+
: [vl] "r"(vl), // %[vl]
|
|
1865
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1866
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1867
|
+
[width_last_y] "r"(width_last_y), // %[width_last_y]
|
|
1868
|
+
[limit] "r"(limit) // %[limit]
|
|
1869
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1870
|
+
}
|
|
1871
|
+
|
|
1872
|
+
static inline void I212ToARGBRow_SVE_SC(const uint16_t* src_y,
|
|
1873
|
+
const uint16_t* src_u,
|
|
1874
|
+
const uint16_t* src_v,
|
|
1875
|
+
uint8_t* dst_argb,
|
|
1876
|
+
const struct YuvConstants* yuvconstants,
|
|
1877
|
+
int width) STREAMING_COMPATIBLE {
|
|
1878
|
+
uint64_t vl;
|
|
1879
|
+
asm("cnth %0" : "=r"(vl));
|
|
1880
|
+
int width_last_y = width & (vl - 1);
|
|
1881
|
+
asm volatile(
|
|
1882
|
+
"ptrue p0.b \n" //
|
|
1883
|
+
YUVTORGB_SVE_SETUP
|
|
1884
|
+
"dup z19.b, #255 \n" // Alpha
|
|
1885
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1886
|
+
"b.lt 2f \n"
|
|
1887
|
+
|
|
1888
|
+
// Run bulk of computation with an all-true predicate to avoid predicate
|
|
1889
|
+
// generation overhead.
|
|
1890
|
+
"ptrue p1.h \n"
|
|
1891
|
+
"1: \n" //
|
|
1892
|
+
READI212_SVE I4XXTORGB_SVE RGBTOARGB8_SVE
|
|
1893
|
+
"subs %w[width], %w[width], %w[vl] \n"
|
|
1894
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1895
|
+
"add %[dst_argb], %[dst_argb], %[vl], lsl #2 \n"
|
|
1896
|
+
"b.ge 1b \n"
|
|
1897
|
+
|
|
1898
|
+
"2: \n"
|
|
1899
|
+
"adds %w[width], %w[width], %w[vl] \n"
|
|
1900
|
+
"b.eq 99f \n"
|
|
1901
|
+
|
|
1902
|
+
// Calculate a predicate for the final iteration to deal with the tail.
|
|
1903
|
+
"whilelt p1.h, wzr, %w[width_last_y] \n" //
|
|
1904
|
+
READI212_SVE I4XXTORGB_SVE RGBTOARGB8_SVE
|
|
1905
|
+
"st2h {z16.h, z17.h}, p1, [%[dst_argb]] \n"
|
|
1906
|
+
|
|
1907
|
+
"99: \n"
|
|
1908
|
+
: [src_y] "+r"(src_y), // %[src_y]
|
|
1909
|
+
[src_u] "+r"(src_u), // %[src_u]
|
|
1910
|
+
[src_v] "+r"(src_v), // %[src_v]
|
|
1911
|
+
[dst_argb] "+r"(dst_argb), // %[dst_argb]
|
|
1912
|
+
[width] "+r"(width) // %[width]
|
|
1913
|
+
: [vl] "r"(vl), // %[vl]
|
|
1914
|
+
[kUVCoeff] "r"(&yuvconstants->kUVCoeff), // %[kUVCoeff]
|
|
1915
|
+
[kRGBCoeffBias] "r"(&yuvconstants->kRGBCoeffBias), // %[kRGBCoeffBias]
|
|
1916
|
+
[width_last_y] "r"(width_last_y) // %[width_last_y]
|
|
1917
|
+
: "cc", "memory", YUVTORGB_SVE_REGS);
|
|
1918
|
+
}
|
|
1919
|
+
|
|
1920
|
+
#define CONVERT8TO8_SVE \
|
|
1921
|
+
"ld1b {z0.b}, p0/z, [%[src]] \n" \
|
|
1922
|
+
"ld1b {z1.b}, p1/z, [%[src], #1, mul vl] \n" \
|
|
1923
|
+
"incb %[src], all, mul #2 \n" \
|
|
1924
|
+
"subs %w[width], %w[width], %w[vl], lsl #1 \n" \
|
|
1925
|
+
"umulh z0.b, z0.b, z2.b \n" \
|
|
1926
|
+
"umulh z1.b, z1.b, z2.b \n" \
|
|
1927
|
+
"prfm pldl1keep, [%[src], 448] \n" \
|
|
1928
|
+
"add z0.b, z0.b, z3.b \n" \
|
|
1929
|
+
"add z1.b, z1.b, z3.b \n" \
|
|
1930
|
+
"st1b {z0.b}, p0, [%[dst]] \n" \
|
|
1931
|
+
"st1b {z1.b}, p1, [%[dst], #1, mul vl] \n" \
|
|
1932
|
+
"incb %[dst], all, mul #2 \n"
|
|
1933
|
+
|
|
1934
|
+
static inline void Convert8To8Row_SVE_SC(const uint8_t* src_y,
|
|
1935
|
+
uint8_t* dst_y,
|
|
1936
|
+
int scale,
|
|
1937
|
+
int bias,
|
|
1938
|
+
int width) STREAMING_COMPATIBLE {
|
|
1939
|
+
uint64_t vl;
|
|
1940
|
+
asm volatile(
|
|
1941
|
+
"dup z2.b, %w[scale] \n"
|
|
1942
|
+
"dup z3.b, %w[bias] \n"
|
|
1943
|
+
"cntb %[vl] \n"
|
|
1944
|
+
"subs %w[width], %w[width], %w[vl], lsl #1 \n"
|
|
1945
|
+
"b.lt 2f \n"
|
|
1946
|
+
|
|
1947
|
+
// Run bulk of computation with all-true predicates to avoid predicate
|
|
1948
|
+
// generation overhead.
|
|
1949
|
+
"ptrue p0.b \n"
|
|
1950
|
+
"ptrue p1.b \n"
|
|
1951
|
+
"1: \n" //
|
|
1952
|
+
CONVERT8TO8_SVE
|
|
1953
|
+
"b.ge 1b \n"
|
|
1954
|
+
|
|
1955
|
+
"2: \n"
|
|
1956
|
+
"adds %w[width], %w[width], %w[vl], lsl #1 \n"
|
|
1957
|
+
"b.eq 99f \n"
|
|
1958
|
+
|
|
1959
|
+
// Calculate predicates for the final iteration to deal with the tail.
|
|
1960
|
+
"whilelt p0.b, wzr, %w[width] \n"
|
|
1961
|
+
"whilelt p1.b, %w[vl], %w[width] \n" //
|
|
1962
|
+
CONVERT8TO8_SVE
|
|
1963
|
+
|
|
1964
|
+
"99: \n"
|
|
1965
|
+
: [src] "+r"(src_y), // %[src]
|
|
1966
|
+
[dst] "+r"(dst_y), // %[dst]
|
|
1967
|
+
[width] "+r"(width), // %[width]
|
|
1968
|
+
[vl] "=&r"(vl) // %[vl]
|
|
1969
|
+
: [scale] "r"(scale), // %[scale]
|
|
1970
|
+
[bias] "r"(bias) // %[bias]
|
|
1971
|
+
: "cc", "memory", "z0", "z1", "z2", "z3", "p0", "p1");
|
|
1972
|
+
}
|
|
1973
|
+
|
|
1974
|
+
// SVE constants are stored negated such that we can store 128 in int8_t.
|
|
1975
|
+
|
|
1976
|
+
// RGB to BT601 coefficients
|
|
1977
|
+
// UB 0.875 coefficient = 112
|
|
1978
|
+
// UG -0.5781 coefficient = -74
|
|
1979
|
+
// UR -0.2969 coefficient = -38
|
|
1980
|
+
// VB -0.1406 coefficient = -18
|
|
1981
|
+
// VG -0.7344 coefficient = -94
|
|
1982
|
+
// VR 0.875 coefficient = 112
|
|
1983
|
+
|
|
1984
|
+
static const int8_t kARGBToUVCoefficients[] = {
|
|
1985
|
+
// -UB, -UG, -UR, 0, -VB, -VG, -VR, 0
|
|
1986
|
+
-112, 74, 38, 0, 18, 94, -112, 0,
|
|
1987
|
+
};
|
|
1988
|
+
|
|
1989
|
+
static const int8_t kABGRToUVCoefficients[] = {
|
|
1990
|
+
// -UR, -UG, -UB, 0, -VR, -VG, -VB, 0
|
|
1991
|
+
38, 74, -112, 0, -112, 94, 18, 0,
|
|
1992
|
+
};
|
|
1993
|
+
|
|
1994
|
+
static const int8_t kBGRAToUVCoefficients[] = {
|
|
1995
|
+
// 0, -UR, -UG, -UB, 0, -VR, -VG, -VB
|
|
1996
|
+
0, 38, 74, -112, 0, -112, 94, 18,
|
|
1997
|
+
};
|
|
1998
|
+
|
|
1999
|
+
static const int8_t kRGBAToUVCoefficients[] = {
|
|
2000
|
+
// 0, -UB, -UG, -UR, 0, -VB, -VG, -VR
|
|
2001
|
+
0, -112, 74, 38, 0, 18, 94, -112,
|
|
2002
|
+
};
|
|
2003
|
+
|
|
2004
|
+
// RGB to JPEG coefficients
|
|
2005
|
+
// UB 0.500 coefficient = 128
|
|
2006
|
+
// UG -0.33126 coefficient = -85
|
|
2007
|
+
// UR -0.16874 coefficient = -43
|
|
2008
|
+
// VB -0.08131 coefficient = -21
|
|
2009
|
+
// VG -0.41869 coefficient = -107
|
|
2010
|
+
// VR 0.500 coefficient = 128
|
|
2011
|
+
|
|
2012
|
+
static const int8_t kARGBToUVJCoefficients[] = {
|
|
2013
|
+
// -UB, -UG, -UR, 0, -VB, -VG, -VR, 0
|
|
2014
|
+
-128, 85, 43, 0, 21, 107, -128, 0,
|
|
2015
|
+
};
|
|
2016
|
+
|
|
2017
|
+
static const int8_t kABGRToUVJCoefficients[] = {
|
|
2018
|
+
// -UR, -UG, -UB, 0, -VR, -VG, -VB, 0
|
|
2019
|
+
43, 85, -128, 0, -128, 107, 21, 0,
|
|
2020
|
+
};
|
|
2021
|
+
|
|
2022
|
+
#define ABCDTOUVMATRIX_SVE \
|
|
2023
|
+
"ld1d {z0.d}, p1/z, [%[src0]] \n" /* ABCD(bgra) */ \
|
|
2024
|
+
"ld1d {z1.d}, p2/z, [%[src0], #1, mul vl] \n" /* EFGH(bgra) */ \
|
|
2025
|
+
"ld1d {z2.d}, p3/z, [%[src0], #2, mul vl] \n" /* IJKL(bgra) */ \
|
|
2026
|
+
"ld1d {z3.d}, p4/z, [%[src0], #3, mul vl] \n" /* MNOP(bgra) */ \
|
|
2027
|
+
"ld1d {z4.d}, p1/z, [%[src1]] \n" /* ABCD(bgra) */ \
|
|
2028
|
+
"ld1d {z5.d}, p2/z, [%[src1], #1, mul vl] \n" /* EFGH(bgra) */ \
|
|
2029
|
+
"ld1d {z6.d}, p3/z, [%[src1], #2, mul vl] \n" /* IJKL(bgra) */ \
|
|
2030
|
+
"ld1d {z7.d}, p4/z, [%[src1], #3, mul vl] \n" /* MNOP(bgra) */ \
|
|
2031
|
+
"incb %[src0], all, mul #4 \n" \
|
|
2032
|
+
"incb %[src1], all, mul #4 \n" \
|
|
2033
|
+
\
|
|
2034
|
+
"uaddlb z16.h, z0.b, z4.b \n" /* ABCD(br) */ \
|
|
2035
|
+
"uaddlb z18.h, z1.b, z5.b \n" /* EFGH(br) */ \
|
|
2036
|
+
"uaddlb z20.h, z2.b, z6.b \n" /* IJKL(br) */ \
|
|
2037
|
+
"uaddlb z22.h, z3.b, z7.b \n" /* MNOP(br) */ \
|
|
2038
|
+
"uaddlt z17.h, z0.b, z4.b \n" /* ABCD(ga) */ \
|
|
2039
|
+
"uaddlt z19.h, z1.b, z5.b \n" /* EFGH(ga) */ \
|
|
2040
|
+
"uaddlt z21.h, z2.b, z6.b \n" /* IJKL(ga) */ \
|
|
2041
|
+
"uaddlt z23.h, z3.b, z7.b \n" /* MNOP(ga) */ \
|
|
2042
|
+
\
|
|
2043
|
+
/* Use ADDP on 32-bit elements to add adjacent pairs of 9-bit unsigned */ \
|
|
2044
|
+
"addp z16.s, p0/m, z16.s, z18.s \n" /* ABEFCDGH(br) */ \
|
|
2045
|
+
"addp z17.s, p0/m, z17.s, z19.s \n" /* ABEFCDGH(ga) */ \
|
|
2046
|
+
"addp z20.s, p0/m, z20.s, z22.s \n" /* IJMNKLOP(br) */ \
|
|
2047
|
+
"addp z21.s, p0/m, z21.s, z23.s \n" /* IJMNKLOP(ga) */ \
|
|
2048
|
+
\
|
|
2049
|
+
"rshrnb z0.b, z16.h, #2 \n" /* ABEFCDGH(b0r0) */ \
|
|
2050
|
+
"rshrnb z1.b, z20.h, #2 \n" /* IJMNKLOP(b0r0) */ \
|
|
2051
|
+
"rshrnt z0.b, z17.h, #2 \n" /* ABEFCDGH(bgra) */ \
|
|
2052
|
+
"rshrnt z1.b, z21.h, #2 \n" /* IJMNKLOP(bgra) */ \
|
|
2053
|
+
\
|
|
2054
|
+
"tbl z0.s, {z0.s}, z27.s \n" /* ABCDEFGH */ \
|
|
2055
|
+
"tbl z1.s, {z1.s}, z27.s \n" /* IJKLMNOP */ \
|
|
2056
|
+
\
|
|
2057
|
+
"subs %w[width], %w[width], %w[vl], lsl #2 \n" /* VL per loop */ \
|
|
2058
|
+
\
|
|
2059
|
+
"fmov s16, wzr \n" \
|
|
2060
|
+
"fmov s17, wzr \n" \
|
|
2061
|
+
"fmov s20, wzr \n" \
|
|
2062
|
+
"fmov s21, wzr \n" \
|
|
2063
|
+
\
|
|
2064
|
+
"usdot z16.s, z0.b, z24.b \n" \
|
|
2065
|
+
"usdot z17.s, z1.b, z24.b \n" \
|
|
2066
|
+
"usdot z20.s, z0.b, z25.b \n" \
|
|
2067
|
+
"usdot z21.s, z1.b, z25.b \n" \
|
|
2068
|
+
\
|
|
2069
|
+
"subhnb z16.b, z26.h, z16.h \n" /* U */ \
|
|
2070
|
+
"subhnb z20.b, z26.h, z20.h \n" /* V */ \
|
|
2071
|
+
"subhnb z17.b, z26.h, z17.h \n" /* U */ \
|
|
2072
|
+
"subhnb z21.b, z26.h, z21.h \n" /* V */ \
|
|
2073
|
+
\
|
|
2074
|
+
"uzp1 z16.h, z16.h, z17.h \n" \
|
|
2075
|
+
"uzp1 z20.h, z20.h, z21.h \n" \
|
|
2076
|
+
\
|
|
2077
|
+
"st1b {z16.h}, p5, [%[dst_u]] \n" /* U */ \
|
|
2078
|
+
"st1b {z20.h}, p5, [%[dst_v]] \n" /* V */ \
|
|
2079
|
+
"inch %[dst_u] \n" \
|
|
2080
|
+
"inch %[dst_v] \n"
|
|
2081
|
+
|
|
2082
|
+
static inline void ARGBToUVMatrixRow_SVE_SC(const uint8_t* src_argb,
|
|
2083
|
+
int src_stride_argb,
|
|
2084
|
+
uint8_t* dst_u,
|
|
2085
|
+
uint8_t* dst_v,
|
|
2086
|
+
int width,
|
|
2087
|
+
const int8_t* uvconstants)
|
|
2088
|
+
STREAMING_COMPATIBLE {
|
|
2089
|
+
const uint8_t* src_argb_1 = src_argb + src_stride_argb;
|
|
2090
|
+
uint64_t vl;
|
|
2091
|
+
asm("cntd %x0" : "=r"(vl));
|
|
2092
|
+
|
|
2093
|
+
// Width is a multiple of two here, so halve it.
|
|
2094
|
+
width >>= 1;
|
|
2095
|
+
|
|
2096
|
+
asm volatile(
|
|
2097
|
+
"ptrue p0.b \n"
|
|
2098
|
+
"ld1rw {z24.s}, p0/z, [%[uvconstants]] \n"
|
|
2099
|
+
"ld1rw {z25.s}, p0/z, [%[uvconstants], #4] \n"
|
|
2100
|
+
"mov z26.h, #0x8000 \n" // 128.0 (0x8000)
|
|
2101
|
+
|
|
2102
|
+
// Generate some TBL indices to undo the interleaving from ADDP.
|
|
2103
|
+
"index z0.s, #0, #1 \n"
|
|
2104
|
+
"index z1.s, #1, #1 \n"
|
|
2105
|
+
"uzp1 z27.s, z0.s, z1.s \n"
|
|
2106
|
+
|
|
2107
|
+
"subs %w[width], %w[width], %w[vl], lsl #2 \n"
|
|
2108
|
+
"b.lt 2f \n"
|
|
2109
|
+
|
|
2110
|
+
"ptrue p1.d \n"
|
|
2111
|
+
"ptrue p2.d \n"
|
|
2112
|
+
"ptrue p3.d \n"
|
|
2113
|
+
"ptrue p4.d \n"
|
|
2114
|
+
"ptrue p5.h \n"
|
|
2115
|
+
"1: \n" //
|
|
2116
|
+
ABCDTOUVMATRIX_SVE
|
|
2117
|
+
"b.gt 1b \n"
|
|
2118
|
+
|
|
2119
|
+
"2: \n"
|
|
2120
|
+
"adds %w[width], %w[width], %w[vl], lsl #2 \n"
|
|
2121
|
+
"b.eq 99f \n"
|
|
2122
|
+
|
|
2123
|
+
"3: \n"
|
|
2124
|
+
"whilelt p1.d, wzr, %w[width] \n"
|
|
2125
|
+
"whilelt p2.d, %w[vl], %w[width] \n"
|
|
2126
|
+
"whilelt p3.d, %w[vl2], %w[width] \n"
|
|
2127
|
+
"whilelt p4.d, %w[vl3], %w[width] \n"
|
|
2128
|
+
"whilelt p5.h, wzr, %w[width] \n" //
|
|
2129
|
+
ABCDTOUVMATRIX_SVE
|
|
2130
|
+
"b.gt 3b \n"
|
|
2131
|
+
|
|
2132
|
+
"99: \n"
|
|
2133
|
+
: [src0] "+r"(src_argb), // %[src0]
|
|
2134
|
+
[src1] "+r"(src_argb_1), // %[src1]
|
|
2135
|
+
[dst_u] "+r"(dst_u), // %[dst_u]
|
|
2136
|
+
[dst_v] "+r"(dst_v), // %[dst_v]
|
|
2137
|
+
[width] "+r"(width) // %[width]
|
|
2138
|
+
: [uvconstants] "r"(uvconstants), // %[uvconstants]
|
|
2139
|
+
[vl] "r"(vl), // %[vl]
|
|
2140
|
+
[vl2] "r"(vl * 2), // %[vl2]
|
|
2141
|
+
[vl3] "r"(vl * 3) // %[vl3]
|
|
2142
|
+
: "cc", "memory", "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "z16",
|
|
2143
|
+
"z17", "z18", "z19", "z20", "z21", "z22", "z23", "z24", "z25", "z26",
|
|
2144
|
+
"z27", "p0", "p1", "p2", "p3", "p4", "p5");
|
|
2145
|
+
}
|
|
2146
|
+
|
|
2147
|
+
#endif // !defined(LIBYUV_DISABLE_SVE) && defined(__aarch64__)
|
|
2148
|
+
|
|
2149
|
+
#ifdef __cplusplus
|
|
2150
|
+
} // extern "C"
|
|
2151
|
+
} // namespace libyuv
|
|
2152
|
+
#endif
|
|
2153
|
+
|
|
2154
|
+
#endif // INCLUDE_LIBYUV_ROW_SVE_H_
|