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.
Files changed (857) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +220 -0
  3. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  4. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  5. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  6. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/cache-v2-701700ba4bb2215c1ccd.json +1599 -0
  7. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-9189be15e8b04df8f258.json +857 -0
  8. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-073369af1c5eb367d160.json +185 -0
  9. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json +14 -0
  10. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/directory-libyuv-Debug-68bb497e958fc902f93a.json +100 -0
  11. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/index-2025-11-18T09-41-06-0926.json +92 -0
  12. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-cpuid-Debug-5af24d55c9649a4c3a3f.json +136 -0
  13. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-faceantispoof-Debug-aa45fddb87a8ac2074bb.json +181 -0
  14. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-fastyuv-Debug-4dd5b049ce28a8e070d1.json +182 -0
  15. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv-Debug-b8d5ee3e10a1f31a29fe.json +433 -0
  16. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_common_objects-Debug-ae517204d04beeb2df23.json +522 -0
  17. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_neon64-Debug-2ab157e6b75bcb340b03.json +137 -0
  18. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_shared-Debug-2aecda61b70017f775b5.json +455 -0
  19. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_sme-Debug-73d1e6cc8ef043b4e243.json +126 -0
  20. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuv_sve-Debug-9d95a17080a7480f85a6.json +104 -0
  21. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuvconstants-Debug-31b06c1ed2b225cf2443.json +136 -0
  22. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.cmake/api/v1/reply/target-yuvconvert-Debug-2231dac0a591237abb04.json +157 -0
  23. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.ninja_deps +0 -0
  24. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/.ninja_log +63 -0
  25. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeCache.txt +465 -0
  26. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
  27. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
  28. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
  29. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
  30. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
  31. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
  32. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
  33. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  34. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  35. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/CMakeOutput.log +276 -0
  36. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/TargetDirectories.txt +27 -0
  37. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/cmake.check_cache +1 -0
  38. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/faceantispoof.dir/48ddb531beec5c42d2f7a5f3aa0b5968/ReactCommon/jsi/jsi/jsi.cpp.o +0 -0
  39. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/faceantispoof.dir/FaceAntiSpoofJSI.cpp.o +0 -0
  40. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/fastyuv.dir/FastYuvJni.cpp.o +0 -0
  41. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
  42. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CMakeFiles/rules.ninja +198 -0
  43. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CPackConfig.cmake +71 -0
  44. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/CPackSourceConfig.cmake +79 -0
  45. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/additional_project_files.txt +48 -0
  46. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/android_gradle_build.json +106 -0
  47. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/android_gradle_build_mini.json +87 -0
  48. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/build.ninja +1071 -0
  49. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/build_file_index.txt +3 -0
  50. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/cmake_install.cmake +59 -0
  51. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/compile_commands.json +277 -0
  52. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/compile_commands.json.bin +0 -0
  53. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/configure_fingerprint.bin +29 -0
  54. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/cpuid.dir/util/cpuid.c.o +0 -0
  55. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare.cc.o +0 -0
  56. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_common.cc.o +0 -0
  57. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_gcc.cc.o +0 -0
  58. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_win.cc.o +0 -0
  59. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert.cc.o +0 -0
  60. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_argb.cc.o +0 -0
  61. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from.cc.o +0 -0
  62. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from_argb.cc.o +0 -0
  63. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_jpeg.cc.o +0 -0
  64. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_argb.cc.o +0 -0
  65. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_i420.cc.o +0 -0
  66. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/cpu_id.cc.o +0 -0
  67. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_decoder.cc.o +0 -0
  68. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_validate.cc.o +0 -0
  69. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/planar_functions.cc.o +0 -0
  70. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate.cc.o +0 -0
  71. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_any.cc.o +0 -0
  72. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_argb.cc.o +0 -0
  73. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_common.cc.o +0 -0
  74. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_gcc.cc.o +0 -0
  75. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_lsx.cc.o +0 -0
  76. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_win.cc.o +0 -0
  77. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_any.cc.o +0 -0
  78. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_common.cc.o +0 -0
  79. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_gcc.cc.o +0 -0
  80. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lasx.cc.o +0 -0
  81. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lsx.cc.o +0 -0
  82. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_rvv.cc.o +0 -0
  83. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_win.cc.o +0 -0
  84. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale.cc.o +0 -0
  85. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_any.cc.o +0 -0
  86. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_argb.cc.o +0 -0
  87. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_common.cc.o +0 -0
  88. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_gcc.cc.o +0 -0
  89. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_lsx.cc.o +0 -0
  90. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rgb.cc.o +0 -0
  91. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rvv.cc.o +0 -0
  92. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_uv.cc.o +0 -0
  93. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_win.cc.o +0 -0
  94. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_common_objects.dir/source/video_common.cc.o +0 -0
  95. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_neon64.dir/source/compare_neon64.cc.o +0 -0
  96. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_neon64.dir/source/rotate_neon64.cc.o +0 -0
  97. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_neon64.dir/source/row_neon64.cc.o +0 -0
  98. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_neon64.dir/source/scale_neon64.cc.o +0 -0
  99. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_sme.dir/source/rotate_sme.cc.o +0 -0
  100. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_sme.dir/source/row_sme.cc.o +0 -0
  101. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_sme.dir/source/scale_sme.cc.o +0 -0
  102. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuv_sve.dir/source/row_sve.cc.o +0 -0
  103. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuvconstants.dir/util/yuvconstants.c.o +0 -0
  104. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/CMakeFiles/yuvconvert.dir/util/yuvconvert.cc.o +0 -0
  105. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/cmake_install.cmake +87 -0
  106. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/libyuv/libyuv.a +0 -0
  107. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/metadata_generation_command.txt +19 -0
  108. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/prefab_config.json +4 -0
  109. package/android/.cxx/Debug/2a3w6u3n/arm64-v8a/symbol_folder_index.txt +1 -0
  110. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  111. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  112. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  113. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/cache-v2-3c91c5cee78e3e904960.json +1587 -0
  114. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-7cc7148edcc0267ae184.json +857 -0
  115. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-3db6484795577cf354b3.json +167 -0
  116. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json +14 -0
  117. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/directory-libyuv-Debug-063ed54195fe25617bc7.json +100 -0
  118. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/index-2025-11-18T09-41-44-0186.json +92 -0
  119. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-cpuid-Debug-a3f2884614434f8f188a.json +150 -0
  120. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-faceantispoof-Debug-c905db8d2a36c2f49235.json +181 -0
  121. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-fastyuv-Debug-e08fb9fb89a090bfee1a.json +190 -0
  122. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuv-Debug-4b1ffa979fbf6ac68418.json +406 -0
  123. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuv_common_objects-Debug-245e248f528e11e2d34d.json +536 -0
  124. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuv_neon-Debug-2ea21009709c7febf67d.json +151 -0
  125. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuv_shared-Debug-e387ee44aace33b18140.json +428 -0
  126. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuvconstants-Debug-14fbb0c58620d35bb155.json +150 -0
  127. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.cmake/api/v1/reply/target-yuvconvert-Debug-c40ecea0358b0e737802.json +171 -0
  128. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.ninja_deps +0 -0
  129. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/.ninja_log +59 -0
  130. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeCache.txt +463 -0
  131. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
  132. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
  133. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
  134. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
  135. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
  136. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
  137. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
  138. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  139. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  140. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/CMakeOutput.log +268 -0
  141. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/TargetDirectories.txt +25 -0
  142. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/cmake.check_cache +1 -0
  143. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/faceantispoof.dir/48ddb531beec5c42d2f7a5f3aa0b5968/ReactCommon/jsi/jsi/jsi.cpp.o +0 -0
  144. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/faceantispoof.dir/FaceAntiSpoofJSI.cpp.o +0 -0
  145. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/fastyuv.dir/FastYuvJni.cpp.o +0 -0
  146. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
  147. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CMakeFiles/rules.ninja +178 -0
  148. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CPackConfig.cmake +71 -0
  149. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/CPackSourceConfig.cmake +79 -0
  150. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/additional_project_files.txt +44 -0
  151. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/android_gradle_build.json +96 -0
  152. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/android_gradle_build_mini.json +77 -0
  153. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/build.ninja +1046 -0
  154. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/build_file_index.txt +3 -0
  155. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/cmake_install.cmake +59 -0
  156. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/compile_commands.json +257 -0
  157. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/compile_commands.json.bin +0 -0
  158. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/configure_fingerprint.bin +29 -0
  159. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/cpuid.dir/util/cpuid.c.o +0 -0
  160. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare.cc.o +0 -0
  161. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_common.cc.o +0 -0
  162. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_gcc.cc.o +0 -0
  163. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_win.cc.o +0 -0
  164. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert.cc.o +0 -0
  165. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_argb.cc.o +0 -0
  166. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from.cc.o +0 -0
  167. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from_argb.cc.o +0 -0
  168. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_jpeg.cc.o +0 -0
  169. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_argb.cc.o +0 -0
  170. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_i420.cc.o +0 -0
  171. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/cpu_id.cc.o +0 -0
  172. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_decoder.cc.o +0 -0
  173. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_validate.cc.o +0 -0
  174. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/planar_functions.cc.o +0 -0
  175. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate.cc.o +0 -0
  176. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_any.cc.o +0 -0
  177. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_argb.cc.o +0 -0
  178. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_common.cc.o +0 -0
  179. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_gcc.cc.o +0 -0
  180. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_lsx.cc.o +0 -0
  181. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_win.cc.o +0 -0
  182. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_any.cc.o +0 -0
  183. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_common.cc.o +0 -0
  184. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_gcc.cc.o +0 -0
  185. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lasx.cc.o +0 -0
  186. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lsx.cc.o +0 -0
  187. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_rvv.cc.o +0 -0
  188. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_win.cc.o +0 -0
  189. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale.cc.o +0 -0
  190. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_any.cc.o +0 -0
  191. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_argb.cc.o +0 -0
  192. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_common.cc.o +0 -0
  193. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_gcc.cc.o +0 -0
  194. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_lsx.cc.o +0 -0
  195. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rgb.cc.o +0 -0
  196. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rvv.cc.o +0 -0
  197. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_uv.cc.o +0 -0
  198. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_win.cc.o +0 -0
  199. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_common_objects.dir/source/video_common.cc.o +0 -0
  200. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_neon.dir/source/compare_neon.cc.o +0 -0
  201. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_neon.dir/source/rotate_neon.cc.o +0 -0
  202. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_neon.dir/source/row_neon.cc.o +0 -0
  203. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuv_neon.dir/source/scale_neon.cc.o +0 -0
  204. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuvconstants.dir/util/yuvconstants.c.o +0 -0
  205. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/CMakeFiles/yuvconvert.dir/util/yuvconvert.cc.o +0 -0
  206. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/cmake_install.cmake +87 -0
  207. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/libyuv/libyuv.a +0 -0
  208. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/metadata_generation_command.txt +19 -0
  209. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/prefab_config.json +4 -0
  210. package/android/.cxx/Debug/2a3w6u3n/armeabi-v7a/symbol_folder_index.txt +1 -0
  211. package/android/.cxx/Debug/2a3w6u3n/hash_key.txt +26 -0
  212. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  213. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  214. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  215. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/cache-v2-2fe46b6519c8341b1982.json +1587 -0
  216. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/cmakeFiles-v1-a03e763d0c6effec9f6f.json +857 -0
  217. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/codemodel-v2-2412bbfc0c74a0dc613a.json +158 -0
  218. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json +14 -0
  219. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/directory-libyuv-Debug-7cf182a5e476bc9b5f34.json +100 -0
  220. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/index-2025-11-18T09-41-52-0585.json +92 -0
  221. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-cpuid-Debug-931d089bced0b77c5070.json +136 -0
  222. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-faceantispoof-Debug-7b58f88faeacc46f961d.json +181 -0
  223. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-fastyuv-Debug-9283b76b8a94ba273122.json +157 -0
  224. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuv-Debug-c270d4a92a15ef45f650.json +368 -0
  225. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuv_common_objects-Debug-ae517204d04beeb2df23.json +522 -0
  226. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuv_shared-Debug-42c6196dd1672984dcd7.json +390 -0
  227. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuvconstants-Debug-7e8432d4753ee3bd592d.json +136 -0
  228. package/android/.cxx/Debug/2a3w6u3n/x86/.cmake/api/v1/reply/target-yuvconvert-Debug-2cc934aa605d443ac9a1.json +157 -0
  229. package/android/.cxx/Debug/2a3w6u3n/x86/.ninja_deps +0 -0
  230. package/android/.cxx/Debug/2a3w6u3n/x86/.ninja_log +55 -0
  231. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeCache.txt +463 -0
  232. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
  233. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
  234. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
  235. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
  236. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
  237. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
  238. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
  239. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  240. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  241. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/CMakeOutput.log +258 -0
  242. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/TargetDirectories.txt +24 -0
  243. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/cmake.check_cache +1 -0
  244. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/faceantispoof.dir/FaceAntiSpoofJSI.cpp.o +0 -0
  245. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/faceantispoof.dir/c9fdc8b0d027394fa06b64ba7ac7706f/react-native/ReactCommon/jsi/jsi/jsi.cpp.o +0 -0
  246. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/fastyuv.dir/FastYuvJni.cpp.o +0 -0
  247. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
  248. package/android/.cxx/Debug/2a3w6u3n/x86/CMakeFiles/rules.ninja +168 -0
  249. package/android/.cxx/Debug/2a3w6u3n/x86/CPackConfig.cmake +71 -0
  250. package/android/.cxx/Debug/2a3w6u3n/x86/CPackSourceConfig.cmake +79 -0
  251. package/android/.cxx/Debug/2a3w6u3n/x86/additional_project_files.txt +40 -0
  252. package/android/.cxx/Debug/2a3w6u3n/x86/android_gradle_build.json +91 -0
  253. package/android/.cxx/Debug/2a3w6u3n/x86/android_gradle_build_mini.json +72 -0
  254. package/android/.cxx/Debug/2a3w6u3n/x86/build.ninja +945 -0
  255. package/android/.cxx/Debug/2a3w6u3n/x86/build_file_index.txt +3 -0
  256. package/android/.cxx/Debug/2a3w6u3n/x86/cmake_install.cmake +59 -0
  257. package/android/.cxx/Debug/2a3w6u3n/x86/compile_commands.json +237 -0
  258. package/android/.cxx/Debug/2a3w6u3n/x86/compile_commands.json.bin +0 -0
  259. package/android/.cxx/Debug/2a3w6u3n/x86/configure_fingerprint.bin +29 -0
  260. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/cpuid.dir/util/cpuid.c.o +0 -0
  261. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare.cc.o +0 -0
  262. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_common.cc.o +0 -0
  263. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_gcc.cc.o +0 -0
  264. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_win.cc.o +0 -0
  265. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert.cc.o +0 -0
  266. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_argb.cc.o +0 -0
  267. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from.cc.o +0 -0
  268. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from_argb.cc.o +0 -0
  269. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_jpeg.cc.o +0 -0
  270. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_argb.cc.o +0 -0
  271. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_i420.cc.o +0 -0
  272. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/cpu_id.cc.o +0 -0
  273. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_decoder.cc.o +0 -0
  274. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_validate.cc.o +0 -0
  275. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/planar_functions.cc.o +0 -0
  276. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate.cc.o +0 -0
  277. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_any.cc.o +0 -0
  278. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_argb.cc.o +0 -0
  279. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_common.cc.o +0 -0
  280. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_gcc.cc.o +0 -0
  281. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_lsx.cc.o +0 -0
  282. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_win.cc.o +0 -0
  283. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_any.cc.o +0 -0
  284. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_common.cc.o +0 -0
  285. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_gcc.cc.o +0 -0
  286. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lasx.cc.o +0 -0
  287. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lsx.cc.o +0 -0
  288. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_rvv.cc.o +0 -0
  289. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_win.cc.o +0 -0
  290. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale.cc.o +0 -0
  291. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_any.cc.o +0 -0
  292. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_argb.cc.o +0 -0
  293. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_common.cc.o +0 -0
  294. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_gcc.cc.o +0 -0
  295. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_lsx.cc.o +0 -0
  296. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rgb.cc.o +0 -0
  297. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rvv.cc.o +0 -0
  298. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_uv.cc.o +0 -0
  299. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_win.cc.o +0 -0
  300. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuv_common_objects.dir/source/video_common.cc.o +0 -0
  301. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuvconstants.dir/util/yuvconstants.c.o +0 -0
  302. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/CMakeFiles/yuvconvert.dir/util/yuvconvert.cc.o +0 -0
  303. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/cmake_install.cmake +87 -0
  304. package/android/.cxx/Debug/2a3w6u3n/x86/libyuv/libyuv.a +0 -0
  305. package/android/.cxx/Debug/2a3w6u3n/x86/metadata_generation_command.txt +19 -0
  306. package/android/.cxx/Debug/2a3w6u3n/x86/prefab_config.json +4 -0
  307. package/android/.cxx/Debug/2a3w6u3n/x86/symbol_folder_index.txt +1 -0
  308. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  309. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  310. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  311. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/cache-v2-5ca7fb88a80849964189.json +1587 -0
  312. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-9871675aa6610f6180ca.json +857 -0
  313. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/codemodel-v2-deb41c72c38c1ff57431.json +158 -0
  314. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json +14 -0
  315. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/directory-libyuv-Debug-edf355e979425c71897d.json +100 -0
  316. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/index-2025-11-18T09-42-00-0374.json +92 -0
  317. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-cpuid-Debug-264b6f675c69e42e8113.json +136 -0
  318. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-faceantispoof-Debug-c95714fd9c4cd04d4222.json +181 -0
  319. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-fastyuv-Debug-80c6b1b5d8e35770dde3.json +157 -0
  320. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuv-Debug-6d3d5c5dcc6bffc18ce6.json +368 -0
  321. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuv_common_objects-Debug-ae517204d04beeb2df23.json +522 -0
  322. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuv_shared-Debug-6e364a075e5b9b47274e.json +390 -0
  323. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuvconstants-Debug-f6a29384c5629faf75f4.json +136 -0
  324. package/android/.cxx/Debug/2a3w6u3n/x86_64/.cmake/api/v1/reply/target-yuvconvert-Debug-dca5f1cf9af89281fc95.json +157 -0
  325. package/android/.cxx/Debug/2a3w6u3n/x86_64/.ninja_deps +0 -0
  326. package/android/.cxx/Debug/2a3w6u3n/x86_64/.ninja_log +55 -0
  327. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeCache.txt +463 -0
  328. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake +72 -0
  329. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake +83 -0
  330. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin +0 -0
  331. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin +0 -0
  332. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake +15 -0
  333. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c +803 -0
  334. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o +0 -0
  335. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  336. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  337. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/CMakeOutput.log +258 -0
  338. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/TargetDirectories.txt +24 -0
  339. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/cmake.check_cache +1 -0
  340. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/faceantispoof.dir/FaceAntiSpoofJSI.cpp.o +0 -0
  341. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/faceantispoof.dir/c9fdc8b0d027394fa06b64ba7ac7706f/react-native/ReactCommon/jsi/jsi/jsi.cpp.o +0 -0
  342. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/fastyuv.dir/FastYuvJni.cpp.o +0 -0
  343. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/fastyuv.dir/fast_yuv.cpp.o +0 -0
  344. package/android/.cxx/Debug/2a3w6u3n/x86_64/CMakeFiles/rules.ninja +168 -0
  345. package/android/.cxx/Debug/2a3w6u3n/x86_64/CPackConfig.cmake +71 -0
  346. package/android/.cxx/Debug/2a3w6u3n/x86_64/CPackSourceConfig.cmake +79 -0
  347. package/android/.cxx/Debug/2a3w6u3n/x86_64/additional_project_files.txt +40 -0
  348. package/android/.cxx/Debug/2a3w6u3n/x86_64/android_gradle_build.json +91 -0
  349. package/android/.cxx/Debug/2a3w6u3n/x86_64/android_gradle_build_mini.json +72 -0
  350. package/android/.cxx/Debug/2a3w6u3n/x86_64/build.ninja +945 -0
  351. package/android/.cxx/Debug/2a3w6u3n/x86_64/build_file_index.txt +3 -0
  352. package/android/.cxx/Debug/2a3w6u3n/x86_64/cmake_install.cmake +59 -0
  353. package/android/.cxx/Debug/2a3w6u3n/x86_64/compile_commands.json +237 -0
  354. package/android/.cxx/Debug/2a3w6u3n/x86_64/compile_commands.json.bin +0 -0
  355. package/android/.cxx/Debug/2a3w6u3n/x86_64/configure_fingerprint.bin +29 -0
  356. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/cpuid.dir/util/cpuid.c.o +0 -0
  357. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare.cc.o +0 -0
  358. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_common.cc.o +0 -0
  359. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_gcc.cc.o +0 -0
  360. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/compare_win.cc.o +0 -0
  361. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert.cc.o +0 -0
  362. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_argb.cc.o +0 -0
  363. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from.cc.o +0 -0
  364. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_from_argb.cc.o +0 -0
  365. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_jpeg.cc.o +0 -0
  366. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_argb.cc.o +0 -0
  367. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/convert_to_i420.cc.o +0 -0
  368. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/cpu_id.cc.o +0 -0
  369. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_decoder.cc.o +0 -0
  370. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/mjpeg_validate.cc.o +0 -0
  371. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/planar_functions.cc.o +0 -0
  372. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate.cc.o +0 -0
  373. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_any.cc.o +0 -0
  374. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_argb.cc.o +0 -0
  375. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_common.cc.o +0 -0
  376. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_gcc.cc.o +0 -0
  377. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_lsx.cc.o +0 -0
  378. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/rotate_win.cc.o +0 -0
  379. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_any.cc.o +0 -0
  380. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_common.cc.o +0 -0
  381. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_gcc.cc.o +0 -0
  382. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lasx.cc.o +0 -0
  383. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_lsx.cc.o +0 -0
  384. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_rvv.cc.o +0 -0
  385. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/row_win.cc.o +0 -0
  386. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale.cc.o +0 -0
  387. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_any.cc.o +0 -0
  388. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_argb.cc.o +0 -0
  389. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_common.cc.o +0 -0
  390. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_gcc.cc.o +0 -0
  391. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_lsx.cc.o +0 -0
  392. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rgb.cc.o +0 -0
  393. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_rvv.cc.o +0 -0
  394. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_uv.cc.o +0 -0
  395. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/scale_win.cc.o +0 -0
  396. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuv_common_objects.dir/source/video_common.cc.o +0 -0
  397. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuvconstants.dir/util/yuvconstants.c.o +0 -0
  398. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/CMakeFiles/yuvconvert.dir/util/yuvconvert.cc.o +0 -0
  399. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/cmake_install.cmake +87 -0
  400. package/android/.cxx/Debug/2a3w6u3n/x86_64/libyuv/libyuv.a +0 -0
  401. package/android/.cxx/Debug/2a3w6u3n/x86_64/metadata_generation_command.txt +19 -0
  402. package/android/.cxx/Debug/2a3w6u3n/x86_64/prefab_config.json +4 -0
  403. package/android/.cxx/Debug/2a3w6u3n/x86_64/symbol_folder_index.txt +1 -0
  404. package/android/.cxx/tools/debug/arm64-v8a/compile_commands.json +277 -0
  405. package/android/.cxx/tools/debug/armeabi-v7a/compile_commands.json +257 -0
  406. package/android/.cxx/tools/debug/x86/compile_commands.json +237 -0
  407. package/android/.cxx/tools/debug/x86_64/compile_commands.json +237 -0
  408. package/android/build/.transforms/477a48f41cbd60a6044ae2b6659edb2d/results.bin +1 -0
  409. package/android/build/.transforms/477a48f41cbd60a6044ae2b6659edb2d/transformed/classes/classes_dex/classes.dex +0 -0
  410. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/results.bin +1 -0
  411. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/AcceleratorConfig.dex +0 -0
  412. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/AntiSpoofingResult.dex +0 -0
  413. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/BuildConfig.dex +0 -0
  414. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofFrameProcessor.dex +0 -0
  415. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofModule$Companion.dex +0 -0
  416. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofModule.dex +0 -0
  417. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofPackage.dex +0 -0
  418. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofingAdvanced$Companion.dex +0 -0
  419. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FaceAntiSpoofingAdvanced.dex +0 -0
  420. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/FastYuv.dex +0 -0
  421. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/YuvToFloatArrayConverter.dex +0 -0
  422. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/faceantispoof/YuvToRgbConverter.dex +0 -0
  423. package/android/build/.transforms/4b58c518b6e650677b3ff7c47c32914f/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  424. package/android/build/generated/source/buildConfig/debug/com/faceantispoof/BuildConfig.java +14 -0
  425. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +13 -0
  426. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  427. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  428. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  429. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  430. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  431. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +1 -0
  432. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/build_command_targets.bat +10 -0
  433. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/build_model.json +199 -0
  434. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/build_stderr_targets.txt +0 -0
  435. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/build_stdout_targets.txt +63 -0
  436. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/configure_command.bat +19 -0
  437. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/configure_stderr.txt +0 -0
  438. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/configure_stdout.txt +21 -0
  439. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/generate_cxx_metadata_8656_timing.txt +9 -0
  440. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/arm64-v8a/metadata_generation_record.json +158 -0
  441. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/build_command_targets.bat +10 -0
  442. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/build_model.json +199 -0
  443. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/build_stderr_targets.txt +0 -0
  444. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/build_stdout_targets.txt +59 -0
  445. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/configure_command.bat +19 -0
  446. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/configure_stderr.txt +1 -0
  447. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/configure_stdout.txt +19 -0
  448. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/generate_cxx_metadata_8659_timing.txt +9 -0
  449. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/armeabi-v7a/metadata_generation_record.json +158 -0
  450. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/build_command_targets.bat +10 -0
  451. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/build_model.json +199 -0
  452. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/build_stderr_targets.txt +0 -0
  453. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/build_stdout_targets.txt +55 -0
  454. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/configure_command.bat +19 -0
  455. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/configure_stderr.txt +0 -0
  456. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/configure_stdout.txt +19 -0
  457. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/generate_cxx_metadata_8659_timing.txt +9 -0
  458. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86/metadata_generation_record.json +158 -0
  459. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/build_command_targets.bat +10 -0
  460. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/build_model.json +199 -0
  461. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/build_stderr_targets.txt +0 -0
  462. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/build_stdout_targets.txt +55 -0
  463. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/configure_command.bat +19 -0
  464. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/configure_stderr.txt +0 -0
  465. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/configure_stdout.txt +19 -0
  466. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/generate_cxx_metadata_8659_timing.txt +9 -0
  467. package/android/build/intermediates/cxx/Debug/2a3w6u3n/logs/x86_64/metadata_generation_record.json +158 -0
  468. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/cpuid +0 -0
  469. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/libfaceantispoof.so +0 -0
  470. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/libfastyuv.so +0 -0
  471. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/libyuv.so +0 -0
  472. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/yuvconstants +0 -0
  473. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/arm64-v8a/yuvconvert +0 -0
  474. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/cpuid +0 -0
  475. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/libfaceantispoof.so +0 -0
  476. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/libfastyuv.so +0 -0
  477. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/libyuv.so +0 -0
  478. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/yuvconstants +0 -0
  479. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/armeabi-v7a/yuvconvert +0 -0
  480. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/cpuid +0 -0
  481. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/libfaceantispoof.so +0 -0
  482. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/libfastyuv.so +0 -0
  483. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/libyuv.so +0 -0
  484. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/yuvconstants +0 -0
  485. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86/yuvconvert +0 -0
  486. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/cpuid +0 -0
  487. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/libfaceantispoof.so +0 -0
  488. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/libfastyuv.so +0 -0
  489. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/libyuv.so +0 -0
  490. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/yuvconstants +0 -0
  491. package/android/build/intermediates/cxx/Debug/2a3w6u3n/obj/x86_64/yuvconvert +0 -0
  492. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
  493. package/android/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml +4 -0
  494. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  495. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  496. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  497. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  498. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-vision-camera-face-antispoof-detector_debug.kotlin_module +0 -0
  499. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/faceantispoof/BuildConfig.class +0 -0
  500. package/android/build/intermediates/library_assets/debug/packageDebugAssets/out/FaceAntiSpoofing.tflite +0 -0
  501. package/android/build/intermediates/library_assets/debug/packageDebugAssets/out/spoof_model_scale_2_7.tflite +0 -0
  502. package/android/build/intermediates/library_assets/debug/packageDebugAssets/out/spoof_model_scale_4_0.tflite +0 -0
  503. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libfaceantispoof.so +0 -0
  504. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libfastyuv.so +0 -0
  505. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libyuv.so +0 -0
  506. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/libfaceantispoof.so +0 -0
  507. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/libfastyuv.so +0 -0
  508. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/libyuv.so +0 -0
  509. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/libfaceantispoof.so +0 -0
  510. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/libfastyuv.so +0 -0
  511. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/libyuv.so +0 -0
  512. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libfaceantispoof.so +0 -0
  513. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libfastyuv.so +0 -0
  514. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libyuv.so +0 -0
  515. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +3 -0
  516. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +17 -0
  517. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +13 -0
  518. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/libfaceantispoof.so +0 -0
  519. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/libfastyuv.so +0 -0
  520. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/libyuv.so +0 -0
  521. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/libfaceantispoof.so +0 -0
  522. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/libfastyuv.so +0 -0
  523. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/libyuv.so +0 -0
  524. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/libfaceantispoof.so +0 -0
  525. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/libfastyuv.so +0 -0
  526. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/libyuv.so +0 -0
  527. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/libfaceantispoof.so +0 -0
  528. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/libfastyuv.so +0 -0
  529. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/libyuv.so +0 -0
  530. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  531. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  532. package/android/build/intermediates/packaged_res/debug/packageDebugResources/values/values.xml +4 -0
  533. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-vision-camera-face-antispoof-detector_debug.kotlin_module +0 -0
  534. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/AcceleratorConfig.class +0 -0
  535. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/AntiSpoofingResult.class +0 -0
  536. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/BuildConfig.class +0 -0
  537. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofFrameProcessor.class +0 -0
  538. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofModule$Companion.class +0 -0
  539. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofModule.class +0 -0
  540. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofPackage.class +0 -0
  541. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofingAdvanced$Companion.class +0 -0
  542. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FaceAntiSpoofingAdvanced.class +0 -0
  543. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/FastYuv.class +0 -0
  544. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/YuvToFloatArrayConverter.class +0 -0
  545. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/faceantispoof/YuvToRgbConverter.class +0 -0
  546. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  547. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +2 -0
  548. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  549. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  550. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  551. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  552. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  553. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  554. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  555. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  556. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  557. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  558. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  559. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  560. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  561. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  562. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  563. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  564. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  565. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  566. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  567. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  568. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  569. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  570. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  571. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  572. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  573. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  574. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  575. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  576. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  577. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  578. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  579. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  580. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  581. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  582. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  583. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  584. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  585. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  586. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  587. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  588. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  589. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  590. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  591. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  592. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  593. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  594. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  595. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  596. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  597. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  598. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  599. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  600. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  601. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  602. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  603. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  604. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  605. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  606. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  607. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  608. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  609. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  610. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  611. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  612. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  613. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  614. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  615. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  616. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  617. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  618. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  619. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  620. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  621. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  622. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  623. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  624. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  625. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  626. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  627. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  628. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  629. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  630. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  631. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  632. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  633. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  634. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  635. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  636. package/android/build/outputs/logs/manifest-merger-debug-report.txt +25 -0
  637. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  638. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-vision-camera-face-antispoof-detector_debug.kotlin_module +0 -0
  639. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/AcceleratorConfig.class +0 -0
  640. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/AntiSpoofingResult.class +0 -0
  641. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofFrameProcessor.class +0 -0
  642. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofModule$Companion.class +0 -0
  643. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofModule.class +0 -0
  644. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofPackage.class +0 -0
  645. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofingAdvanced$Companion.class +0 -0
  646. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FaceAntiSpoofingAdvanced.class +0 -0
  647. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/FastYuv.class +0 -0
  648. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/YuvToFloatArrayConverter.class +0 -0
  649. package/android/build/tmp/kotlin-classes/debug/com/faceantispoof/YuvToRgbConverter.class +0 -0
  650. package/android/build.gradle +128 -0
  651. package/android/src/main/AndroidManifest.xml +9 -0
  652. package/android/src/main/assets/FaceAntiSpoofing.tflite +0 -0
  653. package/android/src/main/assets/spoof_model_scale_2_7.tflite +0 -0
  654. package/android/src/main/assets/spoof_model_scale_4_0.tflite +0 -0
  655. package/android/src/main/cpp/CMakeLists.txt +94 -0
  656. package/android/src/main/cpp/FaceAntiSpoofJSI.cpp +68 -0
  657. package/android/src/main/cpp/FastYuvJni.cpp +111 -0
  658. package/android/src/main/cpp/fast_yuv.cpp +332 -0
  659. package/android/src/main/cpp/fast_yuv.h +23 -0
  660. package/android/src/main/cpp/libyuv/.clang-format +6 -0
  661. package/android/src/main/cpp/libyuv/.gn +40 -0
  662. package/android/src/main/cpp/libyuv/.vpython3 +410 -0
  663. package/android/src/main/cpp/libyuv/AUTHORS +7 -0
  664. package/android/src/main/cpp/libyuv/Android.bp +202 -0
  665. package/android/src/main/cpp/libyuv/Android.mk +106 -0
  666. package/android/src/main/cpp/libyuv/BUILD.gn +490 -0
  667. package/android/src/main/cpp/libyuv/CM_linux_packages.cmake +70 -0
  668. package/android/src/main/cpp/libyuv/CMakeLists.txt +252 -0
  669. package/android/src/main/cpp/libyuv/DEPS +935 -0
  670. package/android/src/main/cpp/libyuv/DIR_METADATA +3 -0
  671. package/android/src/main/cpp/libyuv/LICENSE +29 -0
  672. package/android/src/main/cpp/libyuv/OWNERS +11 -0
  673. package/android/src/main/cpp/libyuv/PATENTS +24 -0
  674. package/android/src/main/cpp/libyuv/PRESUBMIT.py +65 -0
  675. package/android/src/main/cpp/libyuv/README.chromium +11 -0
  676. package/android/src/main/cpp/libyuv/README.md +19 -0
  677. package/android/src/main/cpp/libyuv/build_overrides/build.gni +60 -0
  678. package/android/src/main/cpp/libyuv/build_overrides/gtest.gni +19 -0
  679. package/android/src/main/cpp/libyuv/build_overrides/partition_alloc.gni +17 -0
  680. package/android/src/main/cpp/libyuv/codereview.settings +5 -0
  681. package/android/src/main/cpp/libyuv/docs/deprecated_builds.md +409 -0
  682. package/android/src/main/cpp/libyuv/docs/environment_variables.md +64 -0
  683. package/android/src/main/cpp/libyuv/docs/feature_detection.md +108 -0
  684. package/android/src/main/cpp/libyuv/docs/filtering.md +196 -0
  685. package/android/src/main/cpp/libyuv/docs/formats.md +208 -0
  686. package/android/src/main/cpp/libyuv/docs/getting_started.md +296 -0
  687. package/android/src/main/cpp/libyuv/docs/rotation.md +107 -0
  688. package/android/src/main/cpp/libyuv/download_vs_toolchain.py +29 -0
  689. package/android/src/main/cpp/libyuv/include/libyuv/basic_types.h +68 -0
  690. package/android/src/main/cpp/libyuv/include/libyuv/compare.h +111 -0
  691. package/android/src/main/cpp/libyuv/include/libyuv/compare_row.h +112 -0
  692. package/android/src/main/cpp/libyuv/include/libyuv/convert.h +1117 -0
  693. package/android/src/main/cpp/libyuv/include/libyuv/convert_argb.h +2335 -0
  694. package/android/src/main/cpp/libyuv/include/libyuv/convert_from.h +203 -0
  695. package/android/src/main/cpp/libyuv/include/libyuv/convert_from_argb.h +394 -0
  696. package/android/src/main/cpp/libyuv/include/libyuv/cpu_id.h +147 -0
  697. package/android/src/main/cpp/libyuv/include/libyuv/cpu_support.h +99 -0
  698. package/android/src/main/cpp/libyuv/include/libyuv/loongson_intrinsics.h +1949 -0
  699. package/android/src/main/cpp/libyuv/include/libyuv/mjpeg_decoder.h +195 -0
  700. package/android/src/main/cpp/libyuv/include/libyuv/planar_functions.h +1131 -0
  701. package/android/src/main/cpp/libyuv/include/libyuv/rotate.h +296 -0
  702. package/android/src/main/cpp/libyuv/include/libyuv/rotate_argb.h +37 -0
  703. package/android/src/main/cpp/libyuv/include/libyuv/rotate_row.h +265 -0
  704. package/android/src/main/cpp/libyuv/include/libyuv/row.h +6738 -0
  705. package/android/src/main/cpp/libyuv/include/libyuv/row_sve.h +2154 -0
  706. package/android/src/main/cpp/libyuv/include/libyuv/scale.h +336 -0
  707. package/android/src/main/cpp/libyuv/include/libyuv/scale_argb.h +76 -0
  708. package/android/src/main/cpp/libyuv/include/libyuv/scale_rgb.h +42 -0
  709. package/android/src/main/cpp/libyuv/include/libyuv/scale_row.h +1726 -0
  710. package/android/src/main/cpp/libyuv/include/libyuv/scale_uv.h +51 -0
  711. package/android/src/main/cpp/libyuv/include/libyuv/version.h +16 -0
  712. package/android/src/main/cpp/libyuv/include/libyuv/video_common.h +222 -0
  713. package/android/src/main/cpp/libyuv/include/libyuv.h +33 -0
  714. package/android/src/main/cpp/libyuv/infra/config/OWNERS +3 -0
  715. package/android/src/main/cpp/libyuv/infra/config/PRESUBMIT.py +17 -0
  716. package/android/src/main/cpp/libyuv/infra/config/README.md +2 -0
  717. package/android/src/main/cpp/libyuv/infra/config/codereview.settings +6 -0
  718. package/android/src/main/cpp/libyuv/infra/config/commit-queue.cfg +144 -0
  719. package/android/src/main/cpp/libyuv/infra/config/cr-buildbucket.cfg +1185 -0
  720. package/android/src/main/cpp/libyuv/infra/config/luci-logdog.cfg +9 -0
  721. package/android/src/main/cpp/libyuv/infra/config/luci-milo.cfg +246 -0
  722. package/android/src/main/cpp/libyuv/infra/config/luci-scheduler.cfg +385 -0
  723. package/android/src/main/cpp/libyuv/infra/config/main.star +402 -0
  724. package/android/src/main/cpp/libyuv/infra/config/project.cfg +16 -0
  725. package/android/src/main/cpp/libyuv/infra/config/realms.cfg +111 -0
  726. package/android/src/main/cpp/libyuv/libyuv.gni +34 -0
  727. package/android/src/main/cpp/libyuv/libyuv.gyp +149 -0
  728. package/android/src/main/cpp/libyuv/libyuv.gypi +87 -0
  729. package/android/src/main/cpp/libyuv/linux.mk +96 -0
  730. package/android/src/main/cpp/libyuv/public.mk +13 -0
  731. package/android/src/main/cpp/libyuv/pylintrc +49 -0
  732. package/android/src/main/cpp/libyuv/riscv_script/prepare_toolchain_qemu.sh +74 -0
  733. package/android/src/main/cpp/libyuv/riscv_script/riscv-clang.cmake +56 -0
  734. package/android/src/main/cpp/libyuv/riscv_script/run_qemu.sh +15 -0
  735. package/android/src/main/cpp/libyuv/source/compare.cc +435 -0
  736. package/android/src/main/cpp/libyuv/source/compare_common.cc +74 -0
  737. package/android/src/main/cpp/libyuv/source/compare_gcc.cc +362 -0
  738. package/android/src/main/cpp/libyuv/source/compare_neon.cc +96 -0
  739. package/android/src/main/cpp/libyuv/source/compare_neon64.cc +223 -0
  740. package/android/src/main/cpp/libyuv/source/compare_win.cc +241 -0
  741. package/android/src/main/cpp/libyuv/source/convert.cc +4746 -0
  742. package/android/src/main/cpp/libyuv/source/convert_argb.cc +9179 -0
  743. package/android/src/main/cpp/libyuv/source/convert_from.cc +866 -0
  744. package/android/src/main/cpp/libyuv/source/convert_from_argb.cc +3671 -0
  745. package/android/src/main/cpp/libyuv/source/convert_jpeg.cc +602 -0
  746. package/android/src/main/cpp/libyuv/source/convert_to_argb.cc +391 -0
  747. package/android/src/main/cpp/libyuv/source/convert_to_i420.cc +288 -0
  748. package/android/src/main/cpp/libyuv/source/cpu_id.cc +496 -0
  749. package/android/src/main/cpp/libyuv/source/mjpeg_decoder.cc +580 -0
  750. package/android/src/main/cpp/libyuv/source/mjpeg_validate.cc +71 -0
  751. package/android/src/main/cpp/libyuv/source/planar_functions.cc +5663 -0
  752. package/android/src/main/cpp/libyuv/source/rotate.cc +1241 -0
  753. package/android/src/main/cpp/libyuv/source/rotate_any.cc +76 -0
  754. package/android/src/main/cpp/libyuv/source/rotate_argb.cc +259 -0
  755. package/android/src/main/cpp/libyuv/source/rotate_common.cc +208 -0
  756. package/android/src/main/cpp/libyuv/source/rotate_gcc.cc +505 -0
  757. package/android/src/main/cpp/libyuv/source/rotate_lsx.cc +233 -0
  758. package/android/src/main/cpp/libyuv/source/rotate_neon.cc +219 -0
  759. package/android/src/main/cpp/libyuv/source/rotate_neon64.cc +273 -0
  760. package/android/src/main/cpp/libyuv/source/rotate_sme.cc +174 -0
  761. package/android/src/main/cpp/libyuv/source/rotate_win.cc +253 -0
  762. package/android/src/main/cpp/libyuv/source/row_any.cc +2519 -0
  763. package/android/src/main/cpp/libyuv/source/row_common.cc +4461 -0
  764. package/android/src/main/cpp/libyuv/source/row_gcc.cc +9570 -0
  765. package/android/src/main/cpp/libyuv/source/row_lasx.cc +2343 -0
  766. package/android/src/main/cpp/libyuv/source/row_lsx.cc +3030 -0
  767. package/android/src/main/cpp/libyuv/source/row_neon.cc +4026 -0
  768. package/android/src/main/cpp/libyuv/source/row_neon64.cc +5617 -0
  769. package/android/src/main/cpp/libyuv/source/row_rvv.cc +2599 -0
  770. package/android/src/main/cpp/libyuv/source/row_sme.cc +1183 -0
  771. package/android/src/main/cpp/libyuv/source/row_sve.cc +1088 -0
  772. package/android/src/main/cpp/libyuv/source/row_win.cc +6453 -0
  773. package/android/src/main/cpp/libyuv/source/scale.cc +2710 -0
  774. package/android/src/main/cpp/libyuv/source/scale_any.cc +991 -0
  775. package/android/src/main/cpp/libyuv/source/scale_argb.cc +1158 -0
  776. package/android/src/main/cpp/libyuv/source/scale_common.cc +1977 -0
  777. package/android/src/main/cpp/libyuv/source/scale_gcc.cc +2947 -0
  778. package/android/src/main/cpp/libyuv/source/scale_lsx.cc +739 -0
  779. package/android/src/main/cpp/libyuv/source/scale_neon.cc +1449 -0
  780. package/android/src/main/cpp/libyuv/source/scale_neon64.cc +1552 -0
  781. package/android/src/main/cpp/libyuv/source/scale_rgb.cc +82 -0
  782. package/android/src/main/cpp/libyuv/source/scale_rvv.cc +1971 -0
  783. package/android/src/main/cpp/libyuv/source/scale_sme.cc +555 -0
  784. package/android/src/main/cpp/libyuv/source/scale_uv.cc +1159 -0
  785. package/android/src/main/cpp/libyuv/source/scale_win.cc +1392 -0
  786. package/android/src/main/cpp/libyuv/source/test.sh +35 -0
  787. package/android/src/main/cpp/libyuv/source/video_common.cc +62 -0
  788. package/android/src/main/cpp/libyuv/tools_libyuv/OWNERS +4 -0
  789. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/roll_deps.py +931 -0
  790. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/roll_deps_test.py +164 -0
  791. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS +21 -0
  792. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.new +13 -0
  793. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old +13 -0
  794. package/android/src/main/cpp/libyuv/tools_libyuv/get_landmines.py +38 -0
  795. package/android/src/main/cpp/libyuv/tools_libyuv/msan/OWNERS +3 -0
  796. package/android/src/main/cpp/libyuv/tools_libyuv/msan/blacklist.txt +9 -0
  797. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/OWNERS +3 -0
  798. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/blacklist.txt +15 -0
  799. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/vptr_blacklist.txt +25 -0
  800. package/android/src/main/cpp/libyuv/unit_test/basictypes_test.cc +43 -0
  801. package/android/src/main/cpp/libyuv/unit_test/color_test.cc +848 -0
  802. package/android/src/main/cpp/libyuv/unit_test/compare_test.cc +739 -0
  803. package/android/src/main/cpp/libyuv/unit_test/convert_argb_test.cc +2867 -0
  804. package/android/src/main/cpp/libyuv/unit_test/convert_test.cc +2133 -0
  805. package/android/src/main/cpp/libyuv/unit_test/cpu_test.cc +427 -0
  806. package/android/src/main/cpp/libyuv/unit_test/cpu_thread_test.cc +63 -0
  807. package/android/src/main/cpp/libyuv/unit_test/math_test.cc +160 -0
  808. package/android/src/main/cpp/libyuv/unit_test/planar_test.cc +4731 -0
  809. package/android/src/main/cpp/libyuv/unit_test/rotate_argb_test.cc +334 -0
  810. package/android/src/main/cpp/libyuv/unit_test/rotate_test.cc +962 -0
  811. package/android/src/main/cpp/libyuv/unit_test/scale_argb_test.cc +590 -0
  812. package/android/src/main/cpp/libyuv/unit_test/scale_plane_test.cc +465 -0
  813. package/android/src/main/cpp/libyuv/unit_test/scale_rgb_test.cc +280 -0
  814. package/android/src/main/cpp/libyuv/unit_test/scale_test.cc +1135 -0
  815. package/android/src/main/cpp/libyuv/unit_test/scale_uv_test.cc +249 -0
  816. package/android/src/main/cpp/libyuv/unit_test/testdata/arm_v7.txt +12 -0
  817. package/android/src/main/cpp/libyuv/unit_test/testdata/mips.txt +7 -0
  818. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson2k.txt +5 -0
  819. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson3.txt +10 -0
  820. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson_mmi.txt +7 -0
  821. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64.txt +4 -0
  822. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv.txt +4 -0
  823. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv_zvfh.txt +4 -0
  824. package/android/src/main/cpp/libyuv/unit_test/testdata/tegra3.txt +23 -0
  825. package/android/src/main/cpp/libyuv/unit_test/testdata/test0.jpg +0 -0
  826. package/android/src/main/cpp/libyuv/unit_test/testdata/test1.jpg +0 -0
  827. package/android/src/main/cpp/libyuv/unit_test/testdata/test2.jpg +0 -0
  828. package/android/src/main/cpp/libyuv/unit_test/testdata/test3.jpg +0 -0
  829. package/android/src/main/cpp/libyuv/unit_test/testdata/test4.jpg +0 -0
  830. package/android/src/main/cpp/libyuv/unit_test/unit_test.cc +581 -0
  831. package/android/src/main/cpp/libyuv/unit_test/unit_test.h +232 -0
  832. package/android/src/main/cpp/libyuv/unit_test/video_common_test.cc +112 -0
  833. package/android/src/main/cpp/libyuv/util/Makefile +9 -0
  834. package/android/src/main/cpp/libyuv/util/color.cc +120 -0
  835. package/android/src/main/cpp/libyuv/util/compare.cc +67 -0
  836. package/android/src/main/cpp/libyuv/util/cpuid.c +211 -0
  837. package/android/src/main/cpp/libyuv/util/i444tonv12_eg.cc +28 -0
  838. package/android/src/main/cpp/libyuv/util/psnr.cc +291 -0
  839. package/android/src/main/cpp/libyuv/util/psnr.h +47 -0
  840. package/android/src/main/cpp/libyuv/util/psnr_main.cc +620 -0
  841. package/android/src/main/cpp/libyuv/util/ssim.cc +364 -0
  842. package/android/src/main/cpp/libyuv/util/ssim.h +38 -0
  843. package/android/src/main/cpp/libyuv/util/yuvconstants.c +114 -0
  844. package/android/src/main/cpp/libyuv/util/yuvconvert.cc +367 -0
  845. package/android/src/main/cpp/libyuv/winarm.mk +47 -0
  846. package/android/src/main/java/com/faceantispoof/AcceleratorConfig.kt +49 -0
  847. package/android/src/main/java/com/faceantispoof/FaceAntiSpoofFrameProcessor.kt +145 -0
  848. package/android/src/main/java/com/faceantispoof/FaceAntiSpoofModule.kt +170 -0
  849. package/android/src/main/java/com/faceantispoof/FaceAntiSpoofPackage.kt +38 -0
  850. package/android/src/main/java/com/faceantispoof/FaceAntiSpoofingAdvanced.kt +288 -0
  851. package/android/src/main/java/com/faceantispoof/FastYuv.kt +51 -0
  852. package/android/src/main/java/com/faceantispoof/YuvToFloatArrayConverter.kt +198 -0
  853. package/android/src/main/java/com/faceantispoof/YuvToRgbConverter.kt +73 -0
  854. package/android/src/main/res/values/strings.xml +3 -0
  855. package/index.d.ts +84 -0
  856. package/index.js +47 -0
  857. package/package.json +73 -0
@@ -0,0 +1,1971 @@
1
+ /*
2
+ * Copyright 2023 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
+ /*
12
+ * Copyright (c) 2023 SiFive, Inc. All rights reserved.
13
+ *
14
+ * Contributed by Darren Hsieh <darren.hsieh@sifive.com>
15
+ * Contributed by Bruce Lai <bruce.lai@sifive.com>
16
+ */
17
+
18
+ #include "libyuv/row.h"
19
+ #include "libyuv/scale_row.h"
20
+
21
+ // This module is for clang rvv. GCC hasn't supported segment load & store.
22
+ #if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
23
+ defined(__clang__)
24
+ #include <assert.h>
25
+ #include <riscv_vector.h>
26
+ #ifdef __cplusplus
27
+ namespace libyuv {
28
+ extern "C" {
29
+ #endif
30
+
31
+ #ifdef HAS_SCALEARGBFILTERCOLS_RVV
32
+ void ScaleARGBFilterCols_RVV(uint8_t* dst_argb,
33
+ const uint8_t* src_argb,
34
+ int dst_width,
35
+ int x,
36
+ int dx) {
37
+ assert(x >= 0);
38
+
39
+ size_t vl = __riscv_vsetvl_e32m4(dst_width);
40
+ vuint32m4_t vx = __riscv_vmv_v_x_u32m4(x, vl);
41
+ vx = __riscv_vmacc_vx_u32m4(vx, dx, __riscv_vid_v_u32m4(vl), vl);
42
+ do {
43
+ vuint32m4_t v0_argb, v1_argb;
44
+ vuint32m4_t v_xf0_u32, v_xf1_u32;
45
+ vuint8m4_t v0_argb_u8, v1_argb_u8, v_xf0_u8, v_xf1_u8;
46
+ vuint16m8_t _v0_argb_u16, v_row_u16;
47
+ // idx is x >> 16
48
+ vuint32m4_t v_xi_bindex = __riscv_vsrl_vx_u32m4(vx, 14, vl);
49
+ v_xi_bindex = __riscv_vand_vx_u32m4(v_xi_bindex, ~3u, vl);
50
+ // Read Packed ARGB w/ byte index.
51
+ __riscv_vluxseg2ei32_v_u32m4(&v0_argb, &v1_argb, (const uint32_t*)src_argb,
52
+ v_xi_bindex, vl);
53
+ // xf = (x >> 9) & 0x7f;
54
+ v_xf0_u32 = __riscv_vsrl_vx_u32m4(vx, 9, vl);
55
+ v_xf0_u32 = __riscv_vand_vx_u32m4(v_xf0_u32, 0x7f, vl);
56
+ vx = __riscv_vadd_vx_u32m4(vx, vl * dx, vl);
57
+ // duplicate v_xf0_u32[i] from {0,0,0,f[i]} to {f[i],f[i],f[i],f[i]}
58
+ v_xf0_u32 = __riscv_vmul_vx_u32m4(v_xf0_u32, 0x01010101, vl);
59
+ // TODO(fbarchard): Replace 0x7f ^ f with 128-f. bug=607.
60
+ v_xf1_u32 = __riscv_vxor_vx_u32m4(v_xf0_u32, 0x7f7f7f7f, vl);
61
+
62
+ v0_argb_u8 = __riscv_vreinterpret_v_u32m4_u8m4(v0_argb);
63
+ v1_argb_u8 = __riscv_vreinterpret_v_u32m4_u8m4(v1_argb);
64
+ v_xf0_u8 = __riscv_vreinterpret_v_u32m4_u8m4(v_xf0_u32);
65
+ v_xf1_u8 = __riscv_vreinterpret_v_u32m4_u8m4(v_xf1_u32);
66
+ // ((a) * (0x7f ^ f) + (b)*f) >> 7
67
+ _v0_argb_u16 = __riscv_vwmulu_vv_u16m8(v0_argb_u8, v_xf1_u8, 4 * vl);
68
+ v_row_u16 =
69
+ __riscv_vwmaccu_vv_u16m8(_v0_argb_u16, v1_argb_u8, v_xf0_u8, 4 * vl);
70
+
71
+ __riscv_vse8_v_u8m4(dst_argb, __riscv_vnsrl_wx_u8m4(v_row_u16, 7, 4 * vl),
72
+ 4 * vl);
73
+ dst_width -= vl;
74
+ dst_argb += 4 * vl;
75
+ vl = __riscv_vsetvl_e32m4(dst_width);
76
+ } while (dst_width > 0);
77
+ }
78
+ #endif
79
+
80
+ #ifdef HAS_SCALEADDROW_RVV
81
+ void ScaleAddRow_RVV(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width) {
82
+ size_t w = (size_t)src_width;
83
+ do {
84
+ size_t vl = __riscv_vsetvl_e8m4(w);
85
+ vuint8m4_t v_src = __riscv_vle8_v_u8m4(src_ptr, vl);
86
+ vuint16m8_t v_dst = __riscv_vle16_v_u16m8(dst_ptr, vl);
87
+ // Use widening multiply-add instead of widening + add
88
+ v_dst = __riscv_vwmaccu_vx_u16m8(v_dst, 1, v_src, vl);
89
+ __riscv_vse16_v_u16m8(dst_ptr, v_dst, vl);
90
+ w -= vl;
91
+ src_ptr += vl;
92
+ dst_ptr += vl;
93
+ } while (w > 0);
94
+ }
95
+ #endif
96
+
97
+ #ifdef HAS_SCALEARGBROWDOWN2_RVV
98
+ // TODO: Reimplement similar to linear with vlseg2 so u64 is not required
99
+ void ScaleARGBRowDown2_RVV(const uint8_t* src_argb,
100
+ ptrdiff_t src_stride,
101
+ uint8_t* dst_argb,
102
+ int dst_width) {
103
+ (void)src_stride;
104
+ size_t w = (size_t)dst_width;
105
+ const uint64_t* src = (const uint64_t*)(src_argb);
106
+ uint32_t* dst = (uint32_t*)(dst_argb);
107
+ do {
108
+ size_t vl = __riscv_vsetvl_e64m8(w);
109
+ vuint64m8_t v_data = __riscv_vle64_v_u64m8(src, vl);
110
+ vuint32m4_t v_dst = __riscv_vnsrl_wx_u32m4(v_data, 32, vl);
111
+ __riscv_vse32_v_u32m4(dst, v_dst, vl);
112
+ w -= vl;
113
+ src += vl;
114
+ dst += vl;
115
+ } while (w > 0);
116
+ }
117
+ #endif
118
+
119
+ #ifdef HAS_SCALEARGBROWDOWN2LINEAR_RVV
120
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
121
+ void ScaleARGBRowDown2Linear_RVV(const uint8_t* src_argb,
122
+ ptrdiff_t src_stride,
123
+ uint8_t* dst_argb,
124
+ int dst_width) {
125
+ (void)src_stride;
126
+ size_t w = (size_t)dst_width;
127
+ const uint32_t* src = (const uint32_t*)(src_argb);
128
+ do {
129
+ size_t vl = __riscv_vsetvl_e32m4(w);
130
+ vuint32m4x2_t v_src = __riscv_vlseg2e32_v_u32m4x2(src, vl);
131
+ vuint32m4_t v_even_32 = __riscv_vget_v_u32m4x2_u32m4(v_src, 0);
132
+ vuint32m4_t v_odd_32 = __riscv_vget_v_u32m4x2_u32m4(v_src, 1);
133
+ vuint8m4_t v_even = __riscv_vreinterpret_v_u32m4_u8m4(v_even_32);
134
+ vuint8m4_t v_odd = __riscv_vreinterpret_v_u32m4_u8m4(v_odd_32);
135
+ vuint8m4_t v_dst =
136
+ __riscv_vaaddu_vv_u8m4(v_even, v_odd, __RISCV_VXRM_RNU, vl * 4);
137
+ __riscv_vse8_v_u8m4(dst_argb, v_dst, vl * 4);
138
+ w -= vl;
139
+ src += vl * 2;
140
+ dst_argb += vl * 4;
141
+ } while (w > 0);
142
+ }
143
+ #else
144
+ void ScaleARGBRowDown2Linear_RVV(const uint8_t* src_argb,
145
+ ptrdiff_t src_stride,
146
+ uint8_t* dst_argb,
147
+ int dst_width) {
148
+ (void)src_stride;
149
+ size_t w = (size_t)dst_width;
150
+ const uint32_t* src = (const uint32_t*)(src_argb);
151
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
152
+ // register) is set to round-to-nearest-up mode(0).
153
+ asm volatile("csrwi vxrm, 0");
154
+ do {
155
+ vuint8m4_t v_odd, v_even, v_dst;
156
+ vuint32m4_t v_odd_32, v_even_32;
157
+ size_t vl = __riscv_vsetvl_e32m4(w);
158
+ __riscv_vlseg2e32_v_u32m4(&v_even_32, &v_odd_32, src, vl);
159
+ v_even = __riscv_vreinterpret_v_u32m4_u8m4(v_even_32);
160
+ v_odd = __riscv_vreinterpret_v_u32m4_u8m4(v_odd_32);
161
+ // Use round-to-nearest-up mode for averaging add
162
+ v_dst = __riscv_vaaddu_vv_u8m4(v_even, v_odd, vl * 4);
163
+ __riscv_vse8_v_u8m4(dst_argb, v_dst, vl * 4);
164
+ w -= vl;
165
+ src += vl * 2;
166
+ dst_argb += vl * 4;
167
+ } while (w > 0);
168
+ }
169
+ #endif
170
+ #endif
171
+
172
+ #ifdef HAS_SCALEARGBROWDOWN2BOX_RVV
173
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
174
+ void ScaleARGBRowDown2Box_RVV(const uint8_t* src_argb,
175
+ ptrdiff_t src_stride,
176
+ uint8_t* dst_argb,
177
+ int dst_width) {
178
+ size_t w = (size_t)dst_width;
179
+ const uint32_t* src0 = (const uint32_t*)(src_argb);
180
+ const uint32_t* src1 = (const uint32_t*)(src_argb + src_stride);
181
+ do {
182
+ size_t vl = __riscv_vsetvl_e32m4(w);
183
+ vuint32m4x2_t v_src0 = __riscv_vlseg2e32_v_u32m4x2(src0, vl);
184
+ vuint32m4x2_t v_src1 = __riscv_vlseg2e32_v_u32m4x2(src1, vl);
185
+ vuint32m4_t v_row0_even_32 = __riscv_vget_v_u32m4x2_u32m4(v_src0, 0);
186
+ vuint32m4_t v_row0_odd_32 = __riscv_vget_v_u32m4x2_u32m4(v_src0, 1);
187
+ vuint32m4_t v_row1_even_32 = __riscv_vget_v_u32m4x2_u32m4(v_src1, 0);
188
+ vuint32m4_t v_row1_odd_32 = __riscv_vget_v_u32m4x2_u32m4(v_src1, 1);
189
+ vuint8m4_t v_row0_even = __riscv_vreinterpret_v_u32m4_u8m4(v_row0_even_32);
190
+ vuint8m4_t v_row0_odd = __riscv_vreinterpret_v_u32m4_u8m4(v_row0_odd_32);
191
+ vuint8m4_t v_row1_even = __riscv_vreinterpret_v_u32m4_u8m4(v_row1_even_32);
192
+ vuint8m4_t v_row1_odd = __riscv_vreinterpret_v_u32m4_u8m4(v_row1_odd_32);
193
+ vuint16m8_t v_row0_sum =
194
+ __riscv_vwaddu_vv_u16m8(v_row0_even, v_row0_odd, vl * 4);
195
+ vuint16m8_t v_row1_sum =
196
+ __riscv_vwaddu_vv_u16m8(v_row1_even, v_row1_odd, vl * 4);
197
+ vuint16m8_t v_dst_16 =
198
+ __riscv_vadd_vv_u16m8(v_row0_sum, v_row1_sum, vl * 4);
199
+ vuint8m4_t v_dst =
200
+ __riscv_vnclipu_wx_u8m4(v_dst_16, 2, __RISCV_VXRM_RNU, vl * 4);
201
+ __riscv_vse8_v_u8m4(dst_argb, v_dst, vl * 4);
202
+ w -= vl;
203
+ src0 += vl * 2;
204
+ src1 += vl * 2;
205
+ dst_argb += vl * 4;
206
+ } while (w > 0);
207
+ }
208
+ #else
209
+ void ScaleARGBRowDown2Box_RVV(const uint8_t* src_argb,
210
+ ptrdiff_t src_stride,
211
+ uint8_t* dst_argb,
212
+ int dst_width) {
213
+ size_t w = (size_t)dst_width;
214
+ const uint32_t* src0 = (const uint32_t*)(src_argb);
215
+ const uint32_t* src1 = (const uint32_t*)(src_argb + src_stride);
216
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
217
+ // register) is set to round-to-nearest-up mode(0).
218
+ asm volatile("csrwi vxrm, 0");
219
+ do {
220
+ vuint8m4_t v_row0_odd, v_row0_even, v_row1_odd, v_row1_even, v_dst;
221
+ vuint16m8_t v_row0_sum, v_row1_sum, v_dst_16;
222
+ vuint32m4_t v_row0_odd_32, v_row0_even_32, v_row1_odd_32, v_row1_even_32;
223
+ size_t vl = __riscv_vsetvl_e32m4(w);
224
+ __riscv_vlseg2e32_v_u32m4(&v_row0_even_32, &v_row0_odd_32, src0, vl);
225
+ __riscv_vlseg2e32_v_u32m4(&v_row1_even_32, &v_row1_odd_32, src1, vl);
226
+ v_row0_even = __riscv_vreinterpret_v_u32m4_u8m4(v_row0_even_32);
227
+ v_row0_odd = __riscv_vreinterpret_v_u32m4_u8m4(v_row0_odd_32);
228
+ v_row1_even = __riscv_vreinterpret_v_u32m4_u8m4(v_row1_even_32);
229
+ v_row1_odd = __riscv_vreinterpret_v_u32m4_u8m4(v_row1_odd_32);
230
+ v_row0_sum = __riscv_vwaddu_vv_u16m8(v_row0_even, v_row0_odd, vl * 4);
231
+ v_row1_sum = __riscv_vwaddu_vv_u16m8(v_row1_even, v_row1_odd, vl * 4);
232
+ v_dst_16 = __riscv_vadd_vv_u16m8(v_row0_sum, v_row1_sum, vl * 4);
233
+ // Use round-to-nearest-up mode for vnclip
234
+ v_dst = __riscv_vnclipu_wx_u8m4(v_dst_16, 2, vl * 4);
235
+ __riscv_vse8_v_u8m4(dst_argb, v_dst, vl * 4);
236
+ w -= vl;
237
+ src0 += vl * 2;
238
+ src1 += vl * 2;
239
+ dst_argb += vl * 4;
240
+ } while (w > 0);
241
+ }
242
+ #endif
243
+ #endif
244
+
245
+ #ifdef HAS_SCALEARGBROWDOWNEVEN_RVV
246
+ void ScaleARGBRowDownEven_RVV(const uint8_t* src_argb,
247
+ ptrdiff_t src_stride,
248
+ int src_stepx,
249
+ uint8_t* dst_argb,
250
+ int dst_width) {
251
+ size_t w = (size_t)dst_width;
252
+ const uint32_t* src = (const uint32_t*)(src_argb);
253
+ uint32_t* dst = (uint32_t*)(dst_argb);
254
+ const int stride_byte = src_stepx * 4;
255
+ do {
256
+ size_t vl = __riscv_vsetvl_e32m8(w);
257
+ vuint32m8_t v_row = __riscv_vlse32_v_u32m8(src, stride_byte, vl);
258
+ __riscv_vse32_v_u32m8(dst, v_row, vl);
259
+ w -= vl;
260
+ src += vl * src_stepx;
261
+ dst += vl;
262
+ } while (w > 0);
263
+ }
264
+ #endif
265
+
266
+ #ifdef HAS_SCALEARGBROWDOWNEVENBOX_RVV
267
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
268
+ void ScaleARGBRowDownEvenBox_RVV(const uint8_t* src_argb,
269
+ ptrdiff_t src_stride,
270
+ int src_stepx,
271
+ uint8_t* dst_argb,
272
+ int dst_width) {
273
+ size_t w = (size_t)dst_width;
274
+ const uint32_t* src0 = (const uint32_t*)(src_argb);
275
+ const uint32_t* src1 = (const uint32_t*)(src_argb + src_stride);
276
+ const int stride_byte = src_stepx * 4;
277
+ do {
278
+ size_t vl = __riscv_vsetvl_e32m4(w);
279
+ vuint32m4x2_t v_src0 = __riscv_vlsseg2e32_v_u32m4x2(src0, stride_byte, vl);
280
+ vuint32m4x2_t v_src1 = __riscv_vlsseg2e32_v_u32m4x2(src1, stride_byte, vl);
281
+ vuint32m4_t v_row0_low_32 = __riscv_vget_v_u32m4x2_u32m4(v_src0, 0);
282
+ vuint32m4_t v_row0_high_32 = __riscv_vget_v_u32m4x2_u32m4(v_src0, 1);
283
+ vuint32m4_t v_row1_low_32 = __riscv_vget_v_u32m4x2_u32m4(v_src1, 0);
284
+ vuint32m4_t v_row1_high_32 = __riscv_vget_v_u32m4x2_u32m4(v_src1, 1);
285
+ vuint8m4_t v_row0_low = __riscv_vreinterpret_v_u32m4_u8m4(v_row0_low_32);
286
+ vuint8m4_t v_row0_high = __riscv_vreinterpret_v_u32m4_u8m4(v_row0_high_32);
287
+ vuint8m4_t v_row1_low = __riscv_vreinterpret_v_u32m4_u8m4(v_row1_low_32);
288
+ vuint8m4_t v_row1_high = __riscv_vreinterpret_v_u32m4_u8m4(v_row1_high_32);
289
+ vuint16m8_t v_row0_sum =
290
+ __riscv_vwaddu_vv_u16m8(v_row0_low, v_row0_high, vl * 4);
291
+ vuint16m8_t v_row1_sum =
292
+ __riscv_vwaddu_vv_u16m8(v_row1_low, v_row1_high, vl * 4);
293
+ vuint16m8_t v_sum = __riscv_vadd_vv_u16m8(v_row0_sum, v_row1_sum, vl * 4);
294
+ vuint8m4_t v_dst =
295
+ __riscv_vnclipu_wx_u8m4(v_sum, 2, __RISCV_VXRM_RNU, vl * 4);
296
+ __riscv_vse8_v_u8m4(dst_argb, v_dst, vl * 4);
297
+ w -= vl;
298
+ src0 += vl * src_stepx;
299
+ src1 += vl * src_stepx;
300
+ dst_argb += vl * 4;
301
+ } while (w > 0);
302
+ }
303
+ #else
304
+ void ScaleARGBRowDownEvenBox_RVV(const uint8_t* src_argb,
305
+ ptrdiff_t src_stride,
306
+ int src_stepx,
307
+ uint8_t* dst_argb,
308
+ int dst_width) {
309
+ size_t w = (size_t)dst_width;
310
+ const uint32_t* src0 = (const uint32_t*)(src_argb);
311
+ const uint32_t* src1 = (const uint32_t*)(src_argb + src_stride);
312
+ const int stride_byte = src_stepx * 4;
313
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
314
+ // register) is set to round-to-nearest-up mode(0).
315
+ asm volatile("csrwi vxrm, 0");
316
+ do {
317
+ vuint8m4_t v_row0_low, v_row0_high, v_row1_low, v_row1_high, v_dst;
318
+ vuint16m8_t v_row0_sum, v_row1_sum, v_sum;
319
+ vuint32m4_t v_row0_low_32, v_row0_high_32, v_row1_low_32, v_row1_high_32;
320
+ size_t vl = __riscv_vsetvl_e32m4(w);
321
+ __riscv_vlsseg2e32_v_u32m4(&v_row0_low_32, &v_row0_high_32, src0,
322
+ stride_byte, vl);
323
+ __riscv_vlsseg2e32_v_u32m4(&v_row1_low_32, &v_row1_high_32, src1,
324
+ stride_byte, vl);
325
+ v_row0_low = __riscv_vreinterpret_v_u32m4_u8m4(v_row0_low_32);
326
+ v_row0_high = __riscv_vreinterpret_v_u32m4_u8m4(v_row0_high_32);
327
+ v_row1_low = __riscv_vreinterpret_v_u32m4_u8m4(v_row1_low_32);
328
+ v_row1_high = __riscv_vreinterpret_v_u32m4_u8m4(v_row1_high_32);
329
+ v_row0_sum = __riscv_vwaddu_vv_u16m8(v_row0_low, v_row0_high, vl * 4);
330
+ v_row1_sum = __riscv_vwaddu_vv_u16m8(v_row1_low, v_row1_high, vl * 4);
331
+ v_sum = __riscv_vadd_vv_u16m8(v_row0_sum, v_row1_sum, vl * 4);
332
+ // Use round-to-nearest-up mode for vnclip
333
+ v_dst = __riscv_vnclipu_wx_u8m4(v_sum, 2, vl * 4);
334
+ __riscv_vse8_v_u8m4(dst_argb, v_dst, vl * 4);
335
+ w -= vl;
336
+ src0 += vl * src_stepx;
337
+ src1 += vl * src_stepx;
338
+ dst_argb += vl * 4;
339
+ } while (w > 0);
340
+ }
341
+ #endif
342
+ #endif
343
+
344
+ #ifdef HAS_SCALEROWDOWN2_RVV
345
+ void ScaleRowDown2_RVV(const uint8_t* src_ptr,
346
+ ptrdiff_t src_stride,
347
+ uint8_t* dst,
348
+ int dst_width) {
349
+ size_t w = (size_t)dst_width;
350
+ const uint16_t* src = (const uint16_t*)src_ptr;
351
+ (void)src_stride;
352
+ do {
353
+ size_t vl = __riscv_vsetvl_e16m8(w);
354
+ vuint16m8_t v_src = __riscv_vle16_v_u16m8(src, vl);
355
+ vuint8m4_t v_dst = __riscv_vnsrl_wx_u8m4(v_src, 8, vl);
356
+ __riscv_vse8_v_u8m4(dst, v_dst, vl);
357
+ w -= vl;
358
+ src += vl;
359
+ dst += vl;
360
+ } while (w > 0);
361
+ }
362
+ #endif
363
+
364
+ #ifdef HAS_SCALEROWDOWN2LINEAR_RVV
365
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
366
+ void ScaleRowDown2Linear_RVV(const uint8_t* src_ptr,
367
+ ptrdiff_t src_stride,
368
+ uint8_t* dst,
369
+ int dst_width) {
370
+ size_t w = (size_t)dst_width;
371
+ (void)src_stride;
372
+ do {
373
+ size_t vl = __riscv_vsetvl_e8m4(w);
374
+ vuint8m4x2_t v_src = __riscv_vlseg2e8_v_u8m4x2(src_ptr, vl);
375
+ vuint8m4_t v_s0 = __riscv_vget_v_u8m4x2_u8m4(v_src, 0);
376
+ vuint8m4_t v_s1 = __riscv_vget_v_u8m4x2_u8m4(v_src, 1);
377
+ vuint8m4_t v_dst = __riscv_vaaddu_vv_u8m4(v_s0, v_s1, __RISCV_VXRM_RNU, vl);
378
+ __riscv_vse8_v_u8m4(dst, v_dst, vl);
379
+ w -= vl;
380
+ src_ptr += 2 * vl;
381
+ dst += vl;
382
+ } while (w > 0);
383
+ }
384
+ #else
385
+ void ScaleRowDown2Linear_RVV(const uint8_t* src_ptr,
386
+ ptrdiff_t src_stride,
387
+ uint8_t* dst,
388
+ int dst_width) {
389
+ size_t w = (size_t)dst_width;
390
+ (void)src_stride;
391
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
392
+ // register) is set to round-to-nearest-up mode(0).
393
+ asm volatile("csrwi vxrm, 0");
394
+ do {
395
+ vuint8m4_t v_s0, v_s1, v_dst;
396
+ size_t vl = __riscv_vsetvl_e8m4(w);
397
+ __riscv_vlseg2e8_v_u8m4(&v_s0, &v_s1, src_ptr, vl);
398
+ // Use round-to-nearest-up mode for averaging add
399
+ v_dst = __riscv_vaaddu_vv_u8m4(v_s0, v_s1, vl);
400
+ __riscv_vse8_v_u8m4(dst, v_dst, vl);
401
+ w -= vl;
402
+ src_ptr += 2 * vl;
403
+ dst += vl;
404
+ } while (w > 0);
405
+ }
406
+ #endif
407
+ #endif
408
+
409
+ #ifdef HAS_SCALEROWDOWN2BOX_RVV
410
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
411
+ void ScaleRowDown2Box_RVV(const uint8_t* src_ptr,
412
+ ptrdiff_t src_stride,
413
+ uint8_t* dst,
414
+ int dst_width) {
415
+ const uint8_t* s = src_ptr;
416
+ const uint8_t* t = src_ptr + src_stride;
417
+ size_t w = (size_t)dst_width;
418
+ do {
419
+ size_t vl = __riscv_vsetvl_e8m4(w);
420
+ vuint8m4x2_t v_s = __riscv_vlseg2e8_v_u8m4x2(s, vl);
421
+ vuint8m4x2_t v_t = __riscv_vlseg2e8_v_u8m4x2(t, vl);
422
+ vuint8m4_t v_s0 = __riscv_vget_v_u8m4x2_u8m4(v_s, 0);
423
+ vuint8m4_t v_s1 = __riscv_vget_v_u8m4x2_u8m4(v_s, 1);
424
+ vuint8m4_t v_t0 = __riscv_vget_v_u8m4x2_u8m4(v_t, 0);
425
+ vuint8m4_t v_t1 = __riscv_vget_v_u8m4x2_u8m4(v_t, 1);
426
+ vuint16m8_t v_s01 = __riscv_vwaddu_vv_u16m8(v_s0, v_s1, vl);
427
+ vuint16m8_t v_t01 = __riscv_vwaddu_vv_u16m8(v_t0, v_t1, vl);
428
+ vuint16m8_t v_st01 = __riscv_vadd_vv_u16m8(v_s01, v_t01, vl);
429
+ // Use round-to-nearest-up mode for vnclip
430
+ vuint8m4_t v_dst = __riscv_vnclipu_wx_u8m4(v_st01, 2, __RISCV_VXRM_RNU, vl);
431
+ __riscv_vse8_v_u8m4(dst, v_dst, vl);
432
+ w -= vl;
433
+ s += 2 * vl;
434
+ t += 2 * vl;
435
+ dst += vl;
436
+ } while (w > 0);
437
+ }
438
+ #else
439
+ void ScaleRowDown2Box_RVV(const uint8_t* src_ptr,
440
+ ptrdiff_t src_stride,
441
+ uint8_t* dst,
442
+ int dst_width) {
443
+ const uint8_t* s = src_ptr;
444
+ const uint8_t* t = src_ptr + src_stride;
445
+ size_t w = (size_t)dst_width;
446
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
447
+ // register) is set to round-to-nearest-up mode(0).
448
+ asm volatile("csrwi vxrm, 0");
449
+ do {
450
+ size_t vl = __riscv_vsetvl_e8m4(w);
451
+ vuint8m4_t v_s0, v_s1, v_t0, v_t1;
452
+ vuint16m8_t v_s01, v_t01, v_st01;
453
+ vuint8m4_t v_dst;
454
+ __riscv_vlseg2e8_v_u8m4(&v_s0, &v_s1, s, vl);
455
+ __riscv_vlseg2e8_v_u8m4(&v_t0, &v_t1, t, vl);
456
+ v_s01 = __riscv_vwaddu_vv_u16m8(v_s0, v_s1, vl);
457
+ v_t01 = __riscv_vwaddu_vv_u16m8(v_t0, v_t1, vl);
458
+ v_st01 = __riscv_vadd_vv_u16m8(v_s01, v_t01, vl);
459
+ // Use round-to-nearest-up mode for vnclip
460
+ v_dst = __riscv_vnclipu_wx_u8m4(v_st01, 2, vl);
461
+ __riscv_vse8_v_u8m4(dst, v_dst, vl);
462
+ w -= vl;
463
+ s += 2 * vl;
464
+ t += 2 * vl;
465
+ dst += vl;
466
+ } while (w > 0);
467
+ }
468
+ #endif
469
+ #endif
470
+
471
+ #ifdef HAS_SCALEROWDOWN4_RVV
472
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
473
+ void ScaleRowDown4_RVV(const uint8_t* src_ptr,
474
+ ptrdiff_t src_stride,
475
+ uint8_t* dst_ptr,
476
+ int dst_width) {
477
+ size_t w = (size_t)dst_width;
478
+ (void)src_stride;
479
+ do {
480
+ size_t vl = __riscv_vsetvl_e8m2(w);
481
+ vuint8m2x4_t v_s = __riscv_vlseg4e8_v_u8m2x4(src_ptr, vl);
482
+ vuint8m2_t v_s2 = __riscv_vget_v_u8m2x4_u8m2(v_s, 2);
483
+ __riscv_vse8_v_u8m2(dst_ptr, v_s2, vl);
484
+ w -= vl;
485
+ src_ptr += (4 * vl);
486
+ dst_ptr += vl;
487
+ } while (w > 0);
488
+ }
489
+ #else
490
+ void ScaleRowDown4_RVV(const uint8_t* src_ptr,
491
+ ptrdiff_t src_stride,
492
+ uint8_t* dst_ptr,
493
+ int dst_width) {
494
+ size_t w = (size_t)dst_width;
495
+ (void)src_stride;
496
+ do {
497
+ size_t vl = __riscv_vsetvl_e8m2(w);
498
+ vuint8m2_t v_s0, v_s1, v_s2, v_s3;
499
+ __riscv_vlseg4e8_v_u8m2(&v_s0, &v_s1, &v_s2, &v_s3, src_ptr, vl);
500
+ __riscv_vse8_v_u8m2(dst_ptr, v_s2, vl);
501
+ w -= vl;
502
+ src_ptr += (4 * vl);
503
+ dst_ptr += vl;
504
+ } while (w > 0);
505
+ }
506
+ #endif
507
+ #endif
508
+
509
+ #ifdef HAS_SCALEROWDOWN4BOX_RVV
510
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
511
+ void ScaleRowDown4Box_RVV(const uint8_t* src_ptr,
512
+ ptrdiff_t src_stride,
513
+ uint8_t* dst_ptr,
514
+ int dst_width) {
515
+ const uint8_t* src_ptr1 = src_ptr + src_stride;
516
+ const uint8_t* src_ptr2 = src_ptr + src_stride * 2;
517
+ const uint8_t* src_ptr3 = src_ptr + src_stride * 3;
518
+ size_t w = (size_t)dst_width;
519
+ do {
520
+ size_t vl = __riscv_vsetvl_e8m2(w);
521
+ vuint8m2x4_t v_s = __riscv_vlseg4e8_v_u8m2x4(src_ptr, vl);
522
+ vuint8m2_t v_s0 = __riscv_vget_v_u8m2x4_u8m2(v_s, 0);
523
+ vuint8m2_t v_s1 = __riscv_vget_v_u8m2x4_u8m2(v_s, 1);
524
+ vuint8m2_t v_s2 = __riscv_vget_v_u8m2x4_u8m2(v_s, 2);
525
+ vuint8m2_t v_s3 = __riscv_vget_v_u8m2x4_u8m2(v_s, 3);
526
+ vuint16m4_t v_s01 = __riscv_vwaddu_vv_u16m4(v_s0, v_s1, vl);
527
+ vuint8m2x4_t v_t = __riscv_vlseg4e8_v_u8m2x4(src_ptr1, vl);
528
+ vuint8m2_t v_t0 = __riscv_vget_v_u8m2x4_u8m2(v_t, 0);
529
+ vuint8m2_t v_t1 = __riscv_vget_v_u8m2x4_u8m2(v_t, 1);
530
+ vuint8m2_t v_t2 = __riscv_vget_v_u8m2x4_u8m2(v_t, 2);
531
+ vuint8m2_t v_t3 = __riscv_vget_v_u8m2x4_u8m2(v_t, 3);
532
+ vuint16m4_t v_t01 = __riscv_vwaddu_vv_u16m4(v_t0, v_t1, vl);
533
+ vuint8m2x4_t v_u = __riscv_vlseg4e8_v_u8m2x4(src_ptr2, vl);
534
+ vuint8m2_t v_u0 = __riscv_vget_v_u8m2x4_u8m2(v_u, 0);
535
+ vuint8m2_t v_u1 = __riscv_vget_v_u8m2x4_u8m2(v_u, 1);
536
+ vuint8m2_t v_u2 = __riscv_vget_v_u8m2x4_u8m2(v_u, 2);
537
+ vuint8m2_t v_u3 = __riscv_vget_v_u8m2x4_u8m2(v_u, 3);
538
+ vuint16m4_t v_u01 = __riscv_vwaddu_vv_u16m4(v_u0, v_u1, vl);
539
+ vuint16m4_t v_u23 = __riscv_vwaddu_vv_u16m4(v_u2, v_u3, vl);
540
+ vuint16m4_t v_s23 = __riscv_vwaddu_vv_u16m4(v_s2, v_s3, vl);
541
+ vuint16m4_t v_t23 = __riscv_vwaddu_vv_u16m4(v_t2, v_t3, vl);
542
+ vuint16m4_t v_st01 = __riscv_vadd_vv_u16m4(v_s01, v_t01, vl);
543
+ vuint16m4_t v_st23 = __riscv_vadd_vv_u16m4(v_s23, v_t23, vl);
544
+ vuint8m2x4_t v_v = __riscv_vlseg4e8_v_u8m2x4(src_ptr3, vl);
545
+ vuint8m2_t v_v0 = __riscv_vget_v_u8m2x4_u8m2(v_v, 0);
546
+ vuint8m2_t v_v1 = __riscv_vget_v_u8m2x4_u8m2(v_v, 1);
547
+ vuint8m2_t v_v2 = __riscv_vget_v_u8m2x4_u8m2(v_v, 2);
548
+ vuint8m2_t v_v3 = __riscv_vget_v_u8m2x4_u8m2(v_v, 3);
549
+
550
+ vuint16m4_t v_v01 = __riscv_vwaddu_vv_u16m4(v_v0, v_v1, vl);
551
+ vuint16m4_t v_v23 = __riscv_vwaddu_vv_u16m4(v_v2, v_v3, vl);
552
+
553
+ vuint16m4_t v_uv01 = __riscv_vadd_vv_u16m4(v_u01, v_v01, vl);
554
+ vuint16m4_t v_uv23 = __riscv_vadd_vv_u16m4(v_u23, v_v23, vl);
555
+
556
+ vuint16m4_t v_st0123 = __riscv_vadd_vv_u16m4(v_st01, v_st23, vl);
557
+ vuint16m4_t v_uv0123 = __riscv_vadd_vv_u16m4(v_uv01, v_uv23, vl);
558
+ vuint16m4_t v_stuv0123 = __riscv_vadd_vv_u16m4(v_st0123, v_uv0123, vl);
559
+ vuint8m2_t v_dst =
560
+ __riscv_vnclipu_wx_u8m2(v_stuv0123, 4, __RISCV_VXRM_RNU, vl);
561
+ __riscv_vse8_v_u8m2(dst_ptr, v_dst, vl);
562
+ w -= vl;
563
+ src_ptr += 4 * vl;
564
+ src_ptr1 += 4 * vl;
565
+ src_ptr2 += 4 * vl;
566
+ src_ptr3 += 4 * vl;
567
+ dst_ptr += vl;
568
+ } while (w > 0);
569
+ }
570
+ #else
571
+ void ScaleRowDown4Box_RVV(const uint8_t* src_ptr,
572
+ ptrdiff_t src_stride,
573
+ uint8_t* dst_ptr,
574
+ int dst_width) {
575
+ const uint8_t* src_ptr1 = src_ptr + src_stride;
576
+ const uint8_t* src_ptr2 = src_ptr + src_stride * 2;
577
+ const uint8_t* src_ptr3 = src_ptr + src_stride * 3;
578
+ size_t w = (size_t)dst_width;
579
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
580
+ // register) is set to round-to-nearest-up mode(0).
581
+ asm volatile("csrwi vxrm, 0");
582
+ do {
583
+ vuint8m2_t v_s0, v_s1, v_s2, v_s3;
584
+ vuint8m2_t v_t0, v_t1, v_t2, v_t3;
585
+ vuint8m2_t v_u0, v_u1, v_u2, v_u3;
586
+ vuint8m2_t v_v0, v_v1, v_v2, v_v3;
587
+ vuint16m4_t v_s01, v_s23, v_t01, v_t23;
588
+ vuint16m4_t v_u01, v_u23, v_v01, v_v23;
589
+ vuint16m4_t v_st01, v_st23, v_uv01, v_uv23;
590
+ vuint16m4_t v_st0123, v_uv0123, v_stuv0123;
591
+ vuint8m2_t v_dst;
592
+ size_t vl = __riscv_vsetvl_e8m2(w);
593
+
594
+ __riscv_vlseg4e8_v_u8m2(&v_s0, &v_s1, &v_s2, &v_s3, src_ptr, vl);
595
+ v_s01 = __riscv_vwaddu_vv_u16m4(v_s0, v_s1, vl);
596
+
597
+ __riscv_vlseg4e8_v_u8m2(&v_t0, &v_t1, &v_t2, &v_t3, src_ptr1, vl);
598
+ v_t01 = __riscv_vwaddu_vv_u16m4(v_t0, v_t1, vl);
599
+
600
+ __riscv_vlseg4e8_v_u8m2(&v_u0, &v_u1, &v_u2, &v_u3, src_ptr2, vl);
601
+ v_u01 = __riscv_vwaddu_vv_u16m4(v_u0, v_u1, vl);
602
+ v_u23 = __riscv_vwaddu_vv_u16m4(v_u2, v_u3, vl);
603
+
604
+ v_s23 = __riscv_vwaddu_vv_u16m4(v_s2, v_s3, vl);
605
+ v_t23 = __riscv_vwaddu_vv_u16m4(v_t2, v_t3, vl);
606
+ v_st01 = __riscv_vadd_vv_u16m4(v_s01, v_t01, vl);
607
+ v_st23 = __riscv_vadd_vv_u16m4(v_s23, v_t23, vl);
608
+
609
+ __riscv_vlseg4e8_v_u8m2(&v_v0, &v_v1, &v_v2, &v_v3, src_ptr3, vl);
610
+
611
+ v_v01 = __riscv_vwaddu_vv_u16m4(v_v0, v_v1, vl);
612
+ v_v23 = __riscv_vwaddu_vv_u16m4(v_v2, v_v3, vl);
613
+
614
+ v_uv01 = __riscv_vadd_vv_u16m4(v_u01, v_v01, vl);
615
+ v_uv23 = __riscv_vadd_vv_u16m4(v_u23, v_v23, vl);
616
+
617
+ v_st0123 = __riscv_vadd_vv_u16m4(v_st01, v_st23, vl);
618
+ v_uv0123 = __riscv_vadd_vv_u16m4(v_uv01, v_uv23, vl);
619
+ v_stuv0123 = __riscv_vadd_vv_u16m4(v_st0123, v_uv0123, vl);
620
+ // Use round-to-nearest-up mode for vnclip
621
+ v_dst = __riscv_vnclipu_wx_u8m2(v_stuv0123, 4, vl);
622
+ __riscv_vse8_v_u8m2(dst_ptr, v_dst, vl);
623
+ w -= vl;
624
+ src_ptr += 4 * vl;
625
+ src_ptr1 += 4 * vl;
626
+ src_ptr2 += 4 * vl;
627
+ src_ptr3 += 4 * vl;
628
+ dst_ptr += vl;
629
+ } while (w > 0);
630
+ }
631
+ #endif
632
+ #endif
633
+
634
+ #ifdef HAS_SCALEROWDOWN34_RVV
635
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
636
+ void ScaleRowDown34_RVV(const uint8_t* src_ptr,
637
+ ptrdiff_t src_stride,
638
+ uint8_t* dst_ptr,
639
+ int dst_width) {
640
+ size_t w = (size_t)dst_width / 3u;
641
+ do {
642
+ size_t vl = __riscv_vsetvl_e8m2(w);
643
+ vuint8m2x4_t v_src = __riscv_vlseg4e8_v_u8m2x4(src_ptr, vl);
644
+ vuint8m2_t v_0 = __riscv_vget_v_u8m2x4_u8m2(v_src, 0);
645
+ vuint8m2_t v_1 = __riscv_vget_v_u8m2x4_u8m2(v_src, 1);
646
+ vuint8m2_t v_3 = __riscv_vget_v_u8m2x4_u8m2(v_src, 3);
647
+ vuint8m2x3_t v_dst = __riscv_vcreate_v_u8m2x3(v_0, v_1, v_3);
648
+ __riscv_vsseg3e8_v_u8m2x3(dst_ptr, v_dst, vl);
649
+ w -= vl;
650
+ src_ptr += 4 * vl;
651
+ dst_ptr += 3 * vl;
652
+ } while (w > 0);
653
+ }
654
+ #else
655
+ void ScaleRowDown34_RVV(const uint8_t* src_ptr,
656
+ ptrdiff_t src_stride,
657
+ uint8_t* dst_ptr,
658
+ int dst_width) {
659
+ size_t w = (size_t)dst_width / 3u;
660
+ do {
661
+ size_t vl = __riscv_vsetvl_e8m2(w);
662
+ vuint8m2_t v_s0, v_s1, v_s2, v_s3;
663
+ __riscv_vlseg4e8_v_u8m2(&v_s0, &v_s1, &v_s2, &v_s3, src_ptr, vl);
664
+ __riscv_vsseg3e8_v_u8m2(dst_ptr, v_s0, v_s1, v_s3, vl);
665
+ w -= vl;
666
+ src_ptr += 4 * vl;
667
+ dst_ptr += 3 * vl;
668
+ } while (w > 0);
669
+ }
670
+ #endif
671
+ #endif
672
+
673
+ #ifdef HAS_SCALEROWDOWN34_0_BOX_RVV
674
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
675
+ void ScaleRowDown34_0_Box_RVV(const uint8_t* src_ptr,
676
+ ptrdiff_t src_stride,
677
+ uint8_t* dst_ptr,
678
+ int dst_width) {
679
+ size_t w = (size_t)dst_width / 3u;
680
+ const uint8_t* s = src_ptr;
681
+ const uint8_t* t = src_ptr + src_stride;
682
+ do {
683
+ vuint16m4_t v_t0_u16, v_t1_u16, v_t2_u16, v_t3_u16;
684
+ vuint8m2_t v_u0, v_u1, v_u2, v_u3;
685
+ vuint16m4_t v_u1_u16;
686
+ vuint8m2_t v_a0, v_a1, v_a2;
687
+ vuint8m2x3_t v_dst;
688
+ size_t vl = __riscv_vsetvl_e8m2(w);
689
+ vuint8m2x4_t v_s = __riscv_vlseg4e8_v_u8m2x4(s, vl);
690
+ vuint8m2_t v_s0 = __riscv_vget_v_u8m2x4_u8m2(v_s, 0);
691
+ vuint8m2_t v_s1 = __riscv_vget_v_u8m2x4_u8m2(v_s, 1);
692
+ vuint8m2_t v_s2 = __riscv_vget_v_u8m2x4_u8m2(v_s, 2);
693
+ vuint8m2_t v_s3 = __riscv_vget_v_u8m2x4_u8m2(v_s, 3);
694
+
695
+ if (src_stride == 0) {
696
+ v_t0_u16 = __riscv_vwaddu_vx_u16m4(v_s0, 2, vl);
697
+ v_t1_u16 = __riscv_vwaddu_vx_u16m4(v_s1, 2, vl);
698
+ v_t2_u16 = __riscv_vwaddu_vx_u16m4(v_s2, 2, vl);
699
+ v_t3_u16 = __riscv_vwaddu_vx_u16m4(v_s3, 2, vl);
700
+ } else {
701
+ vuint8m2x4_t v_t = __riscv_vlseg4e8_v_u8m2x4(t, vl);
702
+ vuint8m2_t v_t0 = __riscv_vget_v_u8m2x4_u8m2(v_t, 0);
703
+ vuint8m2_t v_t1 = __riscv_vget_v_u8m2x4_u8m2(v_t, 1);
704
+ vuint8m2_t v_t2 = __riscv_vget_v_u8m2x4_u8m2(v_t, 2);
705
+ vuint8m2_t v_t3 = __riscv_vget_v_u8m2x4_u8m2(v_t, 3);
706
+ v_t0_u16 = __riscv_vwaddu_vx_u16m4(v_t0, 0, vl);
707
+ v_t1_u16 = __riscv_vwaddu_vx_u16m4(v_t1, 0, vl);
708
+ v_t2_u16 = __riscv_vwaddu_vx_u16m4(v_t2, 0, vl);
709
+ v_t3_u16 = __riscv_vwaddu_vx_u16m4(v_t3, 0, vl);
710
+ t += 4 * vl;
711
+ }
712
+
713
+ v_t0_u16 = __riscv_vwmaccu_vx_u16m4(v_t0_u16, 3, v_s0, vl);
714
+ v_t1_u16 = __riscv_vwmaccu_vx_u16m4(v_t1_u16, 3, v_s1, vl);
715
+ v_t2_u16 = __riscv_vwmaccu_vx_u16m4(v_t2_u16, 3, v_s2, vl);
716
+ v_t3_u16 = __riscv_vwmaccu_vx_u16m4(v_t3_u16, 3, v_s3, vl);
717
+
718
+ v_u0 = __riscv_vnclipu_wx_u8m2(v_t0_u16, 2, __RISCV_VXRM_RNU, vl);
719
+ v_u1 = __riscv_vnclipu_wx_u8m2(v_t1_u16, 2, __RISCV_VXRM_RNU, vl);
720
+ v_u2 = __riscv_vnclipu_wx_u8m2(v_t2_u16, 2, __RISCV_VXRM_RNU, vl);
721
+ v_u3 = __riscv_vnclipu_wx_u8m2(v_t3_u16, 2, __RISCV_VXRM_RNU, vl);
722
+ // a0 = (src[0] * 3 + s[1] * 1 + 2) >> 2
723
+ v_u1_u16 = __riscv_vwaddu_vx_u16m4(v_u1, 0, vl);
724
+ v_u1_u16 = __riscv_vwmaccu_vx_u16m4(v_u1_u16, 3, v_u0, vl);
725
+ v_a0 = __riscv_vnclipu_wx_u8m2(v_u1_u16, 2, __RISCV_VXRM_RNU, vl);
726
+ // a1 = (src[1] * 1 + s[2] * 1 + 1) >> 1
727
+ v_a1 = __riscv_vaaddu_vv_u8m2(v_u1, v_u2, __RISCV_VXRM_RNU, vl);
728
+ // a2 = (src[2] * 1 + s[3] * 3 + 2) >> 2
729
+ v_u1_u16 = __riscv_vwaddu_vx_u16m4(v_u2, 0, vl);
730
+ v_u1_u16 = __riscv_vwmaccu_vx_u16m4(v_u1_u16, 3, v_u3, vl);
731
+ v_a2 = __riscv_vnclipu_wx_u8m2(v_u1_u16, 2, __RISCV_VXRM_RNU, vl);
732
+
733
+ v_dst = __riscv_vcreate_v_u8m2x3(v_a0, v_a1, v_a2);
734
+ __riscv_vsseg3e8_v_u8m2x3(dst_ptr, v_dst, vl);
735
+
736
+ w -= vl;
737
+ s += 4 * vl;
738
+ dst_ptr += 3 * vl;
739
+ } while (w > 0);
740
+ }
741
+ #else
742
+ void ScaleRowDown34_0_Box_RVV(const uint8_t* src_ptr,
743
+ ptrdiff_t src_stride,
744
+ uint8_t* dst_ptr,
745
+ int dst_width) {
746
+ size_t w = (size_t)dst_width / 3u;
747
+ const uint8_t* s = src_ptr;
748
+ const uint8_t* t = src_ptr + src_stride;
749
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
750
+ // register) is set to round-to-nearest-up mode(0).
751
+ asm volatile("csrwi vxrm, 0");
752
+ do {
753
+ vuint8m2_t v_s0, v_s1, v_s2, v_s3;
754
+ vuint16m4_t v_t0_u16, v_t1_u16, v_t2_u16, v_t3_u16;
755
+ vuint8m2_t v_u0, v_u1, v_u2, v_u3;
756
+ vuint16m4_t v_u1_u16;
757
+ vuint8m2_t v_a0, v_a1, v_a2;
758
+ size_t vl = __riscv_vsetvl_e8m2(w);
759
+ __riscv_vlseg4e8_v_u8m2(&v_s0, &v_s1, &v_s2, &v_s3, s, vl);
760
+
761
+ if (src_stride == 0) {
762
+ v_t0_u16 = __riscv_vwaddu_vx_u16m4(v_s0, 2, vl);
763
+ v_t1_u16 = __riscv_vwaddu_vx_u16m4(v_s1, 2, vl);
764
+ v_t2_u16 = __riscv_vwaddu_vx_u16m4(v_s2, 2, vl);
765
+ v_t3_u16 = __riscv_vwaddu_vx_u16m4(v_s3, 2, vl);
766
+ } else {
767
+ vuint8m2_t v_t0, v_t1, v_t2, v_t3;
768
+ __riscv_vlseg4e8_v_u8m2(&v_t0, &v_t1, &v_t2, &v_t3, t, vl);
769
+ v_t0_u16 = __riscv_vwaddu_vx_u16m4(v_t0, 0, vl);
770
+ v_t1_u16 = __riscv_vwaddu_vx_u16m4(v_t1, 0, vl);
771
+ v_t2_u16 = __riscv_vwaddu_vx_u16m4(v_t2, 0, vl);
772
+ v_t3_u16 = __riscv_vwaddu_vx_u16m4(v_t3, 0, vl);
773
+ t += 4 * vl;
774
+ }
775
+
776
+ v_t0_u16 = __riscv_vwmaccu_vx_u16m4(v_t0_u16, 3, v_s0, vl);
777
+ v_t1_u16 = __riscv_vwmaccu_vx_u16m4(v_t1_u16, 3, v_s1, vl);
778
+ v_t2_u16 = __riscv_vwmaccu_vx_u16m4(v_t2_u16, 3, v_s2, vl);
779
+ v_t3_u16 = __riscv_vwmaccu_vx_u16m4(v_t3_u16, 3, v_s3, vl);
780
+
781
+ // Use round-to-nearest-up mode for vnclip & averaging add
782
+ v_u0 = __riscv_vnclipu_wx_u8m2(v_t0_u16, 2, vl);
783
+ v_u1 = __riscv_vnclipu_wx_u8m2(v_t1_u16, 2, vl);
784
+ v_u2 = __riscv_vnclipu_wx_u8m2(v_t2_u16, 2, vl);
785
+ v_u3 = __riscv_vnclipu_wx_u8m2(v_t3_u16, 2, vl);
786
+
787
+ // a0 = (src[0] * 3 + s[1] * 1 + 2) >> 2
788
+ v_u1_u16 = __riscv_vwaddu_vx_u16m4(v_u1, 0, vl);
789
+ v_u1_u16 = __riscv_vwmaccu_vx_u16m4(v_u1_u16, 3, v_u0, vl);
790
+ v_a0 = __riscv_vnclipu_wx_u8m2(v_u1_u16, 2, vl);
791
+
792
+ // a1 = (src[1] * 1 + s[2] * 1 + 1) >> 1
793
+ v_a1 = __riscv_vaaddu_vv_u8m2(v_u1, v_u2, vl);
794
+
795
+ // a2 = (src[2] * 1 + s[3] * 3 + 2) >> 2
796
+ v_u1_u16 = __riscv_vwaddu_vx_u16m4(v_u2, 0, vl);
797
+ v_u1_u16 = __riscv_vwmaccu_vx_u16m4(v_u1_u16, 3, v_u3, vl);
798
+ v_a2 = __riscv_vnclipu_wx_u8m2(v_u1_u16, 2, vl);
799
+
800
+ __riscv_vsseg3e8_v_u8m2(dst_ptr, v_a0, v_a1, v_a2, vl);
801
+
802
+ w -= vl;
803
+ s += 4 * vl;
804
+ dst_ptr += 3 * vl;
805
+ } while (w > 0);
806
+ }
807
+ #endif
808
+ #endif
809
+
810
+ #ifdef HAS_SCALEROWDOWN34_1_BOX_RVV
811
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
812
+ void ScaleRowDown34_1_Box_RVV(const uint8_t* src_ptr,
813
+ ptrdiff_t src_stride,
814
+ uint8_t* dst_ptr,
815
+ int dst_width) {
816
+ size_t w = (size_t)dst_width / 3u;
817
+ const uint8_t* s = src_ptr;
818
+ const uint8_t* t = src_ptr + src_stride;
819
+ do {
820
+ vuint8m2_t v_ave0, v_ave1, v_ave2, v_ave3;
821
+ vuint16m4_t v_u1_u16;
822
+ vuint8m2_t v_a0, v_a1, v_a2;
823
+ vuint8m2x3_t v_dst;
824
+ size_t vl = __riscv_vsetvl_e8m2(w);
825
+ vuint8m2x4_t v_s = __riscv_vlseg4e8_v_u8m2x4(s, vl);
826
+ vuint8m2_t v_s0 = __riscv_vget_v_u8m2x4_u8m2(v_s, 0);
827
+ vuint8m2_t v_s1 = __riscv_vget_v_u8m2x4_u8m2(v_s, 1);
828
+ vuint8m2_t v_s2 = __riscv_vget_v_u8m2x4_u8m2(v_s, 2);
829
+ vuint8m2_t v_s3 = __riscv_vget_v_u8m2x4_u8m2(v_s, 3);
830
+
831
+ // Use round-to-nearest-up mode for vnclip & averaging add
832
+ if (src_stride == 0) {
833
+ v_ave0 = __riscv_vaaddu_vv_u8m2(v_s0, v_s0, __RISCV_VXRM_RNU, vl);
834
+ v_ave1 = __riscv_vaaddu_vv_u8m2(v_s1, v_s1, __RISCV_VXRM_RNU, vl);
835
+ v_ave2 = __riscv_vaaddu_vv_u8m2(v_s2, v_s2, __RISCV_VXRM_RNU, vl);
836
+ v_ave3 = __riscv_vaaddu_vv_u8m2(v_s3, v_s3, __RISCV_VXRM_RNU, vl);
837
+ } else {
838
+ vuint8m2x4_t v_t = __riscv_vlseg4e8_v_u8m2x4(t, vl);
839
+ vuint8m2_t v_t0 = __riscv_vget_v_u8m2x4_u8m2(v_t, 0);
840
+ vuint8m2_t v_t1 = __riscv_vget_v_u8m2x4_u8m2(v_t, 1);
841
+ vuint8m2_t v_t2 = __riscv_vget_v_u8m2x4_u8m2(v_t, 2);
842
+ vuint8m2_t v_t3 = __riscv_vget_v_u8m2x4_u8m2(v_t, 3);
843
+ v_ave0 = __riscv_vaaddu_vv_u8m2(v_s0, v_t0, __RISCV_VXRM_RNU, vl);
844
+ v_ave1 = __riscv_vaaddu_vv_u8m2(v_s1, v_t1, __RISCV_VXRM_RNU, vl);
845
+ v_ave2 = __riscv_vaaddu_vv_u8m2(v_s2, v_t2, __RISCV_VXRM_RNU, vl);
846
+ v_ave3 = __riscv_vaaddu_vv_u8m2(v_s3, v_t3, __RISCV_VXRM_RNU, vl);
847
+ t += 4 * vl;
848
+ }
849
+ // a0 = (src[0] * 3 + s[1] * 1 + 2) >> 2
850
+ v_u1_u16 = __riscv_vwaddu_vx_u16m4(v_ave1, 0, vl);
851
+ v_u1_u16 = __riscv_vwmaccu_vx_u16m4(v_u1_u16, 3, v_ave0, vl);
852
+ v_a0 = __riscv_vnclipu_wx_u8m2(v_u1_u16, 2, __RISCV_VXRM_RNU, vl);
853
+
854
+ // a1 = (src[1] * 1 + s[2] * 1 + 1) >> 1
855
+ v_a1 = __riscv_vaaddu_vv_u8m2(v_ave1, v_ave2, __RISCV_VXRM_RNU, vl);
856
+
857
+ // a2 = (src[2] * 1 + s[3] * 3 + 2) >> 2
858
+ v_u1_u16 = __riscv_vwaddu_vx_u16m4(v_ave2, 0, vl);
859
+ v_u1_u16 = __riscv_vwmaccu_vx_u16m4(v_u1_u16, 3, v_ave3, vl);
860
+ v_a2 = __riscv_vnclipu_wx_u8m2(v_u1_u16, 2, __RISCV_VXRM_RNU, vl);
861
+
862
+ v_dst = __riscv_vcreate_v_u8m2x3(v_a0, v_a1, v_a2);
863
+ __riscv_vsseg3e8_v_u8m2x3(dst_ptr, v_dst, vl);
864
+
865
+ w -= vl;
866
+ s += 4 * vl;
867
+ dst_ptr += 3 * vl;
868
+ } while (w > 0);
869
+ }
870
+ #else
871
+ void ScaleRowDown34_1_Box_RVV(const uint8_t* src_ptr,
872
+ ptrdiff_t src_stride,
873
+ uint8_t* dst_ptr,
874
+ int dst_width) {
875
+ size_t w = (size_t)dst_width / 3u;
876
+ const uint8_t* s = src_ptr;
877
+ const uint8_t* t = src_ptr + src_stride;
878
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
879
+ // register) is set to round-to-nearest-up mode(0).
880
+ asm volatile("csrwi vxrm, 0");
881
+ do {
882
+ vuint8m2_t v_s0, v_s1, v_s2, v_s3;
883
+ vuint8m2_t v_ave0, v_ave1, v_ave2, v_ave3;
884
+ vuint16m4_t v_u1_u16;
885
+ vuint8m2_t v_a0, v_a1, v_a2;
886
+ size_t vl = __riscv_vsetvl_e8m2(w);
887
+ __riscv_vlseg4e8_v_u8m2(&v_s0, &v_s1, &v_s2, &v_s3, s, vl);
888
+
889
+ // Use round-to-nearest-up mode for vnclip & averaging add
890
+ if (src_stride == 0) {
891
+ v_ave0 = __riscv_vaaddu_vv_u8m2(v_s0, v_s0, vl);
892
+ v_ave1 = __riscv_vaaddu_vv_u8m2(v_s1, v_s1, vl);
893
+ v_ave2 = __riscv_vaaddu_vv_u8m2(v_s2, v_s2, vl);
894
+ v_ave3 = __riscv_vaaddu_vv_u8m2(v_s3, v_s3, vl);
895
+ } else {
896
+ vuint8m2_t v_t0, v_t1, v_t2, v_t3;
897
+ __riscv_vlseg4e8_v_u8m2(&v_t0, &v_t1, &v_t2, &v_t3, t, vl);
898
+ v_ave0 = __riscv_vaaddu_vv_u8m2(v_s0, v_t0, vl);
899
+ v_ave1 = __riscv_vaaddu_vv_u8m2(v_s1, v_t1, vl);
900
+ v_ave2 = __riscv_vaaddu_vv_u8m2(v_s2, v_t2, vl);
901
+ v_ave3 = __riscv_vaaddu_vv_u8m2(v_s3, v_t3, vl);
902
+ t += 4 * vl;
903
+ }
904
+ // a0 = (src[0] * 3 + s[1] * 1 + 2) >> 2
905
+ v_u1_u16 = __riscv_vwaddu_vx_u16m4(v_ave1, 0, vl);
906
+ v_u1_u16 = __riscv_vwmaccu_vx_u16m4(v_u1_u16, 3, v_ave0, vl);
907
+ v_a0 = __riscv_vnclipu_wx_u8m2(v_u1_u16, 2, vl);
908
+
909
+ // a1 = (src[1] * 1 + s[2] * 1 + 1) >> 1
910
+ v_a1 = __riscv_vaaddu_vv_u8m2(v_ave1, v_ave2, vl);
911
+
912
+ // a2 = (src[2] * 1 + s[3] * 3 + 2) >> 2
913
+ v_u1_u16 = __riscv_vwaddu_vx_u16m4(v_ave2, 0, vl);
914
+ v_u1_u16 = __riscv_vwmaccu_vx_u16m4(v_u1_u16, 3, v_ave3, vl);
915
+ v_a2 = __riscv_vnclipu_wx_u8m2(v_u1_u16, 2, vl);
916
+
917
+ __riscv_vsseg3e8_v_u8m2(dst_ptr, v_a0, v_a1, v_a2, vl);
918
+
919
+ w -= vl;
920
+ s += 4 * vl;
921
+ dst_ptr += 3 * vl;
922
+ } while (w > 0);
923
+ }
924
+ #endif
925
+ #endif
926
+
927
+ #ifdef HAS_SCALEROWDOWN38_RVV
928
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
929
+ void ScaleRowDown38_RVV(const uint8_t* src_ptr,
930
+ ptrdiff_t src_stride,
931
+ uint8_t* dst_ptr,
932
+ int dst_width) {
933
+ size_t w = (size_t)dst_width / 3u;
934
+ (void)src_stride;
935
+ assert(dst_width % 3 == 0);
936
+ do {
937
+ size_t vl = __riscv_vsetvl_e8m1(w);
938
+ vuint8m1x8_t v_src = __riscv_vlseg8e8_v_u8m1x8(src_ptr, vl);
939
+ vuint8m1_t v_s0 = __riscv_vget_v_u8m1x8_u8m1(v_src, 0);
940
+ vuint8m1_t v_s3 = __riscv_vget_v_u8m1x8_u8m1(v_src, 3);
941
+ vuint8m1_t v_s6 = __riscv_vget_v_u8m1x8_u8m1(v_src, 6);
942
+ vuint8m1x3_t v_dst = __riscv_vcreate_v_u8m1x3(v_s0, v_s3, v_s6);
943
+ __riscv_vsseg3e8_v_u8m1x3(dst_ptr, v_dst, vl);
944
+ w -= vl;
945
+ src_ptr += 8 * vl;
946
+ dst_ptr += 3 * vl;
947
+ } while (w > 0);
948
+ }
949
+ #else
950
+ void ScaleRowDown38_RVV(const uint8_t* src_ptr,
951
+ ptrdiff_t src_stride,
952
+ uint8_t* dst_ptr,
953
+ int dst_width) {
954
+ size_t w = (size_t)dst_width / 3u;
955
+ (void)src_stride;
956
+ assert(dst_width % 3 == 0);
957
+ do {
958
+ vuint8m1_t v_s0, v_s1, v_s2, v_s3, v_s4, v_s5, v_s6, v_s7;
959
+ size_t vl = __riscv_vsetvl_e8m1(w);
960
+ __riscv_vlseg8e8_v_u8m1(&v_s0, &v_s1, &v_s2, &v_s3, &v_s4, &v_s5, &v_s6,
961
+ &v_s7, src_ptr, vl);
962
+ __riscv_vsseg3e8_v_u8m1(dst_ptr, v_s0, v_s3, v_s6, vl);
963
+ w -= vl;
964
+ src_ptr += 8 * vl;
965
+ dst_ptr += 3 * vl;
966
+ } while (w > 0);
967
+ }
968
+ #endif
969
+ #endif
970
+
971
+ #ifdef HAS_SCALEROWDOWN38_2_BOX_RVV
972
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
973
+ void ScaleRowDown38_2_Box_RVV(const uint8_t* src_ptr,
974
+ ptrdiff_t src_stride,
975
+ uint8_t* dst_ptr,
976
+ int dst_width) {
977
+ size_t w = (size_t)dst_width / 3u;
978
+ const uint16_t coeff_a = (65536u / 6u);
979
+ const uint16_t coeff_b = (65536u / 4u);
980
+ assert((dst_width % 3 == 0) && (dst_width > 0));
981
+ do {
982
+ vuint16m2_t v_e, v_f, v_g;
983
+ vuint8m1_t v_dst_e, v_dst_f, v_dst_g;
984
+ vuint8m1x3_t v_dst;
985
+ size_t vl = __riscv_vsetvl_e8m1(w);
986
+ // s: e00, e10, e20, f00, f10, f20, g00, g10
987
+ vuint8m1x8_t v_s = __riscv_vlseg8e8_v_u8m1x8(src_ptr, vl);
988
+ vuint8m1_t v_s0 = __riscv_vget_v_u8m1x8_u8m1(v_s, 0);
989
+ vuint8m1_t v_s1 = __riscv_vget_v_u8m1x8_u8m1(v_s, 1);
990
+ vuint8m1_t v_s2 = __riscv_vget_v_u8m1x8_u8m1(v_s, 2);
991
+ vuint8m1_t v_s3 = __riscv_vget_v_u8m1x8_u8m1(v_s, 3);
992
+ vuint8m1_t v_s4 = __riscv_vget_v_u8m1x8_u8m1(v_s, 4);
993
+ vuint8m1_t v_s5 = __riscv_vget_v_u8m1x8_u8m1(v_s, 5);
994
+ vuint8m1_t v_s6 = __riscv_vget_v_u8m1x8_u8m1(v_s, 6);
995
+ vuint8m1_t v_s7 = __riscv_vget_v_u8m1x8_u8m1(v_s, 7);
996
+ // t: e01, e11, e21, f01, f11, f21, g01, g11
997
+ vuint8m1x8_t v_t = __riscv_vlseg8e8_v_u8m1x8(src_ptr + src_stride, vl);
998
+ vuint8m1_t v_t0 = __riscv_vget_v_u8m1x8_u8m1(v_t, 0);
999
+ vuint8m1_t v_t1 = __riscv_vget_v_u8m1x8_u8m1(v_t, 1);
1000
+ vuint8m1_t v_t2 = __riscv_vget_v_u8m1x8_u8m1(v_t, 2);
1001
+ vuint8m1_t v_t3 = __riscv_vget_v_u8m1x8_u8m1(v_t, 3);
1002
+ vuint8m1_t v_t4 = __riscv_vget_v_u8m1x8_u8m1(v_t, 4);
1003
+ vuint8m1_t v_t5 = __riscv_vget_v_u8m1x8_u8m1(v_t, 5);
1004
+ vuint8m1_t v_t6 = __riscv_vget_v_u8m1x8_u8m1(v_t, 6);
1005
+ vuint8m1_t v_t7 = __riscv_vget_v_u8m1x8_u8m1(v_t, 7);
1006
+ // Calculate sum of [e00, e21] to v_e
1007
+ // Calculate sum of [f00, f21] to v_f
1008
+ // Calculate sum of [g00, g11] to v_g
1009
+ vuint16m2_t v_e0 = __riscv_vwaddu_vv_u16m2(v_s0, v_t0, vl);
1010
+ vuint16m2_t v_e1 = __riscv_vwaddu_vv_u16m2(v_s1, v_t1, vl);
1011
+ vuint16m2_t v_e2 = __riscv_vwaddu_vv_u16m2(v_s2, v_t2, vl);
1012
+ vuint16m2_t v_f0 = __riscv_vwaddu_vv_u16m2(v_s3, v_t3, vl);
1013
+ vuint16m2_t v_f1 = __riscv_vwaddu_vv_u16m2(v_s4, v_t4, vl);
1014
+ vuint16m2_t v_f2 = __riscv_vwaddu_vv_u16m2(v_s5, v_t5, vl);
1015
+ vuint16m2_t v_g0 = __riscv_vwaddu_vv_u16m2(v_s6, v_t6, vl);
1016
+ vuint16m2_t v_g1 = __riscv_vwaddu_vv_u16m2(v_s7, v_t7, vl);
1017
+
1018
+ v_e0 = __riscv_vadd_vv_u16m2(v_e0, v_e1, vl);
1019
+ v_f0 = __riscv_vadd_vv_u16m2(v_f0, v_f1, vl);
1020
+ v_e = __riscv_vadd_vv_u16m2(v_e0, v_e2, vl);
1021
+ v_f = __riscv_vadd_vv_u16m2(v_f0, v_f2, vl);
1022
+ v_g = __riscv_vadd_vv_u16m2(v_g0, v_g1, vl);
1023
+
1024
+ // Average in 16-bit fixed-point
1025
+ v_e = __riscv_vmulhu_vx_u16m2(v_e, coeff_a, vl);
1026
+ v_f = __riscv_vmulhu_vx_u16m2(v_f, coeff_a, vl);
1027
+ v_g = __riscv_vmulhu_vx_u16m2(v_g, coeff_b, vl);
1028
+ v_dst_e = __riscv_vnsrl_wx_u8m1(v_e, 0, vl);
1029
+ v_dst_f = __riscv_vnsrl_wx_u8m1(v_f, 0, vl);
1030
+ v_dst_g = __riscv_vnsrl_wx_u8m1(v_g, 0, vl);
1031
+
1032
+ v_dst = __riscv_vcreate_v_u8m1x3(v_dst_e, v_dst_f, v_dst_g);
1033
+ __riscv_vsseg3e8_v_u8m1x3(dst_ptr, v_dst, vl);
1034
+ w -= vl;
1035
+ src_ptr += 8 * vl;
1036
+ dst_ptr += 3 * vl;
1037
+ } while (w > 0);
1038
+ }
1039
+ #else
1040
+ void ScaleRowDown38_2_Box_RVV(const uint8_t* src_ptr,
1041
+ ptrdiff_t src_stride,
1042
+ uint8_t* dst_ptr,
1043
+ int dst_width) {
1044
+ size_t w = (size_t)dst_width / 3u;
1045
+ const uint16_t coeff_a = (65536u / 6u);
1046
+ const uint16_t coeff_b = (65536u / 4u);
1047
+ assert((dst_width % 3 == 0) && (dst_width > 0));
1048
+ do {
1049
+ vuint8m1_t v_s0, v_s1, v_s2, v_s3, v_s4, v_s5, v_s6, v_s7;
1050
+ vuint8m1_t v_t0, v_t1, v_t2, v_t3, v_t4, v_t5, v_t6, v_t7;
1051
+ vuint16m2_t v_e0, v_e1, v_e2, v_e;
1052
+ vuint16m2_t v_f0, v_f1, v_f2, v_f;
1053
+ vuint16m2_t v_g0, v_g1, v_g;
1054
+ vuint8m1_t v_dst_e, v_dst_f, v_dst_g;
1055
+ size_t vl = __riscv_vsetvl_e8m1(w);
1056
+ // s: e00, e10, e20, f00, f10, f20, g00, g10
1057
+ // t: e01, e11, e21, f01, f11, f21, g01, g11
1058
+ __riscv_vlseg8e8_v_u8m1(&v_s0, &v_s1, &v_s2, &v_s3, &v_s4, &v_s5, &v_s6,
1059
+ &v_s7, src_ptr, vl);
1060
+ __riscv_vlseg8e8_v_u8m1(&v_t0, &v_t1, &v_t2, &v_t3, &v_t4, &v_t5, &v_t6,
1061
+ &v_t7, src_ptr + src_stride, vl);
1062
+ // Calculate sum of [e00, e21] to v_e
1063
+ // Calculate sum of [f00, f21] to v_f
1064
+ // Calculate sum of [g00, g11] to v_g
1065
+ v_e0 = __riscv_vwaddu_vv_u16m2(v_s0, v_t0, vl);
1066
+ v_e1 = __riscv_vwaddu_vv_u16m2(v_s1, v_t1, vl);
1067
+ v_e2 = __riscv_vwaddu_vv_u16m2(v_s2, v_t2, vl);
1068
+ v_f0 = __riscv_vwaddu_vv_u16m2(v_s3, v_t3, vl);
1069
+ v_f1 = __riscv_vwaddu_vv_u16m2(v_s4, v_t4, vl);
1070
+ v_f2 = __riscv_vwaddu_vv_u16m2(v_s5, v_t5, vl);
1071
+ v_g0 = __riscv_vwaddu_vv_u16m2(v_s6, v_t6, vl);
1072
+ v_g1 = __riscv_vwaddu_vv_u16m2(v_s7, v_t7, vl);
1073
+
1074
+ v_e0 = __riscv_vadd_vv_u16m2(v_e0, v_e1, vl);
1075
+ v_f0 = __riscv_vadd_vv_u16m2(v_f0, v_f1, vl);
1076
+ v_e = __riscv_vadd_vv_u16m2(v_e0, v_e2, vl);
1077
+ v_f = __riscv_vadd_vv_u16m2(v_f0, v_f2, vl);
1078
+ v_g = __riscv_vadd_vv_u16m2(v_g0, v_g1, vl);
1079
+
1080
+ // Average in 16-bit fixed-point
1081
+ v_e = __riscv_vmulhu_vx_u16m2(v_e, coeff_a, vl);
1082
+ v_f = __riscv_vmulhu_vx_u16m2(v_f, coeff_a, vl);
1083
+ v_g = __riscv_vmulhu_vx_u16m2(v_g, coeff_b, vl);
1084
+
1085
+ v_dst_e = __riscv_vnsrl_wx_u8m1(v_e, 0, vl);
1086
+ v_dst_f = __riscv_vnsrl_wx_u8m1(v_f, 0, vl);
1087
+ v_dst_g = __riscv_vnsrl_wx_u8m1(v_g, 0, vl);
1088
+
1089
+ __riscv_vsseg3e8_v_u8m1(dst_ptr, v_dst_e, v_dst_f, v_dst_g, vl);
1090
+ w -= vl;
1091
+ src_ptr += 8 * vl;
1092
+ dst_ptr += 3 * vl;
1093
+ } while (w > 0);
1094
+ }
1095
+ #endif
1096
+ #endif
1097
+
1098
+ #ifdef HAS_SCALEROWDOWN38_3_BOX_RVV
1099
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1100
+ void ScaleRowDown38_3_Box_RVV(const uint8_t* src_ptr,
1101
+ ptrdiff_t src_stride,
1102
+ uint8_t* dst_ptr,
1103
+ int dst_width) {
1104
+ size_t w = (size_t)dst_width / 3u;
1105
+ const uint16_t coeff_a = (65536u / 9u);
1106
+ const uint16_t coeff_b = (65536u / 6u);
1107
+ assert((dst_width % 3 == 0) && (dst_width > 0));
1108
+ do {
1109
+ vuint16m2_t v_e0, v_e1, v_e2, v_e3, v_e4, v_e;
1110
+ vuint16m2_t v_f0, v_f1, v_f2, v_f3, v_f4, v_f;
1111
+ vuint16m2_t v_g0, v_g1, v_g2, v_g;
1112
+ vuint8m1_t v_dst_e, v_dst_f, v_dst_g;
1113
+ vuint8m1x3_t v_dst;
1114
+ size_t vl = __riscv_vsetvl_e8m1(w);
1115
+ // s: e00, e10, e20, f00, f10, f20, g00, g10
1116
+ vuint8m1x8_t v_s = __riscv_vlseg8e8_v_u8m1x8(src_ptr, vl);
1117
+ vuint8m1_t v_s0 = __riscv_vget_v_u8m1x8_u8m1(v_s, 0);
1118
+ vuint8m1_t v_s1 = __riscv_vget_v_u8m1x8_u8m1(v_s, 1);
1119
+ vuint8m1_t v_s2 = __riscv_vget_v_u8m1x8_u8m1(v_s, 2);
1120
+ vuint8m1_t v_s3 = __riscv_vget_v_u8m1x8_u8m1(v_s, 3);
1121
+ vuint8m1_t v_s4 = __riscv_vget_v_u8m1x8_u8m1(v_s, 4);
1122
+ vuint8m1_t v_s5 = __riscv_vget_v_u8m1x8_u8m1(v_s, 5);
1123
+ vuint8m1_t v_s6 = __riscv_vget_v_u8m1x8_u8m1(v_s, 6);
1124
+ vuint8m1_t v_s7 = __riscv_vget_v_u8m1x8_u8m1(v_s, 7);
1125
+ // t: e01, e11, e21, f01, f11, f21, g01, g11
1126
+ vuint8m1x8_t v_t = __riscv_vlseg8e8_v_u8m1x8(src_ptr + src_stride, vl);
1127
+ vuint8m1_t v_t0 = __riscv_vget_v_u8m1x8_u8m1(v_t, 0);
1128
+ vuint8m1_t v_t1 = __riscv_vget_v_u8m1x8_u8m1(v_t, 1);
1129
+ vuint8m1_t v_t2 = __riscv_vget_v_u8m1x8_u8m1(v_t, 2);
1130
+ vuint8m1_t v_t3 = __riscv_vget_v_u8m1x8_u8m1(v_t, 3);
1131
+ vuint8m1_t v_t4 = __riscv_vget_v_u8m1x8_u8m1(v_t, 4);
1132
+ vuint8m1_t v_t5 = __riscv_vget_v_u8m1x8_u8m1(v_t, 5);
1133
+ vuint8m1_t v_t6 = __riscv_vget_v_u8m1x8_u8m1(v_t, 6);
1134
+ vuint8m1_t v_t7 = __riscv_vget_v_u8m1x8_u8m1(v_t, 7);
1135
+ // u: e02, e12, e22, f02, f12, f22, g02, g12
1136
+ vuint8m1x8_t v_u = __riscv_vlseg8e8_v_u8m1x8(src_ptr + 2 * src_stride, vl);
1137
+ vuint8m1_t v_u0 = __riscv_vget_v_u8m1x8_u8m1(v_u, 0);
1138
+ vuint8m1_t v_u1 = __riscv_vget_v_u8m1x8_u8m1(v_u, 1);
1139
+ vuint8m1_t v_u2 = __riscv_vget_v_u8m1x8_u8m1(v_u, 2);
1140
+ vuint8m1_t v_u3 = __riscv_vget_v_u8m1x8_u8m1(v_u, 3);
1141
+ vuint8m1_t v_u4 = __riscv_vget_v_u8m1x8_u8m1(v_u, 4);
1142
+ vuint8m1_t v_u5 = __riscv_vget_v_u8m1x8_u8m1(v_u, 5);
1143
+ vuint8m1_t v_u6 = __riscv_vget_v_u8m1x8_u8m1(v_u, 6);
1144
+ vuint8m1_t v_u7 = __riscv_vget_v_u8m1x8_u8m1(v_u, 7);
1145
+ // Calculate sum of [e00, e22]
1146
+ v_e0 = __riscv_vwaddu_vv_u16m2(v_s0, v_t0, vl);
1147
+ v_e1 = __riscv_vwaddu_vv_u16m2(v_s1, v_t1, vl);
1148
+ v_e2 = __riscv_vwaddu_vv_u16m2(v_s2, v_t2, vl);
1149
+ v_e3 = __riscv_vwaddu_vv_u16m2(v_u0, v_u1, vl);
1150
+ v_e4 = __riscv_vwaddu_vx_u16m2(v_u2, 0, vl);
1151
+
1152
+ v_e0 = __riscv_vadd_vv_u16m2(v_e0, v_e1, vl);
1153
+ v_e2 = __riscv_vadd_vv_u16m2(v_e2, v_e3, vl);
1154
+ v_e0 = __riscv_vadd_vv_u16m2(v_e0, v_e4, vl);
1155
+ v_e = __riscv_vadd_vv_u16m2(v_e0, v_e2, vl);
1156
+ // Calculate sum of [f00, f22]
1157
+ v_f0 = __riscv_vwaddu_vv_u16m2(v_s3, v_t3, vl);
1158
+ v_f1 = __riscv_vwaddu_vv_u16m2(v_s4, v_t4, vl);
1159
+ v_f2 = __riscv_vwaddu_vv_u16m2(v_s5, v_t5, vl);
1160
+ v_f3 = __riscv_vwaddu_vv_u16m2(v_u3, v_u4, vl);
1161
+ v_f4 = __riscv_vwaddu_vx_u16m2(v_u5, 0, vl);
1162
+
1163
+ v_f0 = __riscv_vadd_vv_u16m2(v_f0, v_f1, vl);
1164
+ v_f2 = __riscv_vadd_vv_u16m2(v_f2, v_f3, vl);
1165
+ v_f0 = __riscv_vadd_vv_u16m2(v_f0, v_f4, vl);
1166
+ v_f = __riscv_vadd_vv_u16m2(v_f0, v_f2, vl);
1167
+ // Calculate sum of [g00, g12]
1168
+ v_g0 = __riscv_vwaddu_vv_u16m2(v_s6, v_t6, vl);
1169
+ v_g1 = __riscv_vwaddu_vv_u16m2(v_s7, v_t7, vl);
1170
+ v_g2 = __riscv_vwaddu_vv_u16m2(v_u6, v_u7, vl);
1171
+
1172
+ v_g = __riscv_vadd_vv_u16m2(v_g0, v_g1, vl);
1173
+ v_g = __riscv_vadd_vv_u16m2(v_g, v_g2, vl);
1174
+
1175
+ // Average in 16-bit fixed-point
1176
+ v_e = __riscv_vmulhu_vx_u16m2(v_e, coeff_a, vl);
1177
+ v_f = __riscv_vmulhu_vx_u16m2(v_f, coeff_a, vl);
1178
+ v_g = __riscv_vmulhu_vx_u16m2(v_g, coeff_b, vl);
1179
+ v_dst_e = __riscv_vnsrl_wx_u8m1(v_e, 0, vl);
1180
+ v_dst_f = __riscv_vnsrl_wx_u8m1(v_f, 0, vl);
1181
+ v_dst_g = __riscv_vnsrl_wx_u8m1(v_g, 0, vl);
1182
+
1183
+ v_dst = __riscv_vcreate_v_u8m1x3(v_dst_e, v_dst_f, v_dst_g);
1184
+ __riscv_vsseg3e8_v_u8m1x3(dst_ptr, v_dst, vl);
1185
+ w -= vl;
1186
+ src_ptr += 8 * vl;
1187
+ dst_ptr += 3 * vl;
1188
+ } while (w > 0);
1189
+ }
1190
+ #else
1191
+ void ScaleRowDown38_3_Box_RVV(const uint8_t* src_ptr,
1192
+ ptrdiff_t src_stride,
1193
+ uint8_t* dst_ptr,
1194
+ int dst_width) {
1195
+ size_t w = (size_t)dst_width / 3u;
1196
+ const uint16_t coeff_a = (65536u / 9u);
1197
+ const uint16_t coeff_b = (65536u / 6u);
1198
+ assert((dst_width % 3 == 0) && (dst_width > 0));
1199
+ do {
1200
+ vuint8m1_t v_s0, v_s1, v_s2, v_s3, v_s4, v_s5, v_s6, v_s7;
1201
+ vuint8m1_t v_t0, v_t1, v_t2, v_t3, v_t4, v_t5, v_t6, v_t7;
1202
+ vuint8m1_t v_u0, v_u1, v_u2, v_u3, v_u4, v_u5, v_u6, v_u7;
1203
+ vuint16m2_t v_e0, v_e1, v_e2, v_e3, v_e4, v_e;
1204
+ vuint16m2_t v_f0, v_f1, v_f2, v_f3, v_f4, v_f;
1205
+ vuint16m2_t v_g0, v_g1, v_g2, v_g;
1206
+ vuint8m1_t v_dst_e, v_dst_f, v_dst_g;
1207
+ size_t vl = __riscv_vsetvl_e8m1(w);
1208
+ // s: e00, e10, e20, f00, f10, f20, g00, g10
1209
+ // t: e01, e11, e21, f01, f11, f21, g01, g11
1210
+ // u: e02, e12, e22, f02, f12, f22, g02, g12
1211
+ __riscv_vlseg8e8_v_u8m1(&v_s0, &v_s1, &v_s2, &v_s3, &v_s4, &v_s5, &v_s6,
1212
+ &v_s7, src_ptr, vl);
1213
+ __riscv_vlseg8e8_v_u8m1(&v_t0, &v_t1, &v_t2, &v_t3, &v_t4, &v_t5, &v_t6,
1214
+ &v_t7, src_ptr + src_stride, vl);
1215
+ __riscv_vlseg8e8_v_u8m1(&v_u0, &v_u1, &v_u2, &v_u3, &v_u4, &v_u5, &v_u6,
1216
+ &v_u7, src_ptr + 2 * src_stride, vl);
1217
+ // Calculate sum of [e00, e22]
1218
+ v_e0 = __riscv_vwaddu_vv_u16m2(v_s0, v_t0, vl);
1219
+ v_e1 = __riscv_vwaddu_vv_u16m2(v_s1, v_t1, vl);
1220
+ v_e2 = __riscv_vwaddu_vv_u16m2(v_s2, v_t2, vl);
1221
+ v_e3 = __riscv_vwaddu_vv_u16m2(v_u0, v_u1, vl);
1222
+ v_e4 = __riscv_vwaddu_vx_u16m2(v_u2, 0, vl);
1223
+
1224
+ v_e0 = __riscv_vadd_vv_u16m2(v_e0, v_e1, vl);
1225
+ v_e2 = __riscv_vadd_vv_u16m2(v_e2, v_e3, vl);
1226
+ v_e0 = __riscv_vadd_vv_u16m2(v_e0, v_e4, vl);
1227
+ v_e = __riscv_vadd_vv_u16m2(v_e0, v_e2, vl);
1228
+ // Calculate sum of [f00, f22]
1229
+ v_f0 = __riscv_vwaddu_vv_u16m2(v_s3, v_t3, vl);
1230
+ v_f1 = __riscv_vwaddu_vv_u16m2(v_s4, v_t4, vl);
1231
+ v_f2 = __riscv_vwaddu_vv_u16m2(v_s5, v_t5, vl);
1232
+ v_f3 = __riscv_vwaddu_vv_u16m2(v_u3, v_u4, vl);
1233
+ v_f4 = __riscv_vwaddu_vx_u16m2(v_u5, 0, vl);
1234
+
1235
+ v_f0 = __riscv_vadd_vv_u16m2(v_f0, v_f1, vl);
1236
+ v_f2 = __riscv_vadd_vv_u16m2(v_f2, v_f3, vl);
1237
+ v_f0 = __riscv_vadd_vv_u16m2(v_f0, v_f4, vl);
1238
+ v_f = __riscv_vadd_vv_u16m2(v_f0, v_f2, vl);
1239
+ // Calculate sum of [g00, g12]
1240
+ v_g0 = __riscv_vwaddu_vv_u16m2(v_s6, v_t6, vl);
1241
+ v_g1 = __riscv_vwaddu_vv_u16m2(v_s7, v_t7, vl);
1242
+ v_g2 = __riscv_vwaddu_vv_u16m2(v_u6, v_u7, vl);
1243
+
1244
+ v_g = __riscv_vadd_vv_u16m2(v_g0, v_g1, vl);
1245
+ v_g = __riscv_vadd_vv_u16m2(v_g, v_g2, vl);
1246
+
1247
+ // Average in 16-bit fixed-point
1248
+ v_e = __riscv_vmulhu_vx_u16m2(v_e, coeff_a, vl);
1249
+ v_f = __riscv_vmulhu_vx_u16m2(v_f, coeff_a, vl);
1250
+ v_g = __riscv_vmulhu_vx_u16m2(v_g, coeff_b, vl);
1251
+
1252
+ v_dst_e = __riscv_vnsrl_wx_u8m1(v_e, 0, vl);
1253
+ v_dst_f = __riscv_vnsrl_wx_u8m1(v_f, 0, vl);
1254
+ v_dst_g = __riscv_vnsrl_wx_u8m1(v_g, 0, vl);
1255
+ __riscv_vsseg3e8_v_u8m1(dst_ptr, v_dst_e, v_dst_f, v_dst_g, vl);
1256
+ w -= vl;
1257
+ src_ptr += 8 * vl;
1258
+ dst_ptr += 3 * vl;
1259
+ } while (w > 0);
1260
+ }
1261
+ #endif
1262
+ #endif
1263
+
1264
+ // ScaleUVRowUp2_(Bi)linear_RVV function is equal to other platforms'
1265
+ // ScaleRowUp2_(Bi)linear_Any_XXX. We process entire row in this function. Other
1266
+ // platforms only implement non-edge part of image and process edge with scalar.
1267
+
1268
+ #ifdef HAS_SCALEROWUP2_LINEAR_RVV
1269
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1270
+ void ScaleRowUp2_Linear_RVV(const uint8_t* src_ptr,
1271
+ uint8_t* dst_ptr,
1272
+ int dst_width) {
1273
+ size_t work_width = (size_t)dst_width - 1u;
1274
+ size_t src_width = work_width >> 1u;
1275
+ const uint8_t* work_src_ptr = src_ptr;
1276
+ uint8_t* work_dst_ptr = dst_ptr + 1;
1277
+ size_t vl = __riscv_vsetvlmax_e8m4();
1278
+ vuint8m4_t v_3 = __riscv_vmv_v_x_u8m4(3, vl);
1279
+ dst_ptr[0] = src_ptr[0];
1280
+ while (src_width > 0) {
1281
+ vuint8m4_t v_src0, v_src1, v_dst_odd, v_dst_even;
1282
+ vuint16m8_t v_src0_u16, v_src1_u16;
1283
+ vuint8m4x2_t v_dst;
1284
+ size_t vl = __riscv_vsetvl_e8m4(src_width);
1285
+ v_src0 = __riscv_vle8_v_u8m4(work_src_ptr, vl);
1286
+ v_src1 = __riscv_vle8_v_u8m4(work_src_ptr + 1, vl);
1287
+
1288
+ v_src0_u16 = __riscv_vwaddu_vx_u16m8(v_src0, 2, vl);
1289
+ v_src1_u16 = __riscv_vwaddu_vx_u16m8(v_src1, 2, vl);
1290
+ v_src0_u16 = __riscv_vwmaccu_vv_u16m8(v_src0_u16, v_3, v_src1, vl);
1291
+ v_src1_u16 = __riscv_vwmaccu_vv_u16m8(v_src1_u16, v_3, v_src0, vl);
1292
+
1293
+ v_dst_odd = __riscv_vnsrl_wx_u8m4(v_src0_u16, 2, vl);
1294
+ v_dst_even = __riscv_vnsrl_wx_u8m4(v_src1_u16, 2, vl);
1295
+
1296
+ v_dst = __riscv_vcreate_v_u8m4x2(v_dst_even, v_dst_odd);
1297
+ __riscv_vsseg2e8_v_u8m4x2(work_dst_ptr, v_dst, vl);
1298
+
1299
+ src_width -= vl;
1300
+ work_src_ptr += vl;
1301
+ work_dst_ptr += 2 * vl;
1302
+ }
1303
+ dst_ptr[dst_width - 1] = src_ptr[(dst_width - 1) / 2];
1304
+ }
1305
+ #else
1306
+ void ScaleRowUp2_Linear_RVV(const uint8_t* src_ptr,
1307
+ uint8_t* dst_ptr,
1308
+ int dst_width) {
1309
+ size_t work_width = (size_t)dst_width - 1u;
1310
+ size_t src_width = work_width >> 1u;
1311
+ const uint8_t* work_src_ptr = src_ptr;
1312
+ uint8_t* work_dst_ptr = dst_ptr + 1;
1313
+ size_t vl = __riscv_vsetvlmax_e8m4();
1314
+ vuint8m4_t v_3 = __riscv_vmv_v_x_u8m4(3, vl);
1315
+ dst_ptr[0] = src_ptr[0];
1316
+ while (src_width > 0) {
1317
+ vuint8m4_t v_src0, v_src1, v_dst_odd, v_dst_even;
1318
+ vuint16m8_t v_src0_u16, v_src1_u16;
1319
+ size_t vl = __riscv_vsetvl_e8m4(src_width);
1320
+ v_src0 = __riscv_vle8_v_u8m4(work_src_ptr, vl);
1321
+ v_src1 = __riscv_vle8_v_u8m4(work_src_ptr + 1, vl);
1322
+
1323
+ v_src0_u16 = __riscv_vwaddu_vx_u16m8(v_src0, 2, vl);
1324
+ v_src1_u16 = __riscv_vwaddu_vx_u16m8(v_src1, 2, vl);
1325
+ v_src0_u16 = __riscv_vwmaccu_vv_u16m8(v_src0_u16, v_3, v_src1, vl);
1326
+ v_src1_u16 = __riscv_vwmaccu_vv_u16m8(v_src1_u16, v_3, v_src0, vl);
1327
+
1328
+ v_dst_odd = __riscv_vnsrl_wx_u8m4(v_src0_u16, 2, vl);
1329
+ v_dst_even = __riscv_vnsrl_wx_u8m4(v_src1_u16, 2, vl);
1330
+
1331
+ __riscv_vsseg2e8_v_u8m4(work_dst_ptr, v_dst_even, v_dst_odd, vl);
1332
+
1333
+ src_width -= vl;
1334
+ work_src_ptr += vl;
1335
+ work_dst_ptr += 2 * vl;
1336
+ }
1337
+ dst_ptr[dst_width - 1] = src_ptr[(dst_width - 1) / 2];
1338
+ }
1339
+ #endif
1340
+ #endif
1341
+
1342
+ #ifdef HAS_SCALEROWUP2_BILINEAR_RVV
1343
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1344
+ void ScaleRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
1345
+ ptrdiff_t src_stride,
1346
+ uint8_t* dst_ptr,
1347
+ ptrdiff_t dst_stride,
1348
+ int dst_width) {
1349
+ size_t work_width = ((size_t)dst_width - 1u) & ~1u;
1350
+ size_t src_width = work_width >> 1u;
1351
+ const uint8_t* work_s = src_ptr;
1352
+ const uint8_t* work_t = src_ptr + src_stride;
1353
+ const uint8_t* s = work_s;
1354
+ const uint8_t* t = work_t;
1355
+ uint8_t* d = dst_ptr;
1356
+ uint8_t* e = dst_ptr + dst_stride;
1357
+ uint8_t* work_d = d + 1;
1358
+ uint8_t* work_e = e + 1;
1359
+ size_t vl = __riscv_vsetvlmax_e16m4();
1360
+ vuint16m4_t v_3_u16 = __riscv_vmv_v_x_u16m4(3, vl);
1361
+ vuint8m2_t v_3_u8 = __riscv_vmv_v_x_u8m2(3, vl);
1362
+ d[0] = (3 * s[0] + t[0] + 2) >> 2;
1363
+ e[0] = (s[0] + 3 * t[0] + 2) >> 2;
1364
+ while (src_width > 0) {
1365
+ vuint8m2_t v_s0, v_s1, v_t0, v_t1;
1366
+ vuint16m4_t v_s0_u16, v_s1_u16, v_t0_u16, v_t1_u16;
1367
+ vuint16m4_t v_t0_u16_, v_t1_u16_;
1368
+ vuint8m2_t v_dst0_even, v_dst0_odd, v_dst1_even, v_dst1_odd;
1369
+ vuint8m2x2_t v_dst0, v_dst1;
1370
+ size_t vl = __riscv_vsetvl_e8m2(src_width);
1371
+ v_s0 = __riscv_vle8_v_u8m2(work_s, vl);
1372
+ v_s1 = __riscv_vle8_v_u8m2(work_s + 1, vl);
1373
+
1374
+ v_s0_u16 = __riscv_vwaddu_vx_u16m4(v_s0, 2, vl);
1375
+ v_s1_u16 = __riscv_vwaddu_vx_u16m4(v_s1, 2, vl);
1376
+ v_s0_u16 = __riscv_vwmaccu_vv_u16m4(v_s0_u16, v_3_u8, v_s1, vl);
1377
+ v_s1_u16 = __riscv_vwmaccu_vv_u16m4(v_s1_u16, v_3_u8, v_s0, vl);
1378
+
1379
+ v_t0 = __riscv_vle8_v_u8m2(work_t, vl);
1380
+ v_t1 = __riscv_vle8_v_u8m2(work_t + 1, vl);
1381
+
1382
+ v_t0_u16 = __riscv_vwaddu_vx_u16m4(v_t0, 2, vl);
1383
+ v_t1_u16 = __riscv_vwaddu_vx_u16m4(v_t1, 2, vl);
1384
+ v_t0_u16 = __riscv_vwmaccu_vv_u16m4(v_t0_u16, v_3_u8, v_t1, vl);
1385
+ v_t1_u16 = __riscv_vwmaccu_vv_u16m4(v_t1_u16, v_3_u8, v_t0, vl);
1386
+
1387
+ v_t0_u16_ = __riscv_vmv_v_v_u16m4(v_t0_u16, vl);
1388
+ v_t1_u16_ = __riscv_vmv_v_v_u16m4(v_t1_u16, vl);
1389
+
1390
+ v_t0_u16 = __riscv_vmacc_vv_u16m4(v_t0_u16, v_3_u16, v_s0_u16, vl);
1391
+ v_t1_u16 = __riscv_vmacc_vv_u16m4(v_t1_u16, v_3_u16, v_s1_u16, vl);
1392
+ v_s0_u16 = __riscv_vmacc_vv_u16m4(v_s0_u16, v_3_u16, v_t0_u16_, vl);
1393
+ v_s1_u16 = __riscv_vmacc_vv_u16m4(v_s1_u16, v_3_u16, v_t1_u16_, vl);
1394
+
1395
+ v_dst0_odd = __riscv_vnsrl_wx_u8m2(v_t0_u16, 4, vl);
1396
+ v_dst0_even = __riscv_vnsrl_wx_u8m2(v_t1_u16, 4, vl);
1397
+ v_dst1_odd = __riscv_vnsrl_wx_u8m2(v_s0_u16, 4, vl);
1398
+ v_dst1_even = __riscv_vnsrl_wx_u8m2(v_s1_u16, 4, vl);
1399
+
1400
+ v_dst0 = __riscv_vcreate_v_u8m2x2(v_dst0_even, v_dst0_odd);
1401
+ __riscv_vsseg2e8_v_u8m2x2(work_d, v_dst0, vl);
1402
+ v_dst1 = __riscv_vcreate_v_u8m2x2(v_dst1_even, v_dst1_odd);
1403
+ __riscv_vsseg2e8_v_u8m2x2(work_e, v_dst1, vl);
1404
+ src_width -= vl;
1405
+ work_s += vl;
1406
+ work_t += vl;
1407
+ work_d += 2 * vl;
1408
+ work_e += 2 * vl;
1409
+ }
1410
+ d[dst_width - 1] =
1411
+ (3 * s[(dst_width - 1) / 2] + t[(dst_width - 1) / 2] + 2) >> 2;
1412
+ e[dst_width - 1] =
1413
+ (s[(dst_width - 1) / 2] + 3 * t[(dst_width - 1) / 2] + 2) >> 2;
1414
+ }
1415
+ #else
1416
+ void ScaleRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
1417
+ ptrdiff_t src_stride,
1418
+ uint8_t* dst_ptr,
1419
+ ptrdiff_t dst_stride,
1420
+ int dst_width) {
1421
+ size_t work_width = ((size_t)dst_width - 1u) & ~1u;
1422
+ size_t src_width = work_width >> 1u;
1423
+ const uint8_t* work_s = src_ptr;
1424
+ const uint8_t* work_t = src_ptr + src_stride;
1425
+ const uint8_t* s = work_s;
1426
+ const uint8_t* t = work_t;
1427
+ uint8_t* d = dst_ptr;
1428
+ uint8_t* e = dst_ptr + dst_stride;
1429
+ uint8_t* work_d = d + 1;
1430
+ uint8_t* work_e = e + 1;
1431
+ size_t vl = __riscv_vsetvlmax_e16m4();
1432
+ vuint16m4_t v_3_u16 = __riscv_vmv_v_x_u16m4(3, vl);
1433
+ vuint8m2_t v_3_u8 = __riscv_vmv_v_x_u8m2(3, vl);
1434
+ d[0] = (3 * s[0] + t[0] + 2) >> 2;
1435
+ e[0] = (s[0] + 3 * t[0] + 2) >> 2;
1436
+ while (src_width > 0) {
1437
+ vuint8m2_t v_s0, v_s1, v_t0, v_t1;
1438
+ vuint16m4_t v_s0_u16, v_s1_u16, v_t0_u16, v_t1_u16;
1439
+ vuint16m4_t v_t0_u16_, v_t1_u16_;
1440
+ vuint8m2_t v_dst0_even, v_dst0_odd, v_dst1_even, v_dst1_odd;
1441
+ size_t vl = __riscv_vsetvl_e8m2(src_width);
1442
+ v_s0 = __riscv_vle8_v_u8m2(work_s, vl);
1443
+ v_s1 = __riscv_vle8_v_u8m2(work_s + 1, vl);
1444
+
1445
+ v_s0_u16 = __riscv_vwaddu_vx_u16m4(v_s0, 2, vl);
1446
+ v_s1_u16 = __riscv_vwaddu_vx_u16m4(v_s1, 2, vl);
1447
+ v_s0_u16 = __riscv_vwmaccu_vv_u16m4(v_s0_u16, v_3_u8, v_s1, vl);
1448
+ v_s1_u16 = __riscv_vwmaccu_vv_u16m4(v_s1_u16, v_3_u8, v_s0, vl);
1449
+
1450
+ v_t0 = __riscv_vle8_v_u8m2(work_t, vl);
1451
+ v_t1 = __riscv_vle8_v_u8m2(work_t + 1, vl);
1452
+
1453
+ v_t0_u16 = __riscv_vwaddu_vx_u16m4(v_t0, 2, vl);
1454
+ v_t1_u16 = __riscv_vwaddu_vx_u16m4(v_t1, 2, vl);
1455
+ v_t0_u16 = __riscv_vwmaccu_vv_u16m4(v_t0_u16, v_3_u8, v_t1, vl);
1456
+ v_t1_u16 = __riscv_vwmaccu_vv_u16m4(v_t1_u16, v_3_u8, v_t0, vl);
1457
+
1458
+ v_t0_u16_ = __riscv_vmv_v_v_u16m4(v_t0_u16, vl);
1459
+ v_t1_u16_ = __riscv_vmv_v_v_u16m4(v_t1_u16, vl);
1460
+
1461
+ v_t0_u16 = __riscv_vmacc_vv_u16m4(v_t0_u16, v_3_u16, v_s0_u16, vl);
1462
+ v_t1_u16 = __riscv_vmacc_vv_u16m4(v_t1_u16, v_3_u16, v_s1_u16, vl);
1463
+ v_s0_u16 = __riscv_vmacc_vv_u16m4(v_s0_u16, v_3_u16, v_t0_u16_, vl);
1464
+ v_s1_u16 = __riscv_vmacc_vv_u16m4(v_s1_u16, v_3_u16, v_t1_u16_, vl);
1465
+
1466
+ v_dst0_odd = __riscv_vnsrl_wx_u8m2(v_t0_u16, 4, vl);
1467
+ v_dst0_even = __riscv_vnsrl_wx_u8m2(v_t1_u16, 4, vl);
1468
+ v_dst1_odd = __riscv_vnsrl_wx_u8m2(v_s0_u16, 4, vl);
1469
+ v_dst1_even = __riscv_vnsrl_wx_u8m2(v_s1_u16, 4, vl);
1470
+
1471
+ __riscv_vsseg2e8_v_u8m2(work_d, v_dst0_even, v_dst0_odd, vl);
1472
+ __riscv_vsseg2e8_v_u8m2(work_e, v_dst1_even, v_dst1_odd, vl);
1473
+
1474
+ src_width -= vl;
1475
+ work_s += vl;
1476
+ work_t += vl;
1477
+ work_d += 2 * vl;
1478
+ work_e += 2 * vl;
1479
+ }
1480
+ d[dst_width - 1] =
1481
+ (3 * s[(dst_width - 1) / 2] + t[(dst_width - 1) / 2] + 2) >> 2;
1482
+ e[dst_width - 1] =
1483
+ (s[(dst_width - 1) / 2] + 3 * t[(dst_width - 1) / 2] + 2) >> 2;
1484
+ }
1485
+ #endif
1486
+ #endif
1487
+
1488
+ #ifdef HAS_SCALEUVROWDOWN2_RVV
1489
+ void ScaleUVRowDown2_RVV(const uint8_t* src_uv,
1490
+ ptrdiff_t src_stride,
1491
+ uint8_t* dst_uv,
1492
+ int dst_width) {
1493
+ size_t w = (size_t)dst_width;
1494
+ const uint32_t* src = (const uint32_t*)src_uv;
1495
+ uint16_t* dst = (uint16_t*)dst_uv;
1496
+ (void)src_stride;
1497
+ do {
1498
+ size_t vl = __riscv_vsetvl_e32m8(w);
1499
+ vuint32m8_t v_data = __riscv_vle32_v_u32m8(src, vl);
1500
+ vuint16m4_t v_u1v1 = __riscv_vnsrl_wx_u16m4(v_data, 16, vl);
1501
+ __riscv_vse16_v_u16m4(dst, v_u1v1, vl);
1502
+ w -= vl;
1503
+ src += vl;
1504
+ dst += vl;
1505
+ } while (w > 0);
1506
+ }
1507
+ #endif
1508
+
1509
+ #ifdef HAS_SCALEUVROWDOWN2LINEAR_RVV
1510
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
1511
+ void ScaleUVRowDown2Linear_RVV(const uint8_t* src_uv,
1512
+ ptrdiff_t src_stride,
1513
+ uint8_t* dst_uv,
1514
+ int dst_width) {
1515
+ size_t w = (size_t)dst_width;
1516
+ const uint16_t* src = (const uint16_t*)src_uv;
1517
+ (void)src_stride;
1518
+ do {
1519
+ size_t vl = __riscv_vsetvl_e16m4(w);
1520
+ vuint16m4x2_t v_src = __riscv_vlseg2e16_v_u16m4x2(src, vl);
1521
+ vuint16m4_t v_u0v0_16 = __riscv_vget_v_u16m4x2_u16m4(v_src, 0);
1522
+ vuint16m4_t v_u1v1_16 = __riscv_vget_v_u16m4x2_u16m4(v_src, 1);
1523
+ vuint8m4_t v_u0v0 = __riscv_vreinterpret_v_u16m4_u8m4(v_u0v0_16);
1524
+ vuint8m4_t v_u1v1 = __riscv_vreinterpret_v_u16m4_u8m4(v_u1v1_16);
1525
+ vuint8m4_t v_avg =
1526
+ __riscv_vaaddu_vv_u8m4(v_u0v0, v_u1v1, __RISCV_VXRM_RNU, vl * 2);
1527
+ __riscv_vse8_v_u8m4(dst_uv, v_avg, vl * 2);
1528
+ w -= vl;
1529
+ src += vl * 2;
1530
+ dst_uv += vl * 2;
1531
+ } while (w > 0);
1532
+ }
1533
+ #else
1534
+ void ScaleUVRowDown2Linear_RVV(const uint8_t* src_uv,
1535
+ ptrdiff_t src_stride,
1536
+ uint8_t* dst_uv,
1537
+ int dst_width) {
1538
+ size_t w = (size_t)dst_width;
1539
+ const uint16_t* src = (const uint16_t*)src_uv;
1540
+ (void)src_stride;
1541
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
1542
+ // register) is set to round-to-nearest-up mode(0).
1543
+ asm volatile("csrwi vxrm, 0");
1544
+ do {
1545
+ vuint8m4_t v_u0v0, v_u1v1, v_avg;
1546
+ vuint16m4_t v_u0v0_16, v_u1v1_16;
1547
+ size_t vl = __riscv_vsetvl_e16m4(w);
1548
+ __riscv_vlseg2e16_v_u16m4(&v_u0v0_16, &v_u1v1_16, src, vl);
1549
+ v_u0v0 = __riscv_vreinterpret_v_u16m4_u8m4(v_u0v0_16);
1550
+ v_u1v1 = __riscv_vreinterpret_v_u16m4_u8m4(v_u1v1_16);
1551
+ // Use round-to-nearest-up mode for averaging add
1552
+ v_avg = __riscv_vaaddu_vv_u8m4(v_u0v0, v_u1v1, vl * 2);
1553
+ __riscv_vse8_v_u8m4(dst_uv, v_avg, vl * 2);
1554
+ w -= vl;
1555
+ src += vl * 2;
1556
+ dst_uv += vl * 2;
1557
+ } while (w > 0);
1558
+ }
1559
+ #endif
1560
+ #endif
1561
+
1562
+ #ifdef HAS_SCALEUVROWDOWN2BOX_RVV
1563
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
1564
+ void ScaleUVRowDown2Box_RVV(const uint8_t* src_uv,
1565
+ ptrdiff_t src_stride,
1566
+ uint8_t* dst_uv,
1567
+ int dst_width) {
1568
+ const uint8_t* src_uv_row1 = src_uv + src_stride;
1569
+ size_t w = (size_t)dst_width;
1570
+ do {
1571
+ size_t vl = __riscv_vsetvl_e8m2(w);
1572
+ vuint8m2x4_t v_s = __riscv_vlseg4e8_v_u8m2x4(src_uv, vl);
1573
+ vuint8m2_t v_u0_row0 = __riscv_vget_v_u8m2x4_u8m2(v_s, 0);
1574
+ vuint8m2_t v_v0_row0 = __riscv_vget_v_u8m2x4_u8m2(v_s, 1);
1575
+ vuint8m2_t v_u1_row0 = __riscv_vget_v_u8m2x4_u8m2(v_s, 2);
1576
+ vuint8m2_t v_v1_row0 = __riscv_vget_v_u8m2x4_u8m2(v_s, 3);
1577
+ vuint8m2x4_t v_t = __riscv_vlseg4e8_v_u8m2x4(src_uv_row1, vl);
1578
+ vuint8m2_t v_u0_row1 = __riscv_vget_v_u8m2x4_u8m2(v_t, 0);
1579
+ vuint8m2_t v_v0_row1 = __riscv_vget_v_u8m2x4_u8m2(v_t, 1);
1580
+ vuint8m2_t v_u1_row1 = __riscv_vget_v_u8m2x4_u8m2(v_t, 2);
1581
+ vuint8m2_t v_v1_row1 = __riscv_vget_v_u8m2x4_u8m2(v_t, 3);
1582
+
1583
+ vuint16m4_t v_u0u1_row0 = __riscv_vwaddu_vv_u16m4(v_u0_row0, v_u1_row0, vl);
1584
+ vuint16m4_t v_u0u1_row1 = __riscv_vwaddu_vv_u16m4(v_u0_row1, v_u1_row1, vl);
1585
+ vuint16m4_t v_v0v1_row0 = __riscv_vwaddu_vv_u16m4(v_v0_row0, v_v1_row0, vl);
1586
+ vuint16m4_t v_v0v1_row1 = __riscv_vwaddu_vv_u16m4(v_v0_row1, v_v1_row1, vl);
1587
+ vuint16m4_t v_sum0 = __riscv_vadd_vv_u16m4(v_u0u1_row0, v_u0u1_row1, vl);
1588
+ vuint16m4_t v_sum1 = __riscv_vadd_vv_u16m4(v_v0v1_row0, v_v0v1_row1, vl);
1589
+ vuint8m2_t v_dst_u =
1590
+ __riscv_vnclipu_wx_u8m2(v_sum0, 2, __RISCV_VXRM_RNU, vl);
1591
+ vuint8m2_t v_dst_v =
1592
+ __riscv_vnclipu_wx_u8m2(v_sum1, 2, __RISCV_VXRM_RNU, vl);
1593
+
1594
+ vuint8m2x2_t v_dst_uv = __riscv_vcreate_v_u8m2x2(v_dst_u, v_dst_v);
1595
+ __riscv_vsseg2e8_v_u8m2x2(dst_uv, v_dst_uv, vl);
1596
+
1597
+ dst_uv += 2 * vl;
1598
+ src_uv += 4 * vl;
1599
+ w -= vl;
1600
+ src_uv_row1 += 4 * vl;
1601
+ } while (w > 0);
1602
+ }
1603
+ #else
1604
+ void ScaleUVRowDown2Box_RVV(const uint8_t* src_uv,
1605
+ ptrdiff_t src_stride,
1606
+ uint8_t* dst_uv,
1607
+ int dst_width) {
1608
+ const uint8_t* src_uv_row1 = src_uv + src_stride;
1609
+ size_t w = (size_t)dst_width;
1610
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
1611
+ // register) is set to round-to-nearest-up mode(0).
1612
+ asm volatile("csrwi vxrm, 0");
1613
+ do {
1614
+ vuint8m2_t v_u0_row0, v_v0_row0, v_u1_row0, v_v1_row0;
1615
+ vuint8m2_t v_u0_row1, v_v0_row1, v_u1_row1, v_v1_row1;
1616
+ vuint16m4_t v_u0u1_row0, v_u0u1_row1, v_v0v1_row0, v_v0v1_row1;
1617
+ vuint16m4_t v_sum0, v_sum1;
1618
+ vuint8m2_t v_dst_u, v_dst_v;
1619
+ size_t vl = __riscv_vsetvl_e8m2(w);
1620
+
1621
+ __riscv_vlseg4e8_v_u8m2(&v_u0_row0, &v_v0_row0, &v_u1_row0, &v_v1_row0,
1622
+ src_uv, vl);
1623
+ __riscv_vlseg4e8_v_u8m2(&v_u0_row1, &v_v0_row1, &v_u1_row1, &v_v1_row1,
1624
+ src_uv_row1, vl);
1625
+
1626
+ v_u0u1_row0 = __riscv_vwaddu_vv_u16m4(v_u0_row0, v_u1_row0, vl);
1627
+ v_u0u1_row1 = __riscv_vwaddu_vv_u16m4(v_u0_row1, v_u1_row1, vl);
1628
+ v_v0v1_row0 = __riscv_vwaddu_vv_u16m4(v_v0_row0, v_v1_row0, vl);
1629
+ v_v0v1_row1 = __riscv_vwaddu_vv_u16m4(v_v0_row1, v_v1_row1, vl);
1630
+
1631
+ v_sum0 = __riscv_vadd_vv_u16m4(v_u0u1_row0, v_u0u1_row1, vl);
1632
+ v_sum1 = __riscv_vadd_vv_u16m4(v_v0v1_row0, v_v0v1_row1, vl);
1633
+ // Use round-to-nearest-up mode for vnclip
1634
+ v_dst_u = __riscv_vnclipu_wx_u8m2(v_sum0, 2, vl);
1635
+ v_dst_v = __riscv_vnclipu_wx_u8m2(v_sum1, 2, vl);
1636
+
1637
+ __riscv_vsseg2e8_v_u8m2(dst_uv, v_dst_u, v_dst_v, vl);
1638
+
1639
+ dst_uv += 2 * vl;
1640
+ src_uv += 4 * vl;
1641
+ w -= vl;
1642
+ src_uv_row1 += 4 * vl;
1643
+ } while (w > 0);
1644
+ }
1645
+ #endif
1646
+ #endif
1647
+
1648
+ #ifdef HAS_SCALEUVROWDOWN4_RVV
1649
+ void ScaleUVRowDown4_RVV(const uint8_t* src_uv,
1650
+ ptrdiff_t src_stride,
1651
+ int src_stepx,
1652
+ uint8_t* dst_uv,
1653
+ int dst_width) {
1654
+ // Overflow will never happen here, since sizeof(size_t)/sizeof(int)=2.
1655
+ // dst_width = src_width / 4 and src_width is also int.
1656
+ size_t w = (size_t)dst_width * 8;
1657
+ (void)src_stride;
1658
+ (void)src_stepx;
1659
+ do {
1660
+ size_t vl = __riscv_vsetvl_e8m8(w);
1661
+ vuint8m8_t v_row = __riscv_vle8_v_u8m8(src_uv, vl);
1662
+ vuint64m8_t v_row_64 = __riscv_vreinterpret_v_u8m8_u64m8(v_row);
1663
+ // Narrowing without clipping
1664
+ vuint32m4_t v_tmp = __riscv_vncvt_x_x_w_u32m4(v_row_64, vl / 8);
1665
+ vuint16m2_t v_dst_16 = __riscv_vncvt_x_x_w_u16m2(v_tmp, vl / 8);
1666
+ vuint8m2_t v_dst = __riscv_vreinterpret_v_u16m2_u8m2(v_dst_16);
1667
+ __riscv_vse8_v_u8m2(dst_uv, v_dst, vl / 4);
1668
+ w -= vl;
1669
+ src_uv += vl;
1670
+ dst_uv += vl / 4;
1671
+ } while (w > 0);
1672
+ }
1673
+ #endif
1674
+
1675
+ #ifdef HAS_SCALEUVROWDOWNEVEN_RVV
1676
+ void ScaleUVRowDownEven_RVV(const uint8_t* src_uv,
1677
+ ptrdiff_t src_stride,
1678
+ int src_stepx,
1679
+ uint8_t* dst_uv,
1680
+ int dst_width) {
1681
+ size_t w = (size_t)dst_width;
1682
+ const ptrdiff_t stride_byte = (ptrdiff_t)src_stepx * 2;
1683
+ const uint16_t* src = (const uint16_t*)(src_uv);
1684
+ uint16_t* dst = (uint16_t*)(dst_uv);
1685
+ (void)src_stride;
1686
+ do {
1687
+ size_t vl = __riscv_vsetvl_e16m8(w);
1688
+ vuint16m8_t v_row = __riscv_vlse16_v_u16m8(src, stride_byte, vl);
1689
+ __riscv_vse16_v_u16m8(dst, v_row, vl);
1690
+ w -= vl;
1691
+ src += vl * src_stepx;
1692
+ dst += vl;
1693
+ } while (w > 0);
1694
+ }
1695
+ #endif
1696
+
1697
+ // ScaleUVRowUp2_(Bi)linear_RVV function is equal to other platforms'
1698
+ // ScaleUVRowUp2_(Bi)linear_Any_XXX. We process entire row in this function.
1699
+ // Other platforms only implement non-edge part of image and process edge with
1700
+ // scalar.
1701
+
1702
+ #ifdef HAS_SCALEUVROWUP2_LINEAR_RVV
1703
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1704
+ void ScaleUVRowUp2_Linear_RVV(const uint8_t* src_ptr,
1705
+ uint8_t* dst_ptr,
1706
+ int dst_width) {
1707
+ size_t work_width = ((size_t)dst_width - 1u) & ~1u;
1708
+ uint16_t* work_dst_ptr = (uint16_t*)dst_ptr + 1;
1709
+ const uint8_t* work_src_ptr = src_ptr;
1710
+ size_t vl = __riscv_vsetvlmax_e8m4();
1711
+ vuint8m4_t v_3_u8 = __riscv_vmv_v_x_u8m4(3, vl);
1712
+ dst_ptr[0] = src_ptr[0];
1713
+ dst_ptr[1] = src_ptr[1];
1714
+ while (work_width > 0) {
1715
+ vuint8m4_t v_uv0, v_uv1, v_dst_odd_u8, v_dst_even_u8;
1716
+ vuint16m4_t v_dst_odd, v_dst_even;
1717
+ vuint16m8_t v_uv0_u16, v_uv1_u16;
1718
+ vuint16m4x2_t v_dst;
1719
+ size_t vl = __riscv_vsetvl_e8m4(work_width);
1720
+ v_uv0 = __riscv_vle8_v_u8m4(work_src_ptr, vl);
1721
+ v_uv1 = __riscv_vle8_v_u8m4(work_src_ptr + 2, vl);
1722
+
1723
+ v_uv0_u16 = __riscv_vwaddu_vx_u16m8(v_uv0, 2, vl);
1724
+ v_uv1_u16 = __riscv_vwaddu_vx_u16m8(v_uv1, 2, vl);
1725
+
1726
+ v_uv0_u16 = __riscv_vwmaccu_vv_u16m8(v_uv0_u16, v_3_u8, v_uv1, vl);
1727
+ v_uv1_u16 = __riscv_vwmaccu_vv_u16m8(v_uv1_u16, v_3_u8, v_uv0, vl);
1728
+
1729
+ v_dst_odd_u8 = __riscv_vnsrl_wx_u8m4(v_uv0_u16, 2, vl);
1730
+ v_dst_even_u8 = __riscv_vnsrl_wx_u8m4(v_uv1_u16, 2, vl);
1731
+
1732
+ v_dst_even = __riscv_vreinterpret_v_u8m4_u16m4(v_dst_even_u8);
1733
+ v_dst_odd = __riscv_vreinterpret_v_u8m4_u16m4(v_dst_odd_u8);
1734
+
1735
+ v_dst = __riscv_vcreate_v_u16m4x2(v_dst_even, v_dst_odd);
1736
+ __riscv_vsseg2e16_v_u16m4x2(work_dst_ptr, v_dst, vl / 2);
1737
+
1738
+ work_width -= vl;
1739
+ work_src_ptr += vl;
1740
+ work_dst_ptr += vl;
1741
+ }
1742
+ dst_ptr[2 * dst_width - 2] = src_ptr[((dst_width + 1) & ~1) - 2];
1743
+ dst_ptr[2 * dst_width - 1] = src_ptr[((dst_width + 1) & ~1) - 1];
1744
+ }
1745
+ #else
1746
+ void ScaleUVRowUp2_Linear_RVV(const uint8_t* src_ptr,
1747
+ uint8_t* dst_ptr,
1748
+ int dst_width) {
1749
+ size_t work_width = ((size_t)dst_width - 1u) & ~1u;
1750
+ uint16_t* work_dst_ptr = (uint16_t*)dst_ptr + 1;
1751
+ const uint8_t* work_src_ptr = src_ptr;
1752
+ size_t vl = __riscv_vsetvlmax_e8m4();
1753
+ vuint8m4_t v_3_u8 = __riscv_vmv_v_x_u8m4(3, vl);
1754
+ dst_ptr[0] = src_ptr[0];
1755
+ dst_ptr[1] = src_ptr[1];
1756
+ while (work_width > 0) {
1757
+ vuint8m4_t v_uv0, v_uv1, v_dst_odd_u8, v_dst_even_u8;
1758
+ vuint16m4_t v_dst_odd, v_dst_even;
1759
+ vuint16m8_t v_uv0_u16, v_uv1_u16;
1760
+ size_t vl = __riscv_vsetvl_e8m4(work_width);
1761
+ v_uv0 = __riscv_vle8_v_u8m4(work_src_ptr, vl);
1762
+ v_uv1 = __riscv_vle8_v_u8m4(work_src_ptr + 2, vl);
1763
+
1764
+ v_uv0_u16 = __riscv_vwaddu_vx_u16m8(v_uv0, 2, vl);
1765
+ v_uv1_u16 = __riscv_vwaddu_vx_u16m8(v_uv1, 2, vl);
1766
+
1767
+ v_uv0_u16 = __riscv_vwmaccu_vv_u16m8(v_uv0_u16, v_3_u8, v_uv1, vl);
1768
+ v_uv1_u16 = __riscv_vwmaccu_vv_u16m8(v_uv1_u16, v_3_u8, v_uv0, vl);
1769
+
1770
+ v_dst_odd_u8 = __riscv_vnsrl_wx_u8m4(v_uv0_u16, 2, vl);
1771
+ v_dst_even_u8 = __riscv_vnsrl_wx_u8m4(v_uv1_u16, 2, vl);
1772
+
1773
+ v_dst_even = __riscv_vreinterpret_v_u8m4_u16m4(v_dst_even_u8);
1774
+ v_dst_odd = __riscv_vreinterpret_v_u8m4_u16m4(v_dst_odd_u8);
1775
+
1776
+ __riscv_vsseg2e16_v_u16m4(work_dst_ptr, v_dst_even, v_dst_odd, vl / 2);
1777
+
1778
+ work_width -= vl;
1779
+ work_src_ptr += vl;
1780
+ work_dst_ptr += vl;
1781
+ }
1782
+ dst_ptr[2 * dst_width - 2] = src_ptr[((dst_width + 1) & ~1) - 2];
1783
+ dst_ptr[2 * dst_width - 1] = src_ptr[((dst_width + 1) & ~1) - 1];
1784
+ }
1785
+ #endif
1786
+ #endif
1787
+
1788
+ #ifdef HAS_SCALEUVROWUP2_BILINEAR_RVV
1789
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1790
+ void ScaleUVRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
1791
+ ptrdiff_t src_stride,
1792
+ uint8_t* dst_ptr,
1793
+ ptrdiff_t dst_stride,
1794
+ int dst_width) {
1795
+ size_t work_width = ((size_t)dst_width - 1u) & ~1u;
1796
+ const uint8_t* work_s = src_ptr;
1797
+ const uint8_t* work_t = src_ptr + src_stride;
1798
+ const uint8_t* s = work_s;
1799
+ const uint8_t* t = work_t;
1800
+ uint8_t* d = dst_ptr;
1801
+ uint8_t* e = dst_ptr + dst_stride;
1802
+ uint16_t* work_d = (uint16_t*)d + 1;
1803
+ uint16_t* work_e = (uint16_t*)e + 1;
1804
+ size_t vl = __riscv_vsetvlmax_e16m4();
1805
+ vuint16m4_t v_3_u16 = __riscv_vmv_v_x_u16m4(3, vl);
1806
+ vuint8m2_t v_3_u8 = __riscv_vmv_v_x_u8m2(3, vl);
1807
+ d[0] = (3 * s[0] + t[0] + 2) >> 2;
1808
+ e[0] = (s[0] + 3 * t[0] + 2) >> 2;
1809
+ d[1] = (3 * s[1] + t[1] + 2) >> 2;
1810
+ e[1] = (s[1] + 3 * t[1] + 2) >> 2;
1811
+ while (work_width > 0) {
1812
+ vuint8m2_t v_s0, v_s1, v_t0, v_t1;
1813
+ vuint16m4_t v_s0_u16, v_s1_u16, v_t0_u16, v_t1_u16;
1814
+ vuint16m4_t v_t0_u16_, v_t1_u16_;
1815
+ vuint8m2_t v_dst0_odd_u8, v_dst0_even_u8, v_dst1_odd_u8, v_dst1_even_u8;
1816
+ vuint16m2_t v_dst0_even, v_dst0_odd, v_dst1_even, v_dst1_odd;
1817
+ vuint16m2x2_t v_dst0, v_dst1;
1818
+ size_t vl = __riscv_vsetvl_e8m2(work_width);
1819
+ v_s0 = __riscv_vle8_v_u8m2(work_s, vl);
1820
+ v_s1 = __riscv_vle8_v_u8m2(work_s + 2, vl);
1821
+
1822
+ v_s0_u16 = __riscv_vwaddu_vx_u16m4(v_s0, 2, vl);
1823
+ v_s1_u16 = __riscv_vwaddu_vx_u16m4(v_s1, 2, vl);
1824
+ v_s0_u16 = __riscv_vwmaccu_vv_u16m4(v_s0_u16, v_3_u8, v_s1, vl);
1825
+ v_s1_u16 = __riscv_vwmaccu_vv_u16m4(v_s1_u16, v_3_u8, v_s0, vl);
1826
+
1827
+ v_t0 = __riscv_vle8_v_u8m2(work_t, vl);
1828
+ v_t1 = __riscv_vle8_v_u8m2(work_t + 2, vl);
1829
+
1830
+ v_t0_u16 = __riscv_vwaddu_vx_u16m4(v_t0, 2, vl);
1831
+ v_t1_u16 = __riscv_vwaddu_vx_u16m4(v_t1, 2, vl);
1832
+ v_t0_u16 = __riscv_vwmaccu_vv_u16m4(v_t0_u16, v_3_u8, v_t1, vl);
1833
+ v_t1_u16 = __riscv_vwmaccu_vv_u16m4(v_t1_u16, v_3_u8, v_t0, vl);
1834
+
1835
+ v_t0_u16_ = __riscv_vmv_v_v_u16m4(v_t0_u16, vl);
1836
+ v_t1_u16_ = __riscv_vmv_v_v_u16m4(v_t1_u16, vl);
1837
+
1838
+ v_t0_u16 = __riscv_vmacc_vv_u16m4(v_t0_u16, v_3_u16, v_s0_u16, vl);
1839
+ v_t1_u16 = __riscv_vmacc_vv_u16m4(v_t1_u16, v_3_u16, v_s1_u16, vl);
1840
+ v_s0_u16 = __riscv_vmacc_vv_u16m4(v_s0_u16, v_3_u16, v_t0_u16_, vl);
1841
+ v_s1_u16 = __riscv_vmacc_vv_u16m4(v_s1_u16, v_3_u16, v_t1_u16_, vl);
1842
+
1843
+ v_dst0_odd_u8 = __riscv_vnsrl_wx_u8m2(v_t0_u16, 4, vl);
1844
+ v_dst0_even_u8 = __riscv_vnsrl_wx_u8m2(v_t1_u16, 4, vl);
1845
+ v_dst1_odd_u8 = __riscv_vnsrl_wx_u8m2(v_s0_u16, 4, vl);
1846
+ v_dst1_even_u8 = __riscv_vnsrl_wx_u8m2(v_s1_u16, 4, vl);
1847
+
1848
+ v_dst0_even = __riscv_vreinterpret_v_u8m2_u16m2(v_dst0_even_u8);
1849
+ v_dst0_odd = __riscv_vreinterpret_v_u8m2_u16m2(v_dst0_odd_u8);
1850
+ v_dst1_even = __riscv_vreinterpret_v_u8m2_u16m2(v_dst1_even_u8);
1851
+ v_dst1_odd = __riscv_vreinterpret_v_u8m2_u16m2(v_dst1_odd_u8);
1852
+
1853
+ v_dst0 = __riscv_vcreate_v_u16m2x2(v_dst0_even, v_dst0_odd);
1854
+ __riscv_vsseg2e16_v_u16m2x2(work_d, v_dst0, vl / 2);
1855
+ v_dst1 = __riscv_vcreate_v_u16m2x2(v_dst1_even, v_dst1_odd);
1856
+ __riscv_vsseg2e16_v_u16m2x2(work_e, v_dst1, vl / 2);
1857
+
1858
+ work_width -= vl;
1859
+ work_s += vl;
1860
+ work_t += vl;
1861
+ work_d += vl;
1862
+ work_e += vl;
1863
+ }
1864
+ d[2 * dst_width - 2] =
1865
+ (3 * s[((dst_width + 1) & ~1) - 2] + t[((dst_width + 1) & ~1) - 2] + 2) >>
1866
+ 2;
1867
+ e[2 * dst_width - 2] =
1868
+ (s[((dst_width + 1) & ~1) - 2] + 3 * t[((dst_width + 1) & ~1) - 2] + 2) >>
1869
+ 2;
1870
+ d[2 * dst_width - 1] =
1871
+ (3 * s[((dst_width + 1) & ~1) - 1] + t[((dst_width + 1) & ~1) - 1] + 2) >>
1872
+ 2;
1873
+ e[2 * dst_width - 1] =
1874
+ (s[((dst_width + 1) & ~1) - 1] + 3 * t[((dst_width + 1) & ~1) - 1] + 2) >>
1875
+ 2;
1876
+ }
1877
+ #else
1878
+ void ScaleUVRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
1879
+ ptrdiff_t src_stride,
1880
+ uint8_t* dst_ptr,
1881
+ ptrdiff_t dst_stride,
1882
+ int dst_width) {
1883
+ size_t work_width = ((size_t)dst_width - 1u) & ~1u;
1884
+ const uint8_t* work_s = src_ptr;
1885
+ const uint8_t* work_t = src_ptr + src_stride;
1886
+ const uint8_t* s = work_s;
1887
+ const uint8_t* t = work_t;
1888
+ uint8_t* d = dst_ptr;
1889
+ uint8_t* e = dst_ptr + dst_stride;
1890
+ uint16_t* work_d = (uint16_t*)d + 1;
1891
+ uint16_t* work_e = (uint16_t*)e + 1;
1892
+ size_t vl = __riscv_vsetvlmax_e16m4();
1893
+ vuint16m4_t v_3_u16 = __riscv_vmv_v_x_u16m4(3, vl);
1894
+ vuint8m2_t v_3_u8 = __riscv_vmv_v_x_u8m2(3, vl);
1895
+ d[0] = (3 * s[0] + t[0] + 2) >> 2;
1896
+ e[0] = (s[0] + 3 * t[0] + 2) >> 2;
1897
+ d[1] = (3 * s[1] + t[1] + 2) >> 2;
1898
+ e[1] = (s[1] + 3 * t[1] + 2) >> 2;
1899
+ while (work_width > 0) {
1900
+ vuint8m2_t v_s0, v_s1, v_t0, v_t1;
1901
+ vuint16m4_t v_s0_u16, v_s1_u16, v_t0_u16, v_t1_u16;
1902
+ vuint16m4_t v_t0_u16_, v_t1_u16_;
1903
+ vuint8m2_t v_dst0_odd_u8, v_dst0_even_u8, v_dst1_odd_u8, v_dst1_even_u8;
1904
+ vuint16m2_t v_dst0_even, v_dst0_odd, v_dst1_even, v_dst1_odd;
1905
+ size_t vl = __riscv_vsetvl_e8m2(work_width);
1906
+ v_s0 = __riscv_vle8_v_u8m2(work_s, vl);
1907
+ v_s1 = __riscv_vle8_v_u8m2(work_s + 2, vl);
1908
+
1909
+ v_s0_u16 = __riscv_vwaddu_vx_u16m4(v_s0, 2, vl);
1910
+ v_s1_u16 = __riscv_vwaddu_vx_u16m4(v_s1, 2, vl);
1911
+ v_s0_u16 = __riscv_vwmaccu_vv_u16m4(v_s0_u16, v_3_u8, v_s1, vl);
1912
+ v_s1_u16 = __riscv_vwmaccu_vv_u16m4(v_s1_u16, v_3_u8, v_s0, vl);
1913
+
1914
+ v_t0 = __riscv_vle8_v_u8m2(work_t, vl);
1915
+ v_t1 = __riscv_vle8_v_u8m2(work_t + 2, vl);
1916
+
1917
+ v_t0_u16 = __riscv_vwaddu_vx_u16m4(v_t0, 2, vl);
1918
+ v_t1_u16 = __riscv_vwaddu_vx_u16m4(v_t1, 2, vl);
1919
+ v_t0_u16 = __riscv_vwmaccu_vv_u16m4(v_t0_u16, v_3_u8, v_t1, vl);
1920
+ v_t1_u16 = __riscv_vwmaccu_vv_u16m4(v_t1_u16, v_3_u8, v_t0, vl);
1921
+
1922
+ v_t0_u16_ = __riscv_vmv_v_v_u16m4(v_t0_u16, vl);
1923
+ v_t1_u16_ = __riscv_vmv_v_v_u16m4(v_t1_u16, vl);
1924
+
1925
+ v_t0_u16 = __riscv_vmacc_vv_u16m4(v_t0_u16, v_3_u16, v_s0_u16, vl);
1926
+ v_t1_u16 = __riscv_vmacc_vv_u16m4(v_t1_u16, v_3_u16, v_s1_u16, vl);
1927
+ v_s0_u16 = __riscv_vmacc_vv_u16m4(v_s0_u16, v_3_u16, v_t0_u16_, vl);
1928
+ v_s1_u16 = __riscv_vmacc_vv_u16m4(v_s1_u16, v_3_u16, v_t1_u16_, vl);
1929
+
1930
+ v_dst0_odd_u8 = __riscv_vnsrl_wx_u8m2(v_t0_u16, 4, vl);
1931
+ v_dst0_even_u8 = __riscv_vnsrl_wx_u8m2(v_t1_u16, 4, vl);
1932
+ v_dst1_odd_u8 = __riscv_vnsrl_wx_u8m2(v_s0_u16, 4, vl);
1933
+ v_dst1_even_u8 = __riscv_vnsrl_wx_u8m2(v_s1_u16, 4, vl);
1934
+
1935
+ v_dst0_even = __riscv_vreinterpret_v_u8m2_u16m2(v_dst0_even_u8);
1936
+ v_dst0_odd = __riscv_vreinterpret_v_u8m2_u16m2(v_dst0_odd_u8);
1937
+ v_dst1_even = __riscv_vreinterpret_v_u8m2_u16m2(v_dst1_even_u8);
1938
+ v_dst1_odd = __riscv_vreinterpret_v_u8m2_u16m2(v_dst1_odd_u8);
1939
+
1940
+ __riscv_vsseg2e16_v_u16m2(work_d, v_dst0_even, v_dst0_odd, vl / 2);
1941
+ __riscv_vsseg2e16_v_u16m2(work_e, v_dst1_even, v_dst1_odd, vl / 2);
1942
+
1943
+ work_width -= vl;
1944
+ work_s += vl;
1945
+ work_t += vl;
1946
+ work_d += vl;
1947
+ work_e += vl;
1948
+ }
1949
+ d[2 * dst_width - 2] =
1950
+ (3 * s[((dst_width + 1) & ~1) - 2] + t[((dst_width + 1) & ~1) - 2] + 2) >>
1951
+ 2;
1952
+ e[2 * dst_width - 2] =
1953
+ (s[((dst_width + 1) & ~1) - 2] + 3 * t[((dst_width + 1) & ~1) - 2] + 2) >>
1954
+ 2;
1955
+ d[2 * dst_width - 1] =
1956
+ (3 * s[((dst_width + 1) & ~1) - 1] + t[((dst_width + 1) & ~1) - 1] + 2) >>
1957
+ 2;
1958
+ e[2 * dst_width - 1] =
1959
+ (s[((dst_width + 1) & ~1) - 1] + 3 * t[((dst_width + 1) & ~1) - 1] + 2) >>
1960
+ 2;
1961
+ }
1962
+ #endif
1963
+ #endif
1964
+
1965
+ #ifdef __cplusplus
1966
+ } // extern "C"
1967
+ } // namespace libyuv
1968
+ #endif
1969
+
1970
+ #endif // !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) &&
1971
+ // defined(__clang__)