react-native-vision-camera-spoof-detector 1.0.9 → 1.0.10
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/android/.cxx/Debug/2a1it684/arm64-v8a/.cmake/api/v1/reply/{codemodel-v2-83ca4b3bde3a78057c1f.json → codemodel-v2-390962e2784a6a84fa3e.json} +2 -2
- package/android/.cxx/Debug/2a1it684/arm64-v8a/.cmake/api/v1/reply/{index-2025-11-27T05-30-44-0002.json → index-2025-11-28T07-46-12-0329.json} +2 -2
- package/android/.cxx/Debug/2a1it684/arm64-v8a/.cmake/api/v1/reply/{target-yuv-Debug-a4349d98b162d7b162c2.json → target-yuv-Debug-1e27b8a2bdcddd47b87d.json} +2 -2
- package/android/.cxx/Debug/2a1it684/arm64-v8a/.cmake/api/v1/reply/{target-yuv_shared-Debug-f13b6c904c5f79494e23.json → target-yuv_shared-Debug-ac9194487d1fc1268a87.json} +2 -2
- package/android/.cxx/Debug/2a1it684/arm64-v8a/.ninja_deps +0 -0
- package/android/.cxx/Debug/2a1it684/arm64-v8a/.ninja_log +125 -125
- package/android/.cxx/Debug/2a1it684/arm64-v8a/CMakeFiles/CMakeOutput.log +22 -22
- package/android/.cxx/Debug/2a1it684/arm64-v8a/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
- package/android/.cxx/Debug/2a1it684/arm64-v8a/configure_fingerprint.bin +15 -15
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/.cmake/api/v1/reply/{codemodel-v2-52ac1d8b40b69596389b.json → codemodel-v2-053850119b681f93cecc.json} +2 -2
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/.cmake/api/v1/reply/{index-2025-11-27T04-19-25-0344.json → index-2025-11-28T05-47-43-0297.json} +2 -2
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/.cmake/api/v1/reply/{target-yuv-Debug-97f9e822dbd84a186d44.json → target-yuv-Debug-a12ad49ff79080871bce.json} +2 -2
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/.cmake/api/v1/reply/{target-yuv_shared-Debug-3730d20e27c3481c06b2.json → target-yuv_shared-Debug-2b00e64621a56b8dd632.json} +2 -2
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/.ninja_deps +0 -0
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/.ninja_log +118 -119
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/CMakeFiles/CMakeOutput.log +20 -20
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
- package/android/.cxx/Debug/2a1it684/armeabi-v7a/configure_fingerprint.bin +15 -15
- package/android/.cxx/Debug/2a1it684/x86/.ninja_deps +0 -0
- package/android/.cxx/Debug/2a1it684/x86/.ninja_log +110 -111
- package/android/.cxx/Debug/2a1it684/x86/CMakeFiles/CMakeOutput.log +20 -20
- package/android/.cxx/Debug/2a1it684/x86/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
- package/android/.cxx/Debug/2a1it684/x86/configure_fingerprint.bin +15 -15
- package/android/.cxx/Debug/2a1it684/x86_64/.ninja_deps +0 -0
- package/android/.cxx/Debug/2a1it684/x86_64/.ninja_log +109 -109
- package/android/.cxx/Debug/2a1it684/x86_64/CMakeFiles/CMakeOutput.log +20 -20
- package/android/.cxx/Debug/2a1it684/x86_64/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
- package/android/.cxx/Debug/2a1it684/x86_64/configure_fingerprint.bin +15 -15
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/cache-v2-6623bfcc99de2cc494ef.json +1599 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-55b275e149a5fd56941d.json +857 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-6b7e0f67c2a0347cab13.json +185 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/directory-.-RelWithDebInfo-d0094a50bb2071803777.json +14 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/directory-libyuv-RelWithDebInfo-3b69a4481e450c4c2e62.json +100 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/index-2025-11-28T06-24-02-0919.json +92 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-cpuid-RelWithDebInfo-f777a892340e61678778.json +136 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-faceantispoof-RelWithDebInfo-4fb8c998d8f77e33a12d.json +181 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-fastyuv-RelWithDebInfo-7ad5bac6c34ff1d8f6bf.json +182 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-yuv-RelWithDebInfo-298d259c30e060de8f40.json +433 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-yuv_common_objects-RelWithDebInfo-2f4a12965004c2de4e70.json +522 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-yuv_neon64-RelWithDebInfo-54e823b3b8ca04a6c5db.json +137 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-yuv_shared-RelWithDebInfo-3270b416576458946c36.json +455 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-yuv_sme-RelWithDebInfo-e9f185e1349071c8064b.json +126 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-yuv_sve-RelWithDebInfo-38edcec765b140ad4e2e.json +104 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-yuvconstants-RelWithDebInfo-665cbae21750846dec64.json +136 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.cmake/api/v1/reply/target-yuvconvert-RelWithDebInfo-e79c8b075362b6ed79c2.json +157 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.ninja_deps +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/.ninja_log +65 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeCache.txt +465 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/CMakeOutput.log +276 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/TargetDirectories.txt +27 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CMakeFiles/rules.ninja +198 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CPackConfig.cmake +71 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/CPackSourceConfig.cmake +79 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/additional_project_files.txt +48 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/android_gradle_build.json +106 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/android_gradle_build_mini.json +87 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/build.ninja +1071 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/build_file_index.txt +3 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/cmake_install.cmake +59 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/compile_commands.json +277 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/compile_commands.json.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/configure_fingerprint.bin +33 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/libyuv/cmake_install.cmake +87 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/metadata_generation_command.txt +19 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/prefab_config.json +4 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/arm64-v8a/symbol_folder_index.txt +1 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/cache-v2-8dbd652239f8f876061c.json +1587 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-1807188101b481e0cb6e.json +857 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-6f5df8c3a6b6a068f23b.json +167 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/directory-.-RelWithDebInfo-d0094a50bb2071803777.json +14 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/directory-libyuv-RelWithDebInfo-d90ccc1dc3ec9de91c2a.json +100 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/index-2025-11-28T06-24-04-0739.json +92 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-cpuid-RelWithDebInfo-2afe24ac22ece0474b5d.json +150 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-faceantispoof-RelWithDebInfo-1e3a47629762dc371297.json +181 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-fastyuv-RelWithDebInfo-399f40c0d7f52201b0df.json +190 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-yuv-RelWithDebInfo-d63c69ad741549aa90d2.json +406 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-yuv_common_objects-RelWithDebInfo-873ec2eea5dd4896d057.json +536 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-yuv_neon-RelWithDebInfo-8f3b5b8996b46568c5bc.json +151 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-yuv_shared-RelWithDebInfo-19bab1e79d76ef386a06.json +428 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-yuvconstants-RelWithDebInfo-bc2a27cc3182d0e59087.json +150 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.cmake/api/v1/reply/target-yuvconvert-RelWithDebInfo-8ac10adb877d77790cba.json +171 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.ninja_deps +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/.ninja_log +61 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeCache.txt +463 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/CMakeOutput.log +268 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/TargetDirectories.txt +25 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CMakeFiles/rules.ninja +178 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CPackConfig.cmake +71 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/CPackSourceConfig.cmake +79 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/additional_project_files.txt +44 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/android_gradle_build.json +96 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/android_gradle_build_mini.json +77 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/build.ninja +1046 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/build_file_index.txt +3 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/cmake_install.cmake +59 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/compile_commands.json +257 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/compile_commands.json.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/configure_fingerprint.bin +33 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/libyuv/cmake_install.cmake +87 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/metadata_generation_command.txt +19 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/prefab_config.json +4 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/armeabi-v7a/symbol_folder_index.txt +1 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/hash_key.txt +26 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/cache-v2-a231ab394224ff7786ac.json +1587 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/cmakeFiles-v1-c1b964e67354b2182b02.json +857 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/codemodel-v2-3aff40e717685bf9381e.json +158 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/directory-.-RelWithDebInfo-d0094a50bb2071803777.json +14 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/directory-libyuv-RelWithDebInfo-8ffc2a041aae2ce33cc6.json +100 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/index-2025-11-28T06-24-25-0724.json +92 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/target-cpuid-RelWithDebInfo-6ae80ea7f26ff6790278.json +136 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/target-faceantispoof-RelWithDebInfo-6edf524952a2089a233a.json +181 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/target-fastyuv-RelWithDebInfo-8884cf96d359d9f0ca44.json +157 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/target-yuv-RelWithDebInfo-f975dc321e6aea5db346.json +368 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/target-yuv_common_objects-RelWithDebInfo-2f4a12965004c2de4e70.json +522 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/target-yuv_shared-RelWithDebInfo-e345bd47425b6cacb14b.json +390 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/target-yuvconstants-RelWithDebInfo-b99502b5984c20153a0c.json +136 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.cmake/api/v1/reply/target-yuvconvert-RelWithDebInfo-4e298834e996ad01af71.json +157 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.ninja_deps +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/.ninja_log +57 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeCache.txt +463 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/CMakeOutput.log +258 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/TargetDirectories.txt +24 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CMakeFiles/rules.ninja +168 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CPackConfig.cmake +71 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/CPackSourceConfig.cmake +79 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/additional_project_files.txt +40 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/android_gradle_build.json +91 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/android_gradle_build_mini.json +72 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/build.ninja +945 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/build_file_index.txt +3 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/cmake_install.cmake +59 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/compile_commands.json +237 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/compile_commands.json.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/configure_fingerprint.bin +33 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/libyuv/cmake_install.cmake +87 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/metadata_generation_command.txt +19 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/prefab_config.json +4 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86/symbol_folder_index.txt +1 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/cache-v2-9ee538105c735fb117da.json +1587 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-e1bbc53ef79693fbefba.json +857 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/codemodel-v2-3c7b39b9eebd0ee8b8ac.json +158 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/directory-.-RelWithDebInfo-d0094a50bb2071803777.json +14 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/directory-libyuv-RelWithDebInfo-bf3551b76e6b80c04175.json +100 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/index-2025-11-28T06-24-36-0773.json +92 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/target-cpuid-RelWithDebInfo-18ad619be4c65a6867f1.json +136 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/target-faceantispoof-RelWithDebInfo-5e42ed443d91c90a4528.json +181 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/target-fastyuv-RelWithDebInfo-bce1d813646a721cd018.json +157 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/target-yuv-RelWithDebInfo-9c0ffc48e253ea51b2b0.json +368 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/target-yuv_common_objects-RelWithDebInfo-2f4a12965004c2de4e70.json +522 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/target-yuv_shared-RelWithDebInfo-e00c3ff4f11fdc3ada16.json +390 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/target-yuvconstants-RelWithDebInfo-3c9aff03082eae586c2e.json +136 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.cmake/api/v1/reply/target-yuvconvert-RelWithDebInfo-241d3dca03388438c8a7.json +157 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.ninja_deps +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/.ninja_log +57 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeCache.txt +463 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/CMakeOutput.log +258 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/TargetDirectories.txt +24 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CMakeFiles/rules.ninja +168 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CPackConfig.cmake +71 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/CPackSourceConfig.cmake +79 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/additional_project_files.txt +40 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/android_gradle_build.json +91 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/android_gradle_build_mini.json +72 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/build.ninja +945 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/build_file_index.txt +3 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/cmake_install.cmake +59 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/compile_commands.json +237 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/compile_commands.json.bin +0 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/configure_fingerprint.bin +33 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/libyuv/cmake_install.cmake +87 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/metadata_generation_command.txt +19 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/prefab_config.json +4 -0
- package/android/.cxx/RelWithDebInfo/4j18496e/x86_64/symbol_folder_index.txt +1 -0
- package/android/.cxx/tools/release/arm64-v8a/compile_commands.json +277 -0
- package/android/.cxx/tools/release/armeabi-v7a/compile_commands.json +257 -0
- package/android/.cxx/tools/release/x86/compile_commands.json +237 -0
- package/android/.cxx/tools/release/x86_64/compile_commands.json +237 -0
- package/android/build/.transforms/4ebf3dd0dca4f83fe1776360e21ded81/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/c0a07cd9442d741ad3cef3760159211f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/AntiSpoofingResult.dex +0 -0
- package/android/build/.transforms/c0a07cd9442d741ad3cef3760159211f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofingAdvanced.dex +0 -0
- package/android/build/.transforms/c0a07cd9442d741ad3cef3760159211f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/ImageFormatEncoder.dex +0 -0
- package/android/build/.transforms/c0a07cd9442d741ad3cef3760159211f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/JpegEncoder$Companion.dex +0 -0
- package/android/build/.transforms/c0a07cd9442d741ad3cef3760159211f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/JpegEncoder.dex +0 -0
- package/android/build/.transforms/c0a07cd9442d741ad3cef3760159211f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/YuvToFloatArrayConverter$Companion.dex +0 -0
- package/android/build/.transforms/c0a07cd9442d741ad3cef3760159211f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/YuvToFloatArrayConverter.dex +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/arm64-v8a/build_stdout_targets.txt +48 -48
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/arm64-v8a/generate_cxx_metadata_709_timing.txt +9 -0
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/armeabi-v7a/build_stdout_targets.txt +44 -44
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/armeabi-v7a/{generate_cxx_metadata_944_timing.txt → generate_cxx_metadata_709_timing.txt} +1 -1
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/x86/build_stdout_targets.txt +40 -40
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/x86/{generate_cxx_metadata_944_timing.txt → generate_cxx_metadata_709_timing.txt} +1 -1
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/x86_64/build_stdout_targets.txt +42 -42
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/x86_64/generate_cxx_metadata_709_timing.txt +9 -0
- package/android/build/intermediates/cxx/Debug/2a1it684/obj/arm64-v8a/libfastyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a1it684/obj/armeabi-v7a/libfastyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a1it684/obj/x86/libfastyuv.so +0 -0
- package/android/build/intermediates/cxx/Debug/2a1it684/obj/x86_64/libfastyuv.so +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -1
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libfastyuv.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/x86/libfastyuv.so +0 -0
- package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libfastyuv.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/armeabi-v7a/libfastyuv.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_64/libfastyuv.so +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/FaceAntiSpoofingAdvanced.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/ImageFormatEncoder.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/JpegEncoder$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/JpegEncoder.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/YuvToFloatArrayConverter$Companion.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_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +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/proto.tab +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/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/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/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/AntiSpoofingResult.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/ImageFormatEncoder.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/JpegEncoder$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/JpegEncoder.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/YuvToFloatArrayConverter$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/YuvToFloatArrayConverter.class +0 -0
- package/android/build.gradle +3 -0
- package/android/src/main/cpp/fast_yuv.cpp +17 -7
- package/android/src/main/java/com/faceantispoof/FaceAntiSpoofingAdvanced.kt +7 -6
- package/android/src/main/java/com/faceantispoof/ImageFormatEncoder.kt +18 -15
- package/android/src/main/java/com/faceantispoof/JpegEncoder.kt +50 -9
- package/android/src/main/java/com/faceantispoof/YuvToFloatArrayConverter.kt +34 -2
- package/package.json +1 -1
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/arm64-v8a/generate_cxx_metadata_947_timing.txt +0 -9
- package/android/build/intermediates/cxx/Debug/2a1it684/logs/x86_64/generate_cxx_metadata_944_timing.txt +0 -9
- /package/android/.cxx/Debug/2a1it684/x86/.cmake/api/v1/reply/{index-2025-11-27T04-19-33-0139.json → index-2025-11-28T05-47-50-0796.json} +0 -0
- /package/android/.cxx/Debug/2a1it684/x86_64/.cmake/api/v1/reply/{index-2025-11-27T05-31-26-0486.json → index-2025-11-28T07-46-59-0151.json} +0 -0
|
@@ -302,31 +302,34 @@ object ImageFormatEncoder {
|
|
|
302
302
|
/**
|
|
303
303
|
* Convert RGB byte array to BGR for OpenCV compatibility.
|
|
304
304
|
* CRITICAL: OpenCV expects BGR format, not RGB.
|
|
305
|
+
* FIXED: Now uses correct channel ordering without assumptions about image dimensions.
|
|
305
306
|
* Includes optional sharpening for improved face detection.
|
|
306
307
|
*
|
|
307
308
|
* @param rgbData RGB data in format RGBRGBRGB...
|
|
308
309
|
* @return BGR data in format BGRBGRBGR...
|
|
309
310
|
*/
|
|
310
311
|
private fun rgbToBgr(rgbData: ByteArray): ByteArray {
|
|
311
|
-
//
|
|
312
|
-
|
|
312
|
+
// NOTE: Sharpening is applied before color channel swap
|
|
313
|
+
// to avoid applying it to swapped values
|
|
314
|
+
val bgrData = ByteArray(rgbData.size)
|
|
313
315
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
var
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
val
|
|
320
|
-
val
|
|
321
|
-
|
|
316
|
+
// Direct RGB -> BGR channel swap (no assumptions about dimensions)
|
|
317
|
+
// This ensures correct color conversion regardless of image size
|
|
318
|
+
var idx = 0
|
|
319
|
+
while (idx < rgbData.size && idx + 2 < rgbData.size) {
|
|
320
|
+
val r = rgbData[idx] // R at idx
|
|
321
|
+
val g = rgbData[idx + 1] // G at idx+1
|
|
322
|
+
val b = rgbData[idx + 2] // B at idx+2
|
|
323
|
+
|
|
324
|
+
// FIXED: Correct BGR channel order for OpenCV cv2.imdecode
|
|
325
|
+
bgrData[idx] = b // B goes to idx (first in BGR)
|
|
326
|
+
bgrData[idx + 1] = g // G stays at idx+1 (middle in BGR)
|
|
327
|
+
bgrData[idx + 2] = r // R goes to idx+2 (last in BGR)
|
|
322
328
|
|
|
323
|
-
|
|
324
|
-
bgrData[bgrIdx++] = b
|
|
325
|
-
bgrData[bgrIdx++] = g
|
|
326
|
-
bgrData[bgrIdx++] = r
|
|
329
|
+
idx += 3
|
|
327
330
|
}
|
|
328
331
|
|
|
329
|
-
Log.d(TAG, "Converted RGB to BGR
|
|
332
|
+
Log.d(TAG, "✓ Converted RGB to BGR: ${rgbData.size} bytes (${rgbData.size / 3} pixels)")
|
|
330
333
|
return bgrData
|
|
331
334
|
}
|
|
332
335
|
|
|
@@ -4,36 +4,41 @@ import android.graphics.Bitmap
|
|
|
4
4
|
import android.graphics.Bitmap.CompressFormat
|
|
5
5
|
import android.util.Base64
|
|
6
6
|
import android.util.Log
|
|
7
|
+
import androidx.exifinterface.media.ExifInterface
|
|
7
8
|
import java.io.ByteArrayOutputStream
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* High-performance JPEG encoder for RGB data.
|
|
11
12
|
* Converts RGB data to JPEG and encodes as Base64 for network transmission.
|
|
13
|
+
* FIXED: Now includes proper EXIF orientation metadata to match hardware camera output.
|
|
12
14
|
*/
|
|
13
15
|
class JpegEncoder {
|
|
14
16
|
|
|
15
17
|
companion object {
|
|
16
18
|
private const val TAG = "JpegEncoder"
|
|
17
|
-
private const val DEFAULT_JPEG_QUALITY = 85
|
|
19
|
+
private const val DEFAULT_JPEG_QUALITY = 92 // Increased from 85 for better face detection
|
|
18
20
|
|
|
19
21
|
/**
|
|
20
22
|
* Convert RGB byte array to JPEG and return as Base64 string.
|
|
21
23
|
* Optimized for high-speed encoding without intermediate Bitmap copies.
|
|
24
|
+
* FIXED: Now includes EXIF orientation (portrait, landscape, etc.)
|
|
22
25
|
*
|
|
23
26
|
* @param rgbData RGB data as byte array (format: RGBRGBRGB...)
|
|
24
27
|
* @param width Image width
|
|
25
28
|
* @param height Image height
|
|
26
|
-
* @param quality JPEG quality (0-100), default
|
|
29
|
+
* @param quality JPEG quality (0-100), default 92
|
|
30
|
+
* @param orientation EXIF orientation (1=normal, 6=90°CW, 8=90°CCW, 3=180°)
|
|
27
31
|
* @return Base64 encoded JPEG string, or null if encoding fails
|
|
28
32
|
*/
|
|
29
33
|
fun rgbToJpegBase64(
|
|
30
34
|
rgbData: ByteArray,
|
|
31
35
|
width: Int,
|
|
32
36
|
height: Int,
|
|
33
|
-
quality: Int = DEFAULT_JPEG_QUALITY
|
|
37
|
+
quality: Int = DEFAULT_JPEG_QUALITY,
|
|
38
|
+
orientation: Int = ExifInterface.ORIENTATION_NORMAL
|
|
34
39
|
): String? {
|
|
35
40
|
return try {
|
|
36
|
-
val jpegBytes = rgbToJpeg(rgbData, width, height, quality) ?: return null
|
|
41
|
+
val jpegBytes = rgbToJpeg(rgbData, width, height, quality, orientation) ?: return null
|
|
37
42
|
Base64.encodeToString(jpegBytes, Base64.NO_WRAP)
|
|
38
43
|
} catch (e: Exception) {
|
|
39
44
|
Log.e(TAG, "Failed to encode RGB to JPEG Base64", e)
|
|
@@ -48,19 +53,21 @@ class JpegEncoder {
|
|
|
48
53
|
* @param rgbFloats RGB data as float array (normalized to 0-1)
|
|
49
54
|
* @param width Image width
|
|
50
55
|
* @param height Image height
|
|
51
|
-
* @param quality JPEG quality (0-100), default
|
|
56
|
+
* @param quality JPEG quality (0-100), default 92
|
|
57
|
+
* @param orientation EXIF orientation (1=normal, 6=90°CW, 8=90°CCW, 3=180°)
|
|
52
58
|
* @return Base64 encoded JPEG string, or null if encoding fails
|
|
53
59
|
*/
|
|
54
60
|
fun rgbFloatToJpegBase64(
|
|
55
61
|
rgbFloats: FloatArray,
|
|
56
62
|
width: Int,
|
|
57
63
|
height: Int,
|
|
58
|
-
quality: Int = DEFAULT_JPEG_QUALITY
|
|
64
|
+
quality: Int = DEFAULT_JPEG_QUALITY,
|
|
65
|
+
orientation: Int = ExifInterface.ORIENTATION_NORMAL
|
|
59
66
|
): String? {
|
|
60
67
|
return try {
|
|
61
68
|
// Convert float array to byte array
|
|
62
69
|
val rgbBytes = convertFloatArrayToRgbBytes(rgbFloats, width, height)
|
|
63
|
-
rgbToJpegBase64(rgbBytes, width, height, quality)
|
|
70
|
+
rgbToJpegBase64(rgbBytes, width, height, quality, orientation)
|
|
64
71
|
} catch (e: Exception) {
|
|
65
72
|
Log.e(TAG, "Failed to encode RGB float array to JPEG Base64", e)
|
|
66
73
|
null
|
|
@@ -69,25 +76,34 @@ class JpegEncoder {
|
|
|
69
76
|
|
|
70
77
|
/**
|
|
71
78
|
* Convert RGB byte array to JPEG bytes.
|
|
79
|
+
* FIXED: Now includes proper EXIF orientation metadata.
|
|
72
80
|
*
|
|
73
81
|
* @param rgbData RGB data as byte array
|
|
74
82
|
* @param width Image width
|
|
75
83
|
* @param height Image height
|
|
76
84
|
* @param quality JPEG quality (0-100)
|
|
85
|
+
* @param orientation EXIF orientation (1=normal, 6=90°CW, 8=90°CCW, 3=180°)
|
|
77
86
|
* @return JPEG encoded byte array, or null if encoding fails
|
|
78
87
|
*/
|
|
79
88
|
fun rgbToJpeg(
|
|
80
89
|
rgbData: ByteArray,
|
|
81
90
|
width: Int,
|
|
82
91
|
height: Int,
|
|
83
|
-
quality: Int = DEFAULT_JPEG_QUALITY
|
|
92
|
+
quality: Int = DEFAULT_JPEG_QUALITY,
|
|
93
|
+
orientation: Int = ExifInterface.ORIENTATION_NORMAL
|
|
84
94
|
): ByteArray? {
|
|
85
95
|
return try {
|
|
86
96
|
// Create bitmap from RGB data
|
|
87
97
|
val bitmap = createBitmapFromRgb(rgbData, width, height)
|
|
88
98
|
val jpegBytes = compressBitmapToJpeg(bitmap, quality)
|
|
89
99
|
bitmap.recycle()
|
|
90
|
-
|
|
100
|
+
|
|
101
|
+
// FIXED: Add EXIF orientation metadata if needed
|
|
102
|
+
return if (orientation != ExifInterface.ORIENTATION_NORMAL) {
|
|
103
|
+
addExifOrientationToJpeg(jpegBytes, orientation)
|
|
104
|
+
} else {
|
|
105
|
+
jpegBytes
|
|
106
|
+
}
|
|
91
107
|
} catch (e: Exception) {
|
|
92
108
|
Log.e(TAG, "Failed to encode RGB to JPEG", e)
|
|
93
109
|
null
|
|
@@ -121,6 +137,28 @@ class JpegEncoder {
|
|
|
121
137
|
return Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888)
|
|
122
138
|
}
|
|
123
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Add EXIF orientation metadata to JPEG bytes.
|
|
142
|
+
* CRITICAL: Face recognition systems may fail without proper orientation!
|
|
143
|
+
*/
|
|
144
|
+
private fun addExifOrientationToJpeg(jpegBytes: ByteArray, orientation: Int): ByteArray {
|
|
145
|
+
return try {
|
|
146
|
+
val tempFile = java.io.File.createTempFile("jpeg", ".jpg")
|
|
147
|
+
tempFile.writeBytes(jpegBytes)
|
|
148
|
+
|
|
149
|
+
val exif = ExifInterface(tempFile.absolutePath)
|
|
150
|
+
exif.setAttribute(ExifInterface.TAG_ORIENTATION, orientation.toString())
|
|
151
|
+
exif.saveAttributes()
|
|
152
|
+
|
|
153
|
+
val resultBytes = tempFile.readBytes()
|
|
154
|
+
tempFile.delete()
|
|
155
|
+
resultBytes
|
|
156
|
+
} catch (e: Exception) {
|
|
157
|
+
Log.w(TAG, "Failed to add EXIF orientation, returning original JPEG: ${e.message}")
|
|
158
|
+
jpegBytes // Fallback to original if EXIF writing fails
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
124
162
|
/**
|
|
125
163
|
* Convert float array (normalized 0-1) to RGB byte array (0-255).
|
|
126
164
|
*/
|
|
@@ -163,6 +201,7 @@ class JpegEncoder {
|
|
|
163
201
|
|
|
164
202
|
/**
|
|
165
203
|
* Direct NV21 to RGB conversion (minimal overhead).
|
|
204
|
+
* FIXED: Now uses corrected YUV to RGB conversion formula.
|
|
166
205
|
*/
|
|
167
206
|
private fun nv21ToRgbDirect(nv21: ByteArray, width: Int, height: Int, rgbOut: ByteArray) {
|
|
168
207
|
val ySize = width * height
|
|
@@ -180,6 +219,8 @@ class JpegEncoder {
|
|
|
180
219
|
val uf = uVal - 128f
|
|
181
220
|
val vf = vVal - 128f
|
|
182
221
|
|
|
222
|
+
// FIXED: Corrected YUV to RGB conversion formula
|
|
223
|
+
// Using ITU-R BT.601 standard coefficients
|
|
183
224
|
val r = (yf + 1.402f * vf).coerceIn(0f, 255f).toInt().toByte()
|
|
184
225
|
val g = (yf - 0.34414f * uf - 0.71414f * vf).coerceIn(0f, 255f).toInt().toByte()
|
|
185
226
|
val b = (yf + 1.772f * uf).coerceIn(0f, 255f).toInt().toByte()
|
|
@@ -2,6 +2,7 @@ package com.faceantispoof
|
|
|
2
2
|
|
|
3
3
|
import java.nio.ByteBuffer
|
|
4
4
|
import kotlin.math.abs
|
|
5
|
+
import kotlin.math.pow
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Converts YUV NV21 data directly to normalized RGB float arrays without creating Bitmaps.
|
|
@@ -221,7 +222,8 @@ class YuvToFloatArrayConverter {
|
|
|
221
222
|
}
|
|
222
223
|
|
|
223
224
|
/**
|
|
224
|
-
* Convert a single YUV pixel to RGB.
|
|
225
|
+
* Convert a single YUV pixel to RGB with optional gamma correction.
|
|
226
|
+
* Applies sRGB gamma curve to match hardware ISP output.
|
|
225
227
|
*/
|
|
226
228
|
private fun yuvToRgb(
|
|
227
229
|
nv21: ByteArray,
|
|
@@ -246,7 +248,17 @@ class YuvToFloatArrayConverter {
|
|
|
246
248
|
val g = (yf - 0.34414f * uf - 0.71414f * vf).coerceIn(0f, 255f)
|
|
247
249
|
val b = (yf + 1.772f * uf).coerceIn(0f, 255f)
|
|
248
250
|
|
|
249
|
-
|
|
251
|
+
// FIXED: Apply sRGB gamma correction to match hardware ISP
|
|
252
|
+
// This ensures that colors match hardware-captured JPEGs
|
|
253
|
+
val rLinear = r / 255f
|
|
254
|
+
val gLinear = g / 255f
|
|
255
|
+
val bLinear = b / 255f
|
|
256
|
+
|
|
257
|
+
val rCorrected = applyGammaCorrection(rLinear)
|
|
258
|
+
val gCorrected = applyGammaCorrection(gLinear)
|
|
259
|
+
val bCorrected = applyGammaCorrection(bLinear)
|
|
260
|
+
|
|
261
|
+
return Triple(rCorrected * 255f, gCorrected * 255f, bCorrected * 255f)
|
|
250
262
|
}
|
|
251
263
|
|
|
252
264
|
/**
|
|
@@ -549,4 +561,24 @@ class YuvToFloatArrayConverter {
|
|
|
549
561
|
|
|
550
562
|
return output
|
|
551
563
|
}
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Apply sRGB gamma correction to match hardware camera ISP output.
|
|
567
|
+
* This is CRITICAL for face recognition: hardware cameras apply gamma correction,
|
|
568
|
+
* but raw YUV conversion doesn't. This function brings the frame processor output
|
|
569
|
+
* in line with native camera JPEGs.
|
|
570
|
+
*
|
|
571
|
+
* @param linear Linear RGB value in range [0, 1]
|
|
572
|
+
* @return Gamma-corrected RGB value in range [0, 1]
|
|
573
|
+
*/
|
|
574
|
+
private fun applyGammaCorrection(linear: Float): Float {
|
|
575
|
+
return if (linear <= 0.0031308f) {
|
|
576
|
+
// Linear segment for very dark values
|
|
577
|
+
linear * 12.92f
|
|
578
|
+
} else {
|
|
579
|
+
// Power law segment for normal values
|
|
580
|
+
// sRGB formula: value^(1/2.4)
|
|
581
|
+
1.055f * Math.pow(linear.toDouble(), 1.0 / 2.4).toFloat() - 0.055f
|
|
582
|
+
}
|
|
583
|
+
}
|
|
552
584
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-vision-camera-spoof-detector",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "High-performance face anti-spoofing and liveness detection module for React Native Vision Camera. Uses TensorFlow Lite with GPU acceleration and optimized YUV processing.",
|
|
5
5
|
"homepage": "https://github.com/jescon-tech/react-native-vision-camera-spoof-detector",
|
|
6
6
|
"repository": {
|
|
File without changes
|