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,2599 @@
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
+
20
+ // This module is for clang rvv. GCC hasn't supported segment load & store.
21
+ #if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
22
+ defined(__clang__)
23
+ #include <assert.h>
24
+ #include <riscv_vector.h>
25
+
26
+ #ifdef __cplusplus
27
+ namespace libyuv {
28
+ extern "C" {
29
+ #endif
30
+
31
+ #ifdef LIBYUV_RVV_HAS_VXRM_ARG
32
+ // Fill YUV -> RGB conversion constants into vectors
33
+ #define YUVTORGB_SETUP(yuvconst, ub, vr, ug, vg, yg, bb, bg, br) \
34
+ { \
35
+ ub = yuvconst->kUVCoeff[0]; \
36
+ vr = yuvconst->kUVCoeff[1]; \
37
+ ug = yuvconst->kUVCoeff[2]; \
38
+ vg = yuvconst->kUVCoeff[3]; \
39
+ yg = yuvconst->kRGBCoeffBias[0]; \
40
+ bb = yuvconst->kRGBCoeffBias[1] + 32; \
41
+ bg = yuvconst->kRGBCoeffBias[2] - 32; \
42
+ br = yuvconst->kRGBCoeffBias[3] + 32; \
43
+ }
44
+ #else
45
+ // Fill YUV -> RGB conversion constants into vectors
46
+ // NOTE: To match behavior on other platforms, vxrm (fixed-point rounding mode
47
+ // register) is set to round-to-nearest-up mode(0).
48
+ #define YUVTORGB_SETUP(yuvconst, ub, vr, ug, vg, yg, bb, bg, br) \
49
+ { \
50
+ asm volatile("csrwi vxrm, 0"); \
51
+ ub = yuvconst->kUVCoeff[0]; \
52
+ vr = yuvconst->kUVCoeff[1]; \
53
+ ug = yuvconst->kUVCoeff[2]; \
54
+ vg = yuvconst->kUVCoeff[3]; \
55
+ yg = yuvconst->kRGBCoeffBias[0]; \
56
+ bb = yuvconst->kRGBCoeffBias[1] + 32; \
57
+ bg = yuvconst->kRGBCoeffBias[2] - 32; \
58
+ br = yuvconst->kRGBCoeffBias[3] + 32; \
59
+ }
60
+ #endif
61
+ // Read [2*VLEN/8] Y, [VLEN/8] U and [VLEN/8] V from 422
62
+ #define READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16) \
63
+ { \
64
+ vuint8m1_t v_tmp0, v_tmp1; \
65
+ vuint8m2_t v_y; \
66
+ vuint16m2_t v_u_16, v_v_16; \
67
+ vl = __riscv_vsetvl_e8m1((w + 1) / 2); \
68
+ v_tmp0 = __riscv_vle8_v_u8m1(src_u, vl); \
69
+ v_u_16 = __riscv_vwaddu_vx_u16m2(v_tmp0, 0, vl); \
70
+ v_tmp1 = __riscv_vle8_v_u8m1(src_v, vl); \
71
+ v_v_16 = __riscv_vwaddu_vx_u16m2(v_tmp1, 0, vl); \
72
+ v_v_16 = __riscv_vmul_vx_u16m2(v_v_16, 0x0101, vl); \
73
+ v_u_16 = __riscv_vmul_vx_u16m2(v_u_16, 0x0101, vl); \
74
+ v_v = __riscv_vreinterpret_v_u16m2_u8m2(v_v_16); \
75
+ v_u = __riscv_vreinterpret_v_u16m2_u8m2(v_u_16); \
76
+ vl = __riscv_vsetvl_e8m2(w); \
77
+ v_y = __riscv_vle8_v_u8m2(src_y, vl); \
78
+ v_y_16 = __riscv_vwaddu_vx_u16m4(v_y, 0, vl); \
79
+ }
80
+
81
+ // Read [2*VLEN/8] Y, [2*VLEN/8] U, and [2*VLEN/8] V from 444
82
+ #define READYUV444(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16) \
83
+ { \
84
+ vuint8m2_t v_y; \
85
+ vl = __riscv_vsetvl_e8m2(w); \
86
+ v_y = __riscv_vle8_v_u8m2(src_y, vl); \
87
+ v_u = __riscv_vle8_v_u8m2(src_u, vl); \
88
+ v_v = __riscv_vle8_v_u8m2(src_v, vl); \
89
+ v_y_16 = __riscv_vwaddu_vx_u16m4(v_y, 0, vl); \
90
+ }
91
+
92
+ // Convert from YUV to fixed point RGB
93
+ #define YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16, \
94
+ v_b_16, v_r_16) \
95
+ { \
96
+ vuint16m4_t v_tmp0, v_tmp1, v_tmp2, v_tmp3, v_tmp4; \
97
+ vuint32m8_t v_tmp5; \
98
+ v_tmp0 = __riscv_vwmulu_vx_u16m4(v_u, ug, vl); \
99
+ v_y_16 = __riscv_vmul_vx_u16m4(v_y_16, 0x0101, vl); \
100
+ v_tmp0 = __riscv_vwmaccu_vx_u16m4(v_tmp0, vg, v_v, vl); \
101
+ v_tmp1 = __riscv_vwmulu_vx_u16m4(v_u, ub, vl); \
102
+ v_tmp5 = __riscv_vwmulu_vx_u32m8(v_y_16, yg, vl); \
103
+ v_tmp2 = __riscv_vnsrl_wx_u16m4(v_tmp5, 16, vl); \
104
+ v_tmp3 = __riscv_vadd_vx_u16m4(v_tmp2, bg, vl); \
105
+ v_tmp4 = __riscv_vadd_vv_u16m4(v_tmp2, v_tmp1, vl); \
106
+ v_tmp2 = __riscv_vwmaccu_vx_u16m4(v_tmp2, vr, v_v, vl); \
107
+ v_g_16 = __riscv_vssubu_vv_u16m4(v_tmp3, v_tmp0, vl); \
108
+ v_b_16 = __riscv_vssubu_vx_u16m4(v_tmp4, bb, vl); \
109
+ v_r_16 = __riscv_vssubu_vx_u16m4(v_tmp2, br, vl); \
110
+ }
111
+
112
+ #ifdef LIBYUV_RVV_HAS_VXRM_ARG
113
+ // Convert from fixed point RGB To 8 bit RGB
114
+ #define RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r) \
115
+ { \
116
+ v_g = __riscv_vnclipu_wx_u8m2(v_g_16, 6, __RISCV_VXRM_RNU, vl); \
117
+ v_b = __riscv_vnclipu_wx_u8m2(v_b_16, 6, __RISCV_VXRM_RNU, vl); \
118
+ v_r = __riscv_vnclipu_wx_u8m2(v_r_16, 6, __RISCV_VXRM_RNU, vl); \
119
+ }
120
+ #else
121
+ // Convert from fixed point RGB To 8 bit RGB
122
+ #define RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r) \
123
+ { \
124
+ v_g = __riscv_vnclipu_wx_u8m2(v_g_16, 6, vl); \
125
+ v_b = __riscv_vnclipu_wx_u8m2(v_b_16, 6, vl); \
126
+ v_r = __riscv_vnclipu_wx_u8m2(v_r_16, 6, vl); \
127
+ }
128
+ #endif
129
+
130
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
131
+ // Read [2*VLEN/8] Y from src_y; Read [VLEN/8] U and [VLEN/8] V from src_uv
132
+ #define READNV12(vl, w, src_y, src_uv, v_u, v_v, v_y_16) \
133
+ { \
134
+ vuint8m1x2_t v_tmp; \
135
+ vuint8m1_t v_tmp0, v_tmp1; \
136
+ vuint8m2_t v_y; \
137
+ vuint16m2_t v_u_16, v_v_16; \
138
+ vl = __riscv_vsetvl_e8m1((w + 1) / 2); \
139
+ v_tmp = __riscv_vlseg2e8_v_u8m1x2(src_uv, vl); \
140
+ v_tmp0 = __riscv_vget_v_u8m1x2_u8m1(v_tmp, 0); \
141
+ v_tmp1 = __riscv_vget_v_u8m1x2_u8m1(v_tmp, 1); \
142
+ v_u_16 = __riscv_vwaddu_vx_u16m2(v_tmp0, 0, vl); \
143
+ v_v_16 = __riscv_vwaddu_vx_u16m2(v_tmp1, 0, vl); \
144
+ v_v_16 = __riscv_vmul_vx_u16m2(v_v_16, 0x0101, vl); \
145
+ v_u_16 = __riscv_vmul_vx_u16m2(v_u_16, 0x0101, vl); \
146
+ v_v = __riscv_vreinterpret_v_u16m2_u8m2(v_v_16); \
147
+ v_u = __riscv_vreinterpret_v_u16m2_u8m2(v_u_16); \
148
+ vl = __riscv_vsetvl_e8m2(w); \
149
+ v_y = __riscv_vle8_v_u8m2(src_y, vl); \
150
+ v_y_16 = __riscv_vwaddu_vx_u16m4(v_y, 0, vl); \
151
+ }
152
+
153
+ // Read 2*[VLEN/8] Y from src_y; Read [VLEN/8] U and [VLEN/8] V from src_vu
154
+ #define READNV21(vl, w, src_y, src_vu, v_u, v_v, v_y_16) \
155
+ { \
156
+ vuint8m1x2_t v_tmp; \
157
+ vuint8m1_t v_tmp0, v_tmp1; \
158
+ vuint8m2_t v_y; \
159
+ vuint16m2_t v_u_16, v_v_16; \
160
+ vl = __riscv_vsetvl_e8m1((w + 1) / 2); \
161
+ v_tmp = __riscv_vlseg2e8_v_u8m1x2(src_vu, vl); \
162
+ v_tmp0 = __riscv_vget_v_u8m1x2_u8m1(v_tmp, 0); \
163
+ v_tmp1 = __riscv_vget_v_u8m1x2_u8m1(v_tmp, 1); \
164
+ v_u_16 = __riscv_vwaddu_vx_u16m2(v_tmp1, 0, vl); \
165
+ v_v_16 = __riscv_vwaddu_vx_u16m2(v_tmp0, 0, vl); \
166
+ v_v_16 = __riscv_vmul_vx_u16m2(v_v_16, 0x0101, vl); \
167
+ v_u_16 = __riscv_vmul_vx_u16m2(v_u_16, 0x0101, vl); \
168
+ v_v = __riscv_vreinterpret_v_u16m2_u8m2(v_v_16); \
169
+ v_u = __riscv_vreinterpret_v_u16m2_u8m2(v_u_16); \
170
+ vl = __riscv_vsetvl_e8m2(w); \
171
+ v_y = __riscv_vle8_v_u8m2(src_y, vl); \
172
+ v_y_16 = __riscv_vwaddu_vx_u16m4(v_y, 0, vl); \
173
+ }
174
+ #else
175
+ // Read [2*VLEN/8] Y from src_y; Read [VLEN/8] U and [VLEN/8] V from src_uv
176
+ #define READNV12(vl, w, src_y, src_uv, v_u, v_v, v_y_16) \
177
+ { \
178
+ vuint8m1_t v_tmp0, v_tmp1; \
179
+ vuint8m2_t v_y; \
180
+ vuint16m2_t v_u_16, v_v_16; \
181
+ vl = __riscv_vsetvl_e8m1((w + 1) / 2); \
182
+ __riscv_vlseg2e8_v_u8m1(&v_tmp0, &v_tmp1, src_uv, vl); \
183
+ v_u_16 = __riscv_vwaddu_vx_u16m2(v_tmp0, 0, vl); \
184
+ v_v_16 = __riscv_vwaddu_vx_u16m2(v_tmp1, 0, vl); \
185
+ v_v_16 = __riscv_vmul_vx_u16m2(v_v_16, 0x0101, vl); \
186
+ v_u_16 = __riscv_vmul_vx_u16m2(v_u_16, 0x0101, vl); \
187
+ v_v = __riscv_vreinterpret_v_u16m2_u8m2(v_v_16); \
188
+ v_u = __riscv_vreinterpret_v_u16m2_u8m2(v_u_16); \
189
+ vl = __riscv_vsetvl_e8m2(w); \
190
+ v_y = __riscv_vle8_v_u8m2(src_y, vl); \
191
+ v_y_16 = __riscv_vwaddu_vx_u16m4(v_y, 0, vl); \
192
+ }
193
+
194
+ // Read 2*[VLEN/8] Y from src_y; Read [VLEN/8] U and [VLEN/8] V from src_vu
195
+ #define READNV21(vl, w, src_y, src_vu, v_u, v_v, v_y_16) \
196
+ { \
197
+ vuint8m1_t v_tmp0, v_tmp1; \
198
+ vuint8m2_t v_y; \
199
+ vuint16m2_t v_u_16, v_v_16; \
200
+ vl = __riscv_vsetvl_e8m1((w + 1) / 2); \
201
+ __riscv_vlseg2e8_v_u8m1(&v_tmp0, &v_tmp1, src_vu, vl); \
202
+ v_u_16 = __riscv_vwaddu_vx_u16m2(v_tmp1, 0, vl); \
203
+ v_v_16 = __riscv_vwaddu_vx_u16m2(v_tmp0, 0, vl); \
204
+ v_v_16 = __riscv_vmul_vx_u16m2(v_v_16, 0x0101, vl); \
205
+ v_u_16 = __riscv_vmul_vx_u16m2(v_u_16, 0x0101, vl); \
206
+ v_v = __riscv_vreinterpret_v_u16m2_u8m2(v_v_16); \
207
+ v_u = __riscv_vreinterpret_v_u16m2_u8m2(v_u_16); \
208
+ vl = __riscv_vsetvl_e8m2(w); \
209
+ v_y = __riscv_vle8_v_u8m2(src_y, vl); \
210
+ v_y_16 = __riscv_vwaddu_vx_u16m4(v_y, 0, vl); \
211
+ }
212
+ #endif
213
+
214
+ #ifdef HAS_ARGBTOAR64ROW_RVV
215
+ void ARGBToAR64Row_RVV(const uint8_t* src_argb, uint16_t* dst_ar64, int width) {
216
+ size_t avl = (size_t)4 * width;
217
+ do {
218
+ vuint16m8_t v_ar64;
219
+ vuint8m4_t v_argb;
220
+ size_t vl = __riscv_vsetvl_e8m4(avl);
221
+ v_argb = __riscv_vle8_v_u8m4(src_argb, vl);
222
+ v_ar64 = __riscv_vwaddu_vx_u16m8(v_argb, 0, vl);
223
+ v_ar64 = __riscv_vmul_vx_u16m8(v_ar64, 0x0101, vl);
224
+ __riscv_vse16_v_u16m8(dst_ar64, v_ar64, vl);
225
+ avl -= vl;
226
+ src_argb += vl;
227
+ dst_ar64 += vl;
228
+ } while (avl > 0);
229
+ }
230
+ #endif
231
+
232
+ #ifdef HAS_ARGBTOAB64ROW_RVV
233
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
234
+ void ARGBToAB64Row_RVV(const uint8_t* src_argb, uint16_t* dst_ab64, int width) {
235
+ size_t avl = (size_t)width;
236
+ do {
237
+ vuint16m2x4_t v_dst_ab64;
238
+ vuint16m2_t v_b_16, v_g_16, v_r_16, v_a_16;
239
+ size_t vl = __riscv_vsetvl_e8m1(avl);
240
+ vuint8m1x4_t v_src_argb = __riscv_vlseg4e8_v_u8m1x4(src_argb, vl);
241
+ vuint8m1_t v_b = __riscv_vget_v_u8m1x4_u8m1(v_src_argb, 0);
242
+ vuint8m1_t v_g = __riscv_vget_v_u8m1x4_u8m1(v_src_argb, 1);
243
+ vuint8m1_t v_r = __riscv_vget_v_u8m1x4_u8m1(v_src_argb, 2);
244
+ vuint8m1_t v_a = __riscv_vget_v_u8m1x4_u8m1(v_src_argb, 3);
245
+ v_b_16 = __riscv_vwaddu_vx_u16m2(v_b, 0, vl);
246
+ v_g_16 = __riscv_vwaddu_vx_u16m2(v_g, 0, vl);
247
+ v_r_16 = __riscv_vwaddu_vx_u16m2(v_r, 0, vl);
248
+ v_a_16 = __riscv_vwaddu_vx_u16m2(v_a, 0, vl);
249
+ v_b_16 = __riscv_vmul_vx_u16m2(v_b_16, 0x0101, vl);
250
+ v_g_16 = __riscv_vmul_vx_u16m2(v_g_16, 0x0101, vl);
251
+ v_r_16 = __riscv_vmul_vx_u16m2(v_r_16, 0x0101, vl);
252
+ v_a_16 = __riscv_vmul_vx_u16m2(v_a_16, 0x0101, vl);
253
+ v_dst_ab64 = __riscv_vcreate_v_u16m2x4(v_r_16, v_g_16, v_b_16, v_a_16);
254
+ __riscv_vsseg4e16_v_u16m2x4(dst_ab64, v_dst_ab64, vl);
255
+ avl -= vl;
256
+ src_argb += 4 * vl;
257
+ dst_ab64 += 4 * vl;
258
+ } while (avl > 0);
259
+ }
260
+ #else
261
+ void ARGBToAB64Row_RVV(const uint8_t* src_argb, uint16_t* dst_ab64, int width) {
262
+ size_t avl = (size_t)width;
263
+ do {
264
+ vuint16m2_t v_b_16, v_g_16, v_r_16, v_a_16;
265
+ vuint8m1_t v_b, v_g, v_r, v_a;
266
+ size_t vl = __riscv_vsetvl_e8m1(avl);
267
+ __riscv_vlseg4e8_v_u8m1(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
268
+ v_b_16 = __riscv_vwaddu_vx_u16m2(v_b, 0, vl);
269
+ v_g_16 = __riscv_vwaddu_vx_u16m2(v_g, 0, vl);
270
+ v_r_16 = __riscv_vwaddu_vx_u16m2(v_r, 0, vl);
271
+ v_a_16 = __riscv_vwaddu_vx_u16m2(v_a, 0, vl);
272
+ v_b_16 = __riscv_vmul_vx_u16m2(v_b_16, 0x0101, vl);
273
+ v_g_16 = __riscv_vmul_vx_u16m2(v_g_16, 0x0101, vl);
274
+ v_r_16 = __riscv_vmul_vx_u16m2(v_r_16, 0x0101, vl);
275
+ v_a_16 = __riscv_vmul_vx_u16m2(v_a_16, 0x0101, vl);
276
+ __riscv_vsseg4e16_v_u16m2(dst_ab64, v_r_16, v_g_16, v_b_16, v_a_16, vl);
277
+ avl -= vl;
278
+ src_argb += 4 * vl;
279
+ dst_ab64 += 4 * vl;
280
+ } while (avl > 0);
281
+ }
282
+ #endif
283
+ #endif
284
+
285
+ #ifdef HAS_AR64TOARGBROW_RVV
286
+ void AR64ToARGBRow_RVV(const uint16_t* src_ar64, uint8_t* dst_argb, int width) {
287
+ size_t avl = (size_t)4 * width;
288
+ do {
289
+ vuint16m8_t v_ar64;
290
+ vuint8m4_t v_argb;
291
+ size_t vl = __riscv_vsetvl_e16m8(avl);
292
+ v_ar64 = __riscv_vle16_v_u16m8(src_ar64, vl);
293
+ v_argb = __riscv_vnsrl_wx_u8m4(v_ar64, 8, vl);
294
+ __riscv_vse8_v_u8m4(dst_argb, v_argb, vl);
295
+ avl -= vl;
296
+ src_ar64 += vl;
297
+ dst_argb += vl;
298
+ } while (avl > 0);
299
+ }
300
+ #endif
301
+
302
+ #ifdef HAS_AR64TOAB64ROW_RVV
303
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
304
+ void AR64ToAB64Row_RVV(const uint16_t* src_ar64,
305
+ uint16_t* dst_ab64,
306
+ int width) {
307
+ size_t w = (size_t)width;
308
+ do {
309
+ size_t vl = __riscv_vsetvl_e16m2(w);
310
+ vuint16m2x4_t v_argb16 = __riscv_vlseg4e16_v_u16m2x4(src_ar64, vl);
311
+ vuint16m2_t v_b = __riscv_vget_v_u16m2x4_u16m2(v_argb16, 0);
312
+ vuint16m2_t v_g = __riscv_vget_v_u16m2x4_u16m2(v_argb16, 1);
313
+ vuint16m2_t v_r = __riscv_vget_v_u16m2x4_u16m2(v_argb16, 2);
314
+ vuint16m2_t v_a = __riscv_vget_v_u16m2x4_u16m2(v_argb16, 3);
315
+ vuint16m2x4_t v_dst_abgr = __riscv_vcreate_v_u16m2x4(v_r, v_g, v_b, v_a);
316
+ __riscv_vsseg4e16_v_u16m2x4(dst_ab64, v_dst_abgr, vl);
317
+ w -= vl;
318
+ src_ar64 += vl * 4;
319
+ dst_ab64 += vl * 4;
320
+ } while (w > 0);
321
+ }
322
+ #else
323
+ void AR64ToAB64Row_RVV(const uint16_t* src_ar64,
324
+ uint16_t* dst_ab64,
325
+ int width) {
326
+ size_t w = (size_t)width;
327
+ do {
328
+ size_t vl = __riscv_vsetvl_e16m2(w);
329
+ vuint16m2_t v_b, v_g, v_r, v_a;
330
+ __riscv_vlseg4e16_v_u16m2(&v_b, &v_g, &v_r, &v_a, src_ar64, vl);
331
+ __riscv_vsseg4e16_v_u16m2(dst_ab64, v_r, v_g, v_b, v_a, vl);
332
+ w -= vl;
333
+ src_ar64 += vl * 4;
334
+ dst_ab64 += vl * 4;
335
+ } while (w > 0);
336
+ }
337
+ #endif
338
+ #endif
339
+
340
+ #ifdef HAS_AB64TOARGBROW_RVV
341
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
342
+ void AB64ToARGBRow_RVV(const uint16_t* src_ab64, uint8_t* dst_argb, int width) {
343
+ size_t avl = (size_t)width;
344
+ do {
345
+ size_t vl = __riscv_vsetvl_e16m2(avl);
346
+ vuint16m2x4_t v_abgr16 = __riscv_vlseg4e16_v_u16m2x4(src_ab64, vl);
347
+ vuint16m2_t v_r_16 = __riscv_vget_v_u16m2x4_u16m2(v_abgr16, 0);
348
+ vuint16m2_t v_g_16 = __riscv_vget_v_u16m2x4_u16m2(v_abgr16, 1);
349
+ vuint16m2_t v_b_16 = __riscv_vget_v_u16m2x4_u16m2(v_abgr16, 2);
350
+ vuint16m2_t v_a_16 = __riscv_vget_v_u16m2x4_u16m2(v_abgr16, 3);
351
+ vuint8m1_t v_b = __riscv_vnsrl_wx_u8m1(v_b_16, 8, vl);
352
+ vuint8m1_t v_g = __riscv_vnsrl_wx_u8m1(v_g_16, 8, vl);
353
+ vuint8m1_t v_r = __riscv_vnsrl_wx_u8m1(v_r_16, 8, vl);
354
+ vuint8m1_t v_a = __riscv_vnsrl_wx_u8m1(v_a_16, 8, vl);
355
+ vuint8m1x4_t v_dst_argb = __riscv_vcreate_v_u8m1x4(v_b, v_g, v_r, v_a);
356
+ __riscv_vsseg4e8_v_u8m1x4(dst_argb, v_dst_argb, vl);
357
+ avl -= vl;
358
+ src_ab64 += 4 * vl;
359
+ dst_argb += 4 * vl;
360
+ } while (avl > 0);
361
+ }
362
+ #else
363
+ void AB64ToARGBRow_RVV(const uint16_t* src_ab64, uint8_t* dst_argb, int width) {
364
+ size_t avl = (size_t)width;
365
+ do {
366
+ vuint16m2_t v_b_16, v_g_16, v_r_16, v_a_16;
367
+ vuint8m1_t v_b, v_g, v_r, v_a;
368
+ size_t vl = __riscv_vsetvl_e16m2(avl);
369
+ __riscv_vlseg4e16_v_u16m2(&v_r_16, &v_g_16, &v_b_16, &v_a_16, src_ab64, vl);
370
+ v_b = __riscv_vnsrl_wx_u8m1(v_b_16, 8, vl);
371
+ v_g = __riscv_vnsrl_wx_u8m1(v_g_16, 8, vl);
372
+ v_r = __riscv_vnsrl_wx_u8m1(v_r_16, 8, vl);
373
+ v_a = __riscv_vnsrl_wx_u8m1(v_a_16, 8, vl);
374
+ __riscv_vsseg4e8_v_u8m1(dst_argb, v_b, v_g, v_r, v_a, vl);
375
+ avl -= vl;
376
+ src_ab64 += 4 * vl;
377
+ dst_argb += 4 * vl;
378
+ } while (avl > 0);
379
+ }
380
+ #endif
381
+ #endif
382
+
383
+ #ifdef HAS_RAWTOARGBROW_RVV
384
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
385
+ void RAWToARGBRow_RVV(const uint8_t* src_raw, uint8_t* dst_argb, int width) {
386
+ size_t w = (size_t)width;
387
+ size_t vl = __riscv_vsetvl_e8m2(w);
388
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
389
+ do {
390
+ vuint8m2x3_t v_bgr = __riscv_vlseg3e8_v_u8m2x3(src_raw, vl);
391
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 0);
392
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 1);
393
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 2);
394
+ vuint8m2x4_t v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
395
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
396
+ w -= vl;
397
+ src_raw += vl * 3;
398
+ dst_argb += vl * 4;
399
+ vl = __riscv_vsetvl_e8m2(w);
400
+ } while (w > 0);
401
+ }
402
+ #else
403
+ void RAWToARGBRow_RVV(const uint8_t* src_raw, uint8_t* dst_argb, int width) {
404
+ size_t w = (size_t)width;
405
+ size_t vl = __riscv_vsetvl_e8m2(w);
406
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
407
+ do {
408
+ vuint8m2_t v_b, v_g, v_r;
409
+ __riscv_vlseg3e8_v_u8m2(&v_r, &v_g, &v_b, src_raw, vl);
410
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
411
+ w -= vl;
412
+ src_raw += vl * 3;
413
+ dst_argb += vl * 4;
414
+ vl = __riscv_vsetvl_e8m2(w);
415
+ } while (w > 0);
416
+ }
417
+ #endif
418
+ #endif
419
+
420
+ #ifdef HAS_RAWTORGBAROW_RVV
421
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
422
+ void RAWToRGBARow_RVV(const uint8_t* src_raw, uint8_t* dst_rgba, int width) {
423
+ size_t w = (size_t)width;
424
+ size_t vl = __riscv_vsetvl_e8m2(w);
425
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
426
+ do {
427
+ vuint8m2x3_t v_bgr = __riscv_vlseg3e8_v_u8m2x3(src_raw, vl);
428
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 0);
429
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 1);
430
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 2);
431
+ vuint8m2x4_t v_dst_rgba = __riscv_vcreate_v_u8m2x4(v_a, v_b, v_g, v_r);
432
+ __riscv_vsseg4e8_v_u8m2x4(dst_rgba, v_dst_rgba, vl);
433
+ w -= vl;
434
+ src_raw += vl * 3;
435
+ dst_rgba += vl * 4;
436
+ vl = __riscv_vsetvl_e8m2(w);
437
+ } while (w > 0);
438
+ }
439
+ #else
440
+ void RAWToRGBARow_RVV(const uint8_t* src_raw, uint8_t* dst_rgba, int width) {
441
+ size_t w = (size_t)width;
442
+ size_t vl = __riscv_vsetvl_e8m2(w);
443
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
444
+ do {
445
+ vuint8m2_t v_b, v_g, v_r;
446
+ __riscv_vlseg3e8_v_u8m2(&v_r, &v_g, &v_b, src_raw, vl);
447
+ __riscv_vsseg4e8_v_u8m2(dst_rgba, v_a, v_b, v_g, v_r, vl);
448
+ w -= vl;
449
+ src_raw += vl * 3;
450
+ dst_rgba += vl * 4;
451
+ vl = __riscv_vsetvl_e8m2(w);
452
+ } while (w > 0);
453
+ }
454
+ #endif
455
+ #endif
456
+
457
+ #ifdef HAS_RAWTORGB24ROW_RVV
458
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
459
+ void RAWToRGB24Row_RVV(const uint8_t* src_raw, uint8_t* dst_rgb24, int width) {
460
+ size_t w = (size_t)width;
461
+ do {
462
+ size_t vl = __riscv_vsetvl_e8m2(w);
463
+ vuint8m2x3_t v_bgr = __riscv_vlseg3e8_v_u8m2x3(src_raw, vl);
464
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 0);
465
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 1);
466
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x3_u8m2(v_bgr, 2);
467
+ vuint8m2x3_t v_dst_rgb = __riscv_vcreate_v_u8m2x3(v_b, v_g, v_r);
468
+ __riscv_vsseg3e8_v_u8m2x3(dst_rgb24, v_dst_rgb, vl);
469
+ w -= vl;
470
+ src_raw += vl * 3;
471
+ dst_rgb24 += vl * 3;
472
+ } while (w > 0);
473
+ }
474
+ #else
475
+ void RAWToRGB24Row_RVV(const uint8_t* src_raw, uint8_t* dst_rgb24, int width) {
476
+ size_t w = (size_t)width;
477
+ do {
478
+ vuint8m2_t v_b, v_g, v_r;
479
+ size_t vl = __riscv_vsetvl_e8m2(w);
480
+ __riscv_vlseg3e8_v_u8m2(&v_b, &v_g, &v_r, src_raw, vl);
481
+ __riscv_vsseg3e8_v_u8m2(dst_rgb24, v_r, v_g, v_b, vl);
482
+ w -= vl;
483
+ src_raw += vl * 3;
484
+ dst_rgb24 += vl * 3;
485
+ } while (w > 0);
486
+ }
487
+ #endif
488
+ #endif
489
+
490
+ #ifdef HAS_ARGBTORAWROW_RVV
491
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
492
+ void ARGBToRAWRow_RVV(const uint8_t* src_argb, uint8_t* dst_raw, int width) {
493
+ size_t w = (size_t)width;
494
+ do {
495
+ size_t vl = __riscv_vsetvl_e8m2(w);
496
+ vuint8m2x4_t v_src_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
497
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 0);
498
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 1);
499
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 2);
500
+ vuint8m2x3_t v_dst_bgr = __riscv_vcreate_v_u8m2x3(v_r, v_g, v_b);
501
+ __riscv_vsseg3e8_v_u8m2x3(dst_raw, v_dst_bgr, vl);
502
+ w -= vl;
503
+ src_argb += vl * 4;
504
+ dst_raw += vl * 3;
505
+ } while (w > 0);
506
+ }
507
+ #else
508
+ void ARGBToRAWRow_RVV(const uint8_t* src_argb, uint8_t* dst_raw, int width) {
509
+ size_t w = (size_t)width;
510
+ do {
511
+ vuint8m2_t v_b, v_g, v_r, v_a;
512
+ size_t vl = __riscv_vsetvl_e8m2(w);
513
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
514
+ __riscv_vsseg3e8_v_u8m2(dst_raw, v_r, v_g, v_b, vl);
515
+ w -= vl;
516
+ src_argb += vl * 4;
517
+ dst_raw += vl * 3;
518
+ } while (w > 0);
519
+ }
520
+ #endif
521
+ #endif
522
+
523
+ #ifdef HAS_ARGBTORGB24ROW_RVV
524
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
525
+ void ARGBToRGB24Row_RVV(const uint8_t* src_argb,
526
+ uint8_t* dst_rgb24,
527
+ int width) {
528
+ size_t w = (size_t)width;
529
+ do {
530
+ size_t vl = __riscv_vsetvl_e8m2(w);
531
+ vuint8m2x4_t v_src_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
532
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 0);
533
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 1);
534
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 2);
535
+ vuint8m2x3_t v_dst_rgb = __riscv_vcreate_v_u8m2x3(v_b, v_g, v_r);
536
+ __riscv_vsseg3e8_v_u8m2x3(dst_rgb24, v_dst_rgb, vl);
537
+ w -= vl;
538
+ src_argb += vl * 4;
539
+ dst_rgb24 += vl * 3;
540
+ } while (w > 0);
541
+ }
542
+ #else
543
+ void ARGBToRGB24Row_RVV(const uint8_t* src_argb,
544
+ uint8_t* dst_rgb24,
545
+ int width) {
546
+ size_t w = (size_t)width;
547
+ do {
548
+ vuint8m2_t v_b, v_g, v_r, v_a;
549
+ size_t vl = __riscv_vsetvl_e8m2(w);
550
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
551
+ __riscv_vsseg3e8_v_u8m2(dst_rgb24, v_b, v_g, v_r, vl);
552
+ w -= vl;
553
+ src_argb += vl * 4;
554
+ dst_rgb24 += vl * 3;
555
+ } while (w > 0);
556
+ }
557
+ #endif
558
+ #endif
559
+
560
+ #ifdef HAS_ARGBTOABGRROW_RVV
561
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
562
+ void ARGBToABGRRow_RVV(const uint8_t* src_argb, uint8_t* dst_abgr, int width) {
563
+ size_t w = (size_t)width;
564
+ do {
565
+ size_t vl = __riscv_vsetvl_e8m2(w);
566
+ vuint8m2x4_t v_src_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
567
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 0);
568
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 1);
569
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 2);
570
+ vuint8m2_t v_a = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 3);
571
+ vuint8m2x4_t v_dst_abgr = __riscv_vcreate_v_u8m2x4(v_r, v_g, v_b, v_a);
572
+ __riscv_vsseg4e8_v_u8m2x4(dst_abgr, v_dst_abgr, vl);
573
+ w -= vl;
574
+ src_argb += vl * 4;
575
+ dst_abgr += vl * 4;
576
+ } while (w > 0);
577
+ }
578
+ #else
579
+ void ARGBToABGRRow_RVV(const uint8_t* src_argb, uint8_t* dst_abgr, int width) {
580
+ size_t w = (size_t)width;
581
+ do {
582
+ size_t vl = __riscv_vsetvl_e8m2(w);
583
+ vuint8m2_t v_a, v_r, v_g, v_b;
584
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
585
+ __riscv_vsseg4e8_v_u8m2(dst_abgr, v_r, v_g, v_b, v_a, vl);
586
+ w -= vl;
587
+ src_argb += vl * 4;
588
+ dst_abgr += vl * 4;
589
+ } while (w > 0);
590
+ }
591
+ #endif
592
+ #endif
593
+
594
+ #ifdef HAS_ARGBTOBGRAROW_RVV
595
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
596
+ void ARGBToBGRARow_RVV(const uint8_t* src_argb, uint8_t* dst_bgra, int width) {
597
+ size_t w = (size_t)width;
598
+ do {
599
+ size_t vl = __riscv_vsetvl_e8m2(w);
600
+ vuint8m2x4_t v_src_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
601
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 0);
602
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 1);
603
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 2);
604
+ vuint8m2_t v_a = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 3);
605
+ vuint8m2x4_t v_dst_bgra = __riscv_vcreate_v_u8m2x4(v_a, v_r, v_g, v_b);
606
+ __riscv_vsseg4e8_v_u8m2x4(dst_bgra, v_dst_bgra, vl);
607
+ w -= vl;
608
+ src_argb += vl * 4;
609
+ dst_bgra += vl * 4;
610
+ } while (w > 0);
611
+ }
612
+ #else
613
+ void ARGBToBGRARow_RVV(const uint8_t* src_argb, uint8_t* dst_bgra, int width) {
614
+ size_t w = (size_t)width;
615
+ do {
616
+ size_t vl = __riscv_vsetvl_e8m2(w);
617
+ vuint8m2_t v_a, v_r, v_g, v_b;
618
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
619
+ __riscv_vsseg4e8_v_u8m2(dst_bgra, v_a, v_r, v_g, v_b, vl);
620
+ w -= vl;
621
+ src_argb += vl * 4;
622
+ dst_bgra += vl * 4;
623
+ } while (w > 0);
624
+ }
625
+ #endif
626
+ #endif
627
+
628
+ #ifdef HAS_ARGBTORGBAROW_RVV
629
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
630
+ void ARGBToRGBARow_RVV(const uint8_t* src_argb, uint8_t* dst_rgba, int width) {
631
+ size_t w = (size_t)width;
632
+ do {
633
+ size_t vl = __riscv_vsetvl_e8m2(w);
634
+ vuint8m2x4_t v_src_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
635
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 0);
636
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 1);
637
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 2);
638
+ vuint8m2_t v_a = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 3);
639
+ vuint8m2x4_t v_dst_rgba = __riscv_vcreate_v_u8m2x4(v_a, v_b, v_g, v_r);
640
+ __riscv_vsseg4e8_v_u8m2x4(dst_rgba, v_dst_rgba, vl);
641
+ w -= vl;
642
+ src_argb += vl * 4;
643
+ dst_rgba += vl * 4;
644
+ } while (w > 0);
645
+ }
646
+ #else
647
+ void ARGBToRGBARow_RVV(const uint8_t* src_argb, uint8_t* dst_rgba, int width) {
648
+ size_t w = (size_t)width;
649
+ do {
650
+ size_t vl = __riscv_vsetvl_e8m2(w);
651
+ vuint8m2_t v_a, v_r, v_g, v_b;
652
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
653
+ __riscv_vsseg4e8_v_u8m2(dst_rgba, v_a, v_b, v_g, v_r, vl);
654
+ w -= vl;
655
+ src_argb += vl * 4;
656
+ dst_rgba += vl * 4;
657
+ } while (w > 0);
658
+ }
659
+ #endif
660
+ #endif
661
+
662
+ #ifdef HAS_RGBATOARGBROW_RVV
663
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
664
+ void RGBAToARGBRow_RVV(const uint8_t* src_rgba, uint8_t* dst_argb, int width) {
665
+ size_t w = (size_t)width;
666
+ do {
667
+ size_t vl = __riscv_vsetvl_e8m2(w);
668
+ vuint8m2x4_t v_src_rgba = __riscv_vlseg4e8_v_u8m2x4(src_rgba, vl);
669
+ vuint8m2_t v_a = __riscv_vget_v_u8m2x4_u8m2(v_src_rgba, 0);
670
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_rgba, 1);
671
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_rgba, 2);
672
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_rgba, 3);
673
+ vuint8m2x4_t v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
674
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
675
+ w -= vl;
676
+ src_rgba += vl * 4;
677
+ dst_argb += vl * 4;
678
+ } while (w > 0);
679
+ }
680
+ #else
681
+ void RGBAToARGBRow_RVV(const uint8_t* src_rgba, uint8_t* dst_argb, int width) {
682
+ size_t w = (size_t)width;
683
+ do {
684
+ size_t vl = __riscv_vsetvl_e8m2(w);
685
+ vuint8m2_t v_a, v_r, v_g, v_b;
686
+ __riscv_vlseg4e8_v_u8m2(&v_a, &v_b, &v_g, &v_r, src_rgba, vl);
687
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
688
+ w -= vl;
689
+ src_rgba += vl * 4;
690
+ dst_argb += vl * 4;
691
+ } while (w > 0);
692
+ }
693
+ #endif
694
+ #endif
695
+
696
+ #ifdef HAS_RGB24TOARGBROW_RVV
697
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
698
+ void RGB24ToARGBRow_RVV(const uint8_t* src_rgb24,
699
+ uint8_t* dst_argb,
700
+ int width) {
701
+ size_t w = (size_t)width;
702
+ size_t vl = __riscv_vsetvl_e8m2(w);
703
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
704
+ do {
705
+ vuint8m2x3_t v_src_rgb = __riscv_vlseg3e8_v_u8m2x3(src_rgb24, vl);
706
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x3_u8m2(v_src_rgb, 0);
707
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x3_u8m2(v_src_rgb, 1);
708
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x3_u8m2(v_src_rgb, 2);
709
+ vuint8m2x4_t v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
710
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
711
+ w -= vl;
712
+ src_rgb24 += vl * 3;
713
+ dst_argb += vl * 4;
714
+ vl = __riscv_vsetvl_e8m2(w);
715
+ } while (w > 0);
716
+ }
717
+ #else
718
+ void RGB24ToARGBRow_RVV(const uint8_t* src_rgb24,
719
+ uint8_t* dst_argb,
720
+ int width) {
721
+ size_t w = (size_t)width;
722
+ size_t vl = __riscv_vsetvl_e8m2(w);
723
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
724
+ do {
725
+ vuint8m2_t v_b, v_g, v_r;
726
+ __riscv_vlseg3e8_v_u8m2(&v_b, &v_g, &v_r, src_rgb24, vl);
727
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
728
+ w -= vl;
729
+ src_rgb24 += vl * 3;
730
+ dst_argb += vl * 4;
731
+ vl = __riscv_vsetvl_e8m2(w);
732
+ } while (w > 0);
733
+ }
734
+ #endif
735
+ #endif
736
+
737
+ #ifdef HAS_I444TOARGBROW_RVV
738
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
739
+ void I444ToARGBRow_RVV(const uint8_t* src_y,
740
+ const uint8_t* src_u,
741
+ const uint8_t* src_v,
742
+ uint8_t* dst_argb,
743
+ const struct YuvConstants* yuvconstants,
744
+ int width) {
745
+ size_t w = (size_t)width;
746
+ size_t vl = __riscv_vsetvl_e8m2(w);
747
+ uint8_t ub, vr, ug, vg;
748
+ int16_t yg, bb, bg, br;
749
+ vuint8m2_t v_u, v_v;
750
+ vuint8m2_t v_b, v_g, v_r, v_a;
751
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
752
+ vuint8m2x4_t v_dst_argb;
753
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
754
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
755
+ do {
756
+ READYUV444(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
757
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
758
+ v_b_16, v_r_16);
759
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
760
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
761
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
762
+ w -= vl;
763
+ src_y += vl;
764
+ src_u += vl;
765
+ src_v += vl;
766
+ dst_argb += vl * 4;
767
+ } while (w > 0);
768
+ }
769
+ #else
770
+ void I444ToARGBRow_RVV(const uint8_t* src_y,
771
+ const uint8_t* src_u,
772
+ const uint8_t* src_v,
773
+ uint8_t* dst_argb,
774
+ const struct YuvConstants* yuvconstants,
775
+ int width) {
776
+ size_t w = (size_t)width;
777
+ size_t vl = __riscv_vsetvl_e8m2(w);
778
+ uint8_t ub, vr, ug, vg;
779
+ int16_t yg, bb, bg, br;
780
+ vuint8m2_t v_u, v_v;
781
+ vuint8m2_t v_b, v_g, v_r, v_a;
782
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
783
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
784
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
785
+ do {
786
+ READYUV444(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
787
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
788
+ v_b_16, v_r_16);
789
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
790
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
791
+ w -= vl;
792
+ src_y += vl;
793
+ src_u += vl;
794
+ src_v += vl;
795
+ dst_argb += vl * 4;
796
+ } while (w > 0);
797
+ }
798
+ #endif
799
+ #endif
800
+
801
+ #ifdef HAS_I444ALPHATOARGBROW_RVV
802
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
803
+ void I444AlphaToARGBRow_RVV(const uint8_t* src_y,
804
+ const uint8_t* src_u,
805
+ const uint8_t* src_v,
806
+ const uint8_t* src_a,
807
+ uint8_t* dst_argb,
808
+ const struct YuvConstants* yuvconstants,
809
+ int width) {
810
+ size_t vl;
811
+ size_t w = (size_t)width;
812
+ uint8_t ub, vr, ug, vg;
813
+ int16_t yg, bb, bg, br;
814
+ vuint8m2_t v_u, v_v;
815
+ vuint8m2_t v_b, v_g, v_r, v_a;
816
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
817
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
818
+ do {
819
+ vuint8m2x4_t v_dst_argb;
820
+ READYUV444(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
821
+ v_a = __riscv_vle8_v_u8m2(src_a, vl);
822
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
823
+ v_b_16, v_r_16);
824
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
825
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
826
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
827
+ w -= vl;
828
+ src_y += vl;
829
+ src_a += vl;
830
+ src_u += vl;
831
+ src_v += vl;
832
+ dst_argb += vl * 4;
833
+ } while (w > 0);
834
+ }
835
+ #else
836
+ void I444AlphaToARGBRow_RVV(const uint8_t* src_y,
837
+ const uint8_t* src_u,
838
+ const uint8_t* src_v,
839
+ const uint8_t* src_a,
840
+ uint8_t* dst_argb,
841
+ const struct YuvConstants* yuvconstants,
842
+ int width) {
843
+ size_t vl;
844
+ size_t w = (size_t)width;
845
+ uint8_t ub, vr, ug, vg;
846
+ int16_t yg, bb, bg, br;
847
+ vuint8m2_t v_u, v_v;
848
+ vuint8m2_t v_b, v_g, v_r, v_a;
849
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
850
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
851
+ do {
852
+ READYUV444(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
853
+ v_a = __riscv_vle8_v_u8m2(src_a, vl);
854
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
855
+ v_b_16, v_r_16);
856
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
857
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
858
+ w -= vl;
859
+ src_y += vl;
860
+ src_a += vl;
861
+ src_u += vl;
862
+ src_v += vl;
863
+ dst_argb += vl * 4;
864
+ } while (w > 0);
865
+ }
866
+ #endif
867
+ #endif
868
+
869
+ #ifdef HAS_I444TORGB24ROW_RVV
870
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
871
+ void I444ToRGB24Row_RVV(const uint8_t* src_y,
872
+ const uint8_t* src_u,
873
+ const uint8_t* src_v,
874
+ uint8_t* dst_rgb24,
875
+ const struct YuvConstants* yuvconstants,
876
+ int width) {
877
+ size_t vl;
878
+ size_t w = (size_t)width;
879
+ uint8_t ub, vr, ug, vg;
880
+ int16_t yg, bb, bg, br;
881
+ vuint8m2_t v_u, v_v;
882
+ vuint8m2_t v_b, v_g, v_r;
883
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
884
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
885
+ do {
886
+ vuint8m2x3_t v_dst_rgb;
887
+ READYUV444(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
888
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
889
+ v_b_16, v_r_16);
890
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
891
+ v_dst_rgb = __riscv_vcreate_v_u8m2x3(v_b, v_g, v_r);
892
+ __riscv_vsseg3e8_v_u8m2x3(dst_rgb24, v_dst_rgb, vl);
893
+ w -= vl;
894
+ src_y += vl;
895
+ src_u += vl;
896
+ src_v += vl;
897
+ dst_rgb24 += vl * 3;
898
+ } while (w > 0);
899
+ }
900
+ #else
901
+ void I444ToRGB24Row_RVV(const uint8_t* src_y,
902
+ const uint8_t* src_u,
903
+ const uint8_t* src_v,
904
+ uint8_t* dst_rgb24,
905
+ const struct YuvConstants* yuvconstants,
906
+ int width) {
907
+ size_t vl;
908
+ size_t w = (size_t)width;
909
+ uint8_t ub, vr, ug, vg;
910
+ int16_t yg, bb, bg, br;
911
+ vuint8m2_t v_u, v_v;
912
+ vuint8m2_t v_b, v_g, v_r;
913
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
914
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
915
+ do {
916
+ READYUV444(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
917
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
918
+ v_b_16, v_r_16);
919
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
920
+ __riscv_vsseg3e8_v_u8m2(dst_rgb24, v_b, v_g, v_r, vl);
921
+ w -= vl;
922
+ src_y += vl;
923
+ src_u += vl;
924
+ src_v += vl;
925
+ dst_rgb24 += vl * 3;
926
+ } while (w > 0);
927
+ }
928
+ #endif
929
+ #endif
930
+
931
+ #ifdef HAS_I422TOARGBROW_RVV
932
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
933
+ void I422ToARGBRow_RVV(const uint8_t* src_y,
934
+ const uint8_t* src_u,
935
+ const uint8_t* src_v,
936
+ uint8_t* dst_argb,
937
+ const struct YuvConstants* yuvconstants,
938
+ int width) {
939
+ size_t w = (size_t)width;
940
+ size_t vl = __riscv_vsetvl_e8m2(w);
941
+ uint8_t ub, vr, ug, vg;
942
+ int16_t yg, bb, bg, br;
943
+ vuint8m2_t v_u, v_v;
944
+ vuint8m2_t v_b, v_g, v_r, v_a;
945
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
946
+ vuint8m2x4_t v_dst_argb;
947
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
948
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
949
+ do {
950
+ READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
951
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
952
+ v_b_16, v_r_16);
953
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
954
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
955
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
956
+ w -= vl;
957
+ src_y += vl;
958
+ src_u += vl / 2;
959
+ src_v += vl / 2;
960
+ dst_argb += vl * 4;
961
+ } while (w > 0);
962
+ }
963
+ #else
964
+ void I422ToARGBRow_RVV(const uint8_t* src_y,
965
+ const uint8_t* src_u,
966
+ const uint8_t* src_v,
967
+ uint8_t* dst_argb,
968
+ const struct YuvConstants* yuvconstants,
969
+ int width) {
970
+ size_t w = (size_t)width;
971
+ size_t vl = __riscv_vsetvl_e8m2(w);
972
+ uint8_t ub, vr, ug, vg;
973
+ int16_t yg, bb, bg, br;
974
+ vuint8m2_t v_u, v_v;
975
+ vuint8m2_t v_b, v_g, v_r, v_a;
976
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
977
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
978
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
979
+ do {
980
+ READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
981
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
982
+ v_b_16, v_r_16);
983
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
984
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
985
+ w -= vl;
986
+ src_y += vl;
987
+ src_u += vl / 2;
988
+ src_v += vl / 2;
989
+ dst_argb += vl * 4;
990
+ } while (w > 0);
991
+ }
992
+ #endif
993
+ #endif
994
+
995
+ #ifdef HAS_I422ALPHATOARGBROW_RVV
996
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
997
+ void I422AlphaToARGBRow_RVV(const uint8_t* src_y,
998
+ const uint8_t* src_u,
999
+ const uint8_t* src_v,
1000
+ const uint8_t* src_a,
1001
+ uint8_t* dst_argb,
1002
+ const struct YuvConstants* yuvconstants,
1003
+ int width) {
1004
+ size_t vl;
1005
+ size_t w = (size_t)width;
1006
+ uint8_t ub, vr, ug, vg;
1007
+ int16_t yg, bb, bg, br;
1008
+ vuint8m2_t v_u, v_v;
1009
+ vuint8m2_t v_b, v_g, v_r, v_a;
1010
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1011
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1012
+ do {
1013
+ vuint8m2x4_t v_dst_argb;
1014
+ READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
1015
+ v_a = __riscv_vle8_v_u8m2(src_a, vl);
1016
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1017
+ v_b_16, v_r_16);
1018
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1019
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
1020
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
1021
+ w -= vl;
1022
+ src_y += vl;
1023
+ src_a += vl;
1024
+ src_u += vl / 2;
1025
+ src_v += vl / 2;
1026
+ dst_argb += vl * 4;
1027
+ } while (w > 0);
1028
+ }
1029
+ #else
1030
+ void I422AlphaToARGBRow_RVV(const uint8_t* src_y,
1031
+ const uint8_t* src_u,
1032
+ const uint8_t* src_v,
1033
+ const uint8_t* src_a,
1034
+ uint8_t* dst_argb,
1035
+ const struct YuvConstants* yuvconstants,
1036
+ int width) {
1037
+ size_t vl;
1038
+ size_t w = (size_t)width;
1039
+ uint8_t ub, vr, ug, vg;
1040
+ int16_t yg, bb, bg, br;
1041
+ vuint8m2_t v_u, v_v;
1042
+ vuint8m2_t v_b, v_g, v_r, v_a;
1043
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1044
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1045
+ do {
1046
+ READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
1047
+ v_a = __riscv_vle8_v_u8m2(src_a, vl);
1048
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1049
+ v_b_16, v_r_16);
1050
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1051
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
1052
+ w -= vl;
1053
+ src_y += vl;
1054
+ src_a += vl;
1055
+ src_u += vl / 2;
1056
+ src_v += vl / 2;
1057
+ dst_argb += vl * 4;
1058
+ } while (w > 0);
1059
+ }
1060
+ #endif
1061
+ #endif
1062
+
1063
+ #ifdef HAS_I422TORGBAROW_RVV
1064
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1065
+ void I422ToRGBARow_RVV(const uint8_t* src_y,
1066
+ const uint8_t* src_u,
1067
+ const uint8_t* src_v,
1068
+ uint8_t* dst_rgba,
1069
+ const struct YuvConstants* yuvconstants,
1070
+ int width) {
1071
+ size_t w = (size_t)width;
1072
+ size_t vl = __riscv_vsetvl_e8m2(w);
1073
+ uint8_t ub, vr, ug, vg;
1074
+ int16_t yg, bb, bg, br;
1075
+ vuint8m2_t v_u, v_v;
1076
+ vuint8m2_t v_b, v_g, v_r, v_a;
1077
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1078
+ vuint8m2x4_t v_dst_rgba;
1079
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1080
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1081
+ do {
1082
+ READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
1083
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1084
+ v_b_16, v_r_16);
1085
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1086
+ v_dst_rgba = __riscv_vcreate_v_u8m2x4(v_a, v_b, v_g, v_r);
1087
+ __riscv_vsseg4e8_v_u8m2x4(dst_rgba, v_dst_rgba, vl);
1088
+ w -= vl;
1089
+ src_y += vl;
1090
+ src_u += vl / 2;
1091
+ src_v += vl / 2;
1092
+ dst_rgba += vl * 4;
1093
+ } while (w > 0);
1094
+ }
1095
+ #else
1096
+ void I422ToRGBARow_RVV(const uint8_t* src_y,
1097
+ const uint8_t* src_u,
1098
+ const uint8_t* src_v,
1099
+ uint8_t* dst_rgba,
1100
+ const struct YuvConstants* yuvconstants,
1101
+ int width) {
1102
+ size_t w = (size_t)width;
1103
+ size_t vl = __riscv_vsetvl_e8m2(w);
1104
+ uint8_t ub, vr, ug, vg;
1105
+ int16_t yg, bb, bg, br;
1106
+ vuint8m2_t v_u, v_v;
1107
+ vuint8m2_t v_b, v_g, v_r, v_a;
1108
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1109
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1110
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1111
+ do {
1112
+ READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
1113
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1114
+ v_b_16, v_r_16);
1115
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1116
+ __riscv_vsseg4e8_v_u8m2(dst_rgba, v_a, v_b, v_g, v_r, vl);
1117
+ w -= vl;
1118
+ src_y += vl;
1119
+ src_u += vl / 2;
1120
+ src_v += vl / 2;
1121
+ dst_rgba += vl * 4;
1122
+ } while (w > 0);
1123
+ }
1124
+ #endif
1125
+ #endif
1126
+
1127
+ #ifdef HAS_I422TORGB24ROW_RVV
1128
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1129
+ void I422ToRGB24Row_RVV(const uint8_t* src_y,
1130
+ const uint8_t* src_u,
1131
+ const uint8_t* src_v,
1132
+ uint8_t* dst_rgb24,
1133
+ const struct YuvConstants* yuvconstants,
1134
+ int width) {
1135
+ size_t vl;
1136
+ size_t w = (size_t)width;
1137
+ uint8_t ub, vr, ug, vg;
1138
+ int16_t yg, bb, bg, br;
1139
+ vuint8m2_t v_u, v_v;
1140
+ vuint8m2_t v_b, v_g, v_r;
1141
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1142
+ vuint8m2x3_t v_dst_rgb;
1143
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1144
+ do {
1145
+ READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
1146
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1147
+ v_b_16, v_r_16);
1148
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1149
+ v_dst_rgb = __riscv_vcreate_v_u8m2x3(v_b, v_g, v_r);
1150
+ __riscv_vsseg3e8_v_u8m2x3(dst_rgb24, v_dst_rgb, vl);
1151
+ w -= vl;
1152
+ src_y += vl;
1153
+ src_u += vl / 2;
1154
+ src_v += vl / 2;
1155
+ dst_rgb24 += vl * 3;
1156
+ } while (w > 0);
1157
+ }
1158
+ #else
1159
+ void I422ToRGB24Row_RVV(const uint8_t* src_y,
1160
+ const uint8_t* src_u,
1161
+ const uint8_t* src_v,
1162
+ uint8_t* dst_rgb24,
1163
+ const struct YuvConstants* yuvconstants,
1164
+ int width) {
1165
+ size_t vl;
1166
+ size_t w = (size_t)width;
1167
+ uint8_t ub, vr, ug, vg;
1168
+ int16_t yg, bb, bg, br;
1169
+ vuint8m2_t v_u, v_v;
1170
+ vuint8m2_t v_b, v_g, v_r;
1171
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1172
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1173
+ do {
1174
+ READYUV422(vl, w, src_y, src_u, src_v, v_u, v_v, v_y_16);
1175
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1176
+ v_b_16, v_r_16);
1177
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1178
+ __riscv_vsseg3e8_v_u8m2(dst_rgb24, v_b, v_g, v_r, vl);
1179
+ w -= vl;
1180
+ src_y += vl;
1181
+ src_u += vl / 2;
1182
+ src_v += vl / 2;
1183
+ dst_rgb24 += vl * 3;
1184
+ } while (w > 0);
1185
+ }
1186
+ #endif
1187
+ #endif
1188
+
1189
+ #ifdef HAS_I400TOARGBROW_RVV
1190
+ #if defined(LIBYUV_RVV_HAS_TUPLE_TYPE) && defined(LIBYUV_RVV_HAS_VXRM_ARG)
1191
+ void I400ToARGBRow_RVV(const uint8_t* src_y,
1192
+ uint8_t* dst_argb,
1193
+ const struct YuvConstants* yuvconstants,
1194
+ int width) {
1195
+ size_t w = (size_t)width;
1196
+ size_t vl = __riscv_vsetvl_e8m2(w);
1197
+ const bool is_yb_positive = (yuvconstants->kRGBCoeffBias[4] >= 0);
1198
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1199
+ vuint16m4_t v_yg = __riscv_vmv_v_x_u16m4(yuvconstants->kRGBCoeffBias[0], vl);
1200
+ vuint8m2x4_t v_dst_argb;
1201
+ vuint16m4_t v_yb;
1202
+ if (is_yb_positive) {
1203
+ v_yb = __riscv_vmv_v_x_u16m4(yuvconstants->kRGBCoeffBias[4] - 32, vl);
1204
+ } else {
1205
+ v_yb = __riscv_vmv_v_x_u16m4(-yuvconstants->kRGBCoeffBias[4] + 32, vl);
1206
+ }
1207
+ do {
1208
+ vuint8m2_t v_y, v_out;
1209
+ vuint16m4_t v_y_16, v_tmp0, v_tmp1, v_tmp2;
1210
+ vl = __riscv_vsetvl_e8m2(w);
1211
+ v_y = __riscv_vle8_v_u8m2(src_y, vl);
1212
+ v_y_16 = __riscv_vwaddu_vx_u16m4(v_y, 0, vl);
1213
+ v_tmp0 = __riscv_vmul_vx_u16m4(v_y_16, 0x0101, vl); // 257 * v_y
1214
+ v_tmp1 = __riscv_vmulhu_vv_u16m4(v_tmp0, v_yg, vl);
1215
+ if (is_yb_positive) {
1216
+ v_tmp2 = __riscv_vsaddu_vv_u16m4(v_tmp1, v_yb, vl);
1217
+ } else {
1218
+ v_tmp2 = __riscv_vssubu_vv_u16m4(v_tmp1, v_yb, vl);
1219
+ }
1220
+ v_out = __riscv_vnclipu_wx_u8m2(v_tmp2, 6, __RISCV_VXRM_RNU, vl);
1221
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_out, v_out, v_out, v_a);
1222
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
1223
+ w -= vl;
1224
+ src_y += vl;
1225
+ dst_argb += vl * 4;
1226
+ } while (w > 0);
1227
+ }
1228
+ #else
1229
+ void I400ToARGBRow_RVV(const uint8_t* src_y,
1230
+ uint8_t* dst_argb,
1231
+ const struct YuvConstants* yuvconstants,
1232
+ int width) {
1233
+ size_t w = (size_t)width;
1234
+ size_t vl = __riscv_vsetvl_e8m2(w);
1235
+ const bool is_yb_positive = (yuvconstants->kRGBCoeffBias[4] >= 0);
1236
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1237
+ vuint16m4_t v_yb;
1238
+ vuint16m4_t v_yg = __riscv_vmv_v_x_u16m4(yuvconstants->kRGBCoeffBias[0], vl);
1239
+ // To match behavior on other platforms, vxrm (fixed-point rounding mode
1240
+ // register) sets to round-to-nearest-up mode(0).
1241
+ asm volatile("csrwi vxrm, 0");
1242
+ if (is_yb_positive) {
1243
+ v_yb = __riscv_vmv_v_x_u16m4(yuvconstants->kRGBCoeffBias[4] - 32, vl);
1244
+ } else {
1245
+ v_yb = __riscv_vmv_v_x_u16m4(-yuvconstants->kRGBCoeffBias[4] + 32, vl);
1246
+ }
1247
+ do {
1248
+ vuint8m2_t v_y, v_out;
1249
+ vuint16m4_t v_y_16, v_tmp0, v_tmp1, v_tmp2;
1250
+ vl = __riscv_vsetvl_e8m2(w);
1251
+ v_y = __riscv_vle8_v_u8m2(src_y, vl);
1252
+ v_y_16 = __riscv_vwaddu_vx_u16m4(v_y, 0, vl);
1253
+ v_tmp0 = __riscv_vmul_vx_u16m4(v_y_16, 0x0101, vl); // 257 * v_y
1254
+ v_tmp1 = __riscv_vmulhu_vv_u16m4(v_tmp0, v_yg, vl);
1255
+ if (is_yb_positive) {
1256
+ v_tmp2 = __riscv_vsaddu_vv_u16m4(v_tmp1, v_yb, vl);
1257
+ } else {
1258
+ v_tmp2 = __riscv_vssubu_vv_u16m4(v_tmp1, v_yb, vl);
1259
+ }
1260
+ v_out = __riscv_vnclipu_wx_u8m2(v_tmp2, 6, vl);
1261
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_out, v_out, v_out, v_a, vl);
1262
+ w -= vl;
1263
+ src_y += vl;
1264
+ dst_argb += vl * 4;
1265
+ } while (w > 0);
1266
+ }
1267
+ #endif
1268
+ #endif
1269
+
1270
+ #ifdef HAS_J400TOARGBROW_RVV
1271
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1272
+ void J400ToARGBRow_RVV(const uint8_t* src_y, uint8_t* dst_argb, int width) {
1273
+ size_t w = (size_t)width;
1274
+ size_t vl = __riscv_vsetvl_e8m2(w);
1275
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1276
+ do {
1277
+ vuint8m2_t v_y = __riscv_vle8_v_u8m2(src_y, vl);
1278
+ vuint8m2x4_t v_dst_argb = __riscv_vcreate_v_u8m2x4(v_y, v_y, v_y, v_a);
1279
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
1280
+ w -= vl;
1281
+ src_y += vl;
1282
+ dst_argb += vl * 4;
1283
+ vl = __riscv_vsetvl_e8m2(w);
1284
+ } while (w > 0);
1285
+ }
1286
+ #else
1287
+ void J400ToARGBRow_RVV(const uint8_t* src_y, uint8_t* dst_argb, int width) {
1288
+ size_t w = (size_t)width;
1289
+ size_t vl = __riscv_vsetvl_e8m2(w);
1290
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1291
+ do {
1292
+ vuint8m2_t v_y;
1293
+ v_y = __riscv_vle8_v_u8m2(src_y, vl);
1294
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_y, v_y, v_y, v_a, vl);
1295
+ w -= vl;
1296
+ src_y += vl;
1297
+ dst_argb += vl * 4;
1298
+ vl = __riscv_vsetvl_e8m2(w);
1299
+ } while (w > 0);
1300
+ }
1301
+ #endif
1302
+ #endif
1303
+
1304
+ #ifdef HAS_COPYROW_RVV
1305
+ void CopyRow_RVV(const uint8_t* src, uint8_t* dst, int width) {
1306
+ size_t w = (size_t)width;
1307
+ do {
1308
+ size_t vl = __riscv_vsetvl_e8m8(w);
1309
+ vuint8m8_t v_data = __riscv_vle8_v_u8m8(src, vl);
1310
+ __riscv_vse8_v_u8m8(dst, v_data, vl);
1311
+ w -= vl;
1312
+ src += vl;
1313
+ dst += vl;
1314
+ } while (w > 0);
1315
+ }
1316
+ #endif
1317
+
1318
+ #ifdef HAS_NV12TOARGBROW_RVV
1319
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1320
+ void NV12ToARGBRow_RVV(const uint8_t* src_y,
1321
+ const uint8_t* src_uv,
1322
+ uint8_t* dst_argb,
1323
+ const struct YuvConstants* yuvconstants,
1324
+ int width) {
1325
+ size_t w = (size_t)width;
1326
+ size_t vl = __riscv_vsetvl_e8m2(w);
1327
+ uint8_t ub, vr, ug, vg;
1328
+ int16_t yg, bb, bg, br;
1329
+ vuint8m2_t v_u, v_v;
1330
+ vuint8m2_t v_b, v_g, v_r, v_a;
1331
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1332
+ vuint8m2x4_t v_dst_argb;
1333
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1334
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1335
+ do {
1336
+ READNV12(vl, w, src_y, src_uv, v_u, v_v, v_y_16);
1337
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1338
+ v_b_16, v_r_16);
1339
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1340
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
1341
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
1342
+ w -= vl;
1343
+ src_y += vl;
1344
+ src_uv += vl;
1345
+ dst_argb += vl * 4;
1346
+ } while (w > 0);
1347
+ }
1348
+ #else
1349
+ void NV12ToARGBRow_RVV(const uint8_t* src_y,
1350
+ const uint8_t* src_uv,
1351
+ uint8_t* dst_argb,
1352
+ const struct YuvConstants* yuvconstants,
1353
+ int width) {
1354
+ size_t w = (size_t)width;
1355
+ size_t vl = __riscv_vsetvl_e8m2(w);
1356
+ uint8_t ub, vr, ug, vg;
1357
+ int16_t yg, bb, bg, br;
1358
+ vuint8m2_t v_u, v_v;
1359
+ vuint8m2_t v_b, v_g, v_r, v_a;
1360
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1361
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1362
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1363
+ do {
1364
+ READNV12(vl, w, src_y, src_uv, v_u, v_v, v_y_16);
1365
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1366
+ v_b_16, v_r_16);
1367
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1368
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
1369
+ w -= vl;
1370
+ src_y += vl;
1371
+ src_uv += vl;
1372
+ dst_argb += vl * 4;
1373
+ } while (w > 0);
1374
+ }
1375
+ #endif
1376
+ #endif
1377
+
1378
+ #ifdef HAS_NV12TORGB24ROW_RVV
1379
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1380
+ void NV12ToRGB24Row_RVV(const uint8_t* src_y,
1381
+ const uint8_t* src_uv,
1382
+ uint8_t* dst_rgb24,
1383
+ const struct YuvConstants* yuvconstants,
1384
+ int width) {
1385
+ size_t w = (size_t)width;
1386
+ size_t vl = __riscv_vsetvl_e8m2(w);
1387
+ uint8_t ub, vr, ug, vg;
1388
+ int16_t yg, bb, bg, br;
1389
+ vuint8m2_t v_u, v_v;
1390
+ vuint8m2_t v_b, v_g, v_r;
1391
+ vuint8m2x3_t v_dst_rgb;
1392
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1393
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1394
+ do {
1395
+ READNV12(vl, w, src_y, src_uv, v_u, v_v, v_y_16);
1396
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1397
+ v_b_16, v_r_16);
1398
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1399
+ v_dst_rgb = __riscv_vcreate_v_u8m2x3(v_b, v_g, v_r);
1400
+ __riscv_vsseg3e8_v_u8m2x3(dst_rgb24, v_dst_rgb, vl);
1401
+ w -= vl;
1402
+ src_y += vl;
1403
+ src_uv += vl;
1404
+ dst_rgb24 += vl * 3;
1405
+ } while (w > 0);
1406
+ }
1407
+ #else
1408
+ void NV12ToRGB24Row_RVV(const uint8_t* src_y,
1409
+ const uint8_t* src_uv,
1410
+ uint8_t* dst_rgb24,
1411
+ const struct YuvConstants* yuvconstants,
1412
+ int width) {
1413
+ size_t w = (size_t)width;
1414
+ size_t vl = __riscv_vsetvl_e8m2(w);
1415
+ uint8_t ub, vr, ug, vg;
1416
+ int16_t yg, bb, bg, br;
1417
+ vuint8m2_t v_u, v_v;
1418
+ vuint8m2_t v_b, v_g, v_r;
1419
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1420
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1421
+ do {
1422
+ READNV12(vl, w, src_y, src_uv, v_u, v_v, v_y_16);
1423
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1424
+ v_b_16, v_r_16);
1425
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1426
+ __riscv_vsseg3e8_v_u8m2(dst_rgb24, v_b, v_g, v_r, vl);
1427
+ w -= vl;
1428
+ src_y += vl;
1429
+ src_uv += vl;
1430
+ dst_rgb24 += vl * 3;
1431
+ } while (w > 0);
1432
+ }
1433
+ #endif
1434
+ #endif
1435
+
1436
+ #ifdef HAS_NV21TOARGBROW_RVV
1437
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1438
+ void NV21ToARGBRow_RVV(const uint8_t* src_y,
1439
+ const uint8_t* src_vu,
1440
+ uint8_t* dst_argb,
1441
+ const struct YuvConstants* yuvconstants,
1442
+ int width) {
1443
+ size_t w = (size_t)width;
1444
+ size_t vl = __riscv_vsetvl_e8m2(w);
1445
+ uint8_t ub, vr, ug, vg;
1446
+ int16_t yg, bb, bg, br;
1447
+ vuint8m2_t v_u, v_v;
1448
+ vuint8m2_t v_b, v_g, v_r, v_a;
1449
+ vuint8m2x4_t v_dst_argb;
1450
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1451
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1452
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1453
+ do {
1454
+ READNV21(vl, w, src_y, src_vu, v_u, v_v, v_y_16);
1455
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1456
+ v_b_16, v_r_16);
1457
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1458
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
1459
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
1460
+ w -= vl;
1461
+ src_y += vl;
1462
+ src_vu += vl;
1463
+ dst_argb += vl * 4;
1464
+ } while (w > 0);
1465
+ }
1466
+ #else
1467
+ void NV21ToARGBRow_RVV(const uint8_t* src_y,
1468
+ const uint8_t* src_vu,
1469
+ uint8_t* dst_argb,
1470
+ const struct YuvConstants* yuvconstants,
1471
+ int width) {
1472
+ size_t w = (size_t)width;
1473
+ size_t vl = __riscv_vsetvl_e8m2(w);
1474
+ uint8_t ub, vr, ug, vg;
1475
+ int16_t yg, bb, bg, br;
1476
+ vuint8m2_t v_u, v_v;
1477
+ vuint8m2_t v_b, v_g, v_r, v_a;
1478
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1479
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1480
+ v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1481
+ do {
1482
+ READNV21(vl, w, src_y, src_vu, v_u, v_v, v_y_16);
1483
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1484
+ v_b_16, v_r_16);
1485
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1486
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
1487
+ w -= vl;
1488
+ src_y += vl;
1489
+ src_vu += vl;
1490
+ dst_argb += vl * 4;
1491
+ } while (w > 0);
1492
+ }
1493
+ #endif
1494
+ #endif
1495
+
1496
+ #ifdef HAS_NV21TORGB24ROW_RVV
1497
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1498
+ void NV21ToRGB24Row_RVV(const uint8_t* src_y,
1499
+ const uint8_t* src_vu,
1500
+ uint8_t* dst_rgb24,
1501
+ const struct YuvConstants* yuvconstants,
1502
+ int width) {
1503
+ size_t w = (size_t)width;
1504
+ size_t vl = __riscv_vsetvl_e8m2(w);
1505
+ uint8_t ub, vr, ug, vg;
1506
+ int16_t yg, bb, bg, br;
1507
+ vuint8m2_t v_u, v_v;
1508
+ vuint8m2_t v_b, v_g, v_r;
1509
+ vuint8m2x3_t v_dst_rgb;
1510
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1511
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1512
+ do {
1513
+ READNV21(vl, w, src_y, src_vu, v_u, v_v, v_y_16);
1514
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1515
+ v_b_16, v_r_16);
1516
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1517
+ v_dst_rgb = __riscv_vcreate_v_u8m2x3(v_b, v_g, v_r);
1518
+ __riscv_vsseg3e8_v_u8m2x3(dst_rgb24, v_dst_rgb, vl);
1519
+ w -= vl;
1520
+ src_y += vl;
1521
+ src_vu += vl;
1522
+ dst_rgb24 += vl * 3;
1523
+ } while (w > 0);
1524
+ }
1525
+ #else
1526
+ void NV21ToRGB24Row_RVV(const uint8_t* src_y,
1527
+ const uint8_t* src_vu,
1528
+ uint8_t* dst_rgb24,
1529
+ const struct YuvConstants* yuvconstants,
1530
+ int width) {
1531
+ size_t w = (size_t)width;
1532
+ size_t vl = __riscv_vsetvl_e8m2(w);
1533
+ uint8_t ub, vr, ug, vg;
1534
+ int16_t yg, bb, bg, br;
1535
+ vuint8m2_t v_u, v_v;
1536
+ vuint8m2_t v_b, v_g, v_r;
1537
+ vuint16m4_t v_y_16, v_g_16, v_b_16, v_r_16;
1538
+ YUVTORGB_SETUP(yuvconstants, ub, vr, ug, vg, yg, bb, bg, br);
1539
+ do {
1540
+ READNV21(vl, w, src_y, src_vu, v_u, v_v, v_y_16);
1541
+ YUVTORGB(vl, v_u, v_v, ub, vr, ug, vg, yg, bb, bg, br, v_y_16, v_g_16,
1542
+ v_b_16, v_r_16);
1543
+ RGBTORGB8(vl, v_g_16, v_b_16, v_r_16, v_g, v_b, v_r);
1544
+ __riscv_vsseg3e8_v_u8m2(dst_rgb24, v_b, v_g, v_r, vl);
1545
+ w -= vl;
1546
+ src_y += vl;
1547
+ src_vu += vl;
1548
+ dst_rgb24 += vl * 3;
1549
+ } while (w > 0);
1550
+ }
1551
+ #endif
1552
+ #endif
1553
+
1554
+ // Bilinear filter [VLEN/8]x2 -> [VLEN/8]x1
1555
+ #ifdef HAS_INTERPOLATEROW_RVV
1556
+ #ifdef LIBYUV_RVV_HAS_VXRM_ARG
1557
+ void InterpolateRow_RVV(uint8_t* dst_ptr,
1558
+ const uint8_t* src_ptr,
1559
+ ptrdiff_t src_stride,
1560
+ int dst_width,
1561
+ int source_y_fraction) {
1562
+ int y1_fraction = source_y_fraction;
1563
+ int y0_fraction = 256 - y1_fraction;
1564
+ const uint8_t* src_ptr1 = src_ptr + src_stride;
1565
+ size_t dst_w = (size_t)dst_width;
1566
+ assert(source_y_fraction >= 0);
1567
+ assert(source_y_fraction < 256);
1568
+ // Blend 100 / 0 - Copy row unchanged.
1569
+ if (y1_fraction == 0) {
1570
+ do {
1571
+ size_t vl = __riscv_vsetvl_e8m8(dst_w);
1572
+ __riscv_vse8_v_u8m8(dst_ptr, __riscv_vle8_v_u8m8(src_ptr, vl), vl);
1573
+ dst_w -= vl;
1574
+ src_ptr += vl;
1575
+ dst_ptr += vl;
1576
+ } while (dst_w > 0);
1577
+ return;
1578
+ }
1579
+ // Blend 50 / 50.
1580
+ if (y1_fraction == 128) {
1581
+ do {
1582
+ size_t vl = __riscv_vsetvl_e8m8(dst_w);
1583
+ vuint8m8_t row0 = __riscv_vle8_v_u8m8(src_ptr, vl);
1584
+ vuint8m8_t row1 = __riscv_vle8_v_u8m8(src_ptr1, vl);
1585
+ vuint8m8_t row_out =
1586
+ __riscv_vaaddu_vv_u8m8(row0, row1, __RISCV_VXRM_RNU, vl);
1587
+ __riscv_vse8_v_u8m8(dst_ptr, row_out, vl);
1588
+ dst_w -= vl;
1589
+ src_ptr += vl;
1590
+ src_ptr1 += vl;
1591
+ dst_ptr += vl;
1592
+ } while (dst_w > 0);
1593
+ return;
1594
+ }
1595
+ // General purpose row blend.
1596
+ do {
1597
+ size_t vl = __riscv_vsetvl_e8m4(dst_w);
1598
+ vuint8m4_t row0 = __riscv_vle8_v_u8m4(src_ptr, vl);
1599
+ vuint16m8_t acc = __riscv_vwmulu_vx_u16m8(row0, y0_fraction, vl);
1600
+ vuint8m4_t row1 = __riscv_vle8_v_u8m4(src_ptr1, vl);
1601
+ acc = __riscv_vwmaccu_vx_u16m8(acc, y1_fraction, row1, vl);
1602
+ __riscv_vse8_v_u8m4(
1603
+ dst_ptr, __riscv_vnclipu_wx_u8m4(acc, 8, __RISCV_VXRM_RNU, vl), vl);
1604
+ dst_w -= vl;
1605
+ src_ptr += vl;
1606
+ src_ptr1 += vl;
1607
+ dst_ptr += vl;
1608
+ } while (dst_w > 0);
1609
+ }
1610
+ #else
1611
+ void InterpolateRow_RVV(uint8_t* dst_ptr,
1612
+ const uint8_t* src_ptr,
1613
+ ptrdiff_t src_stride,
1614
+ int dst_width,
1615
+ int source_y_fraction) {
1616
+ int y1_fraction = source_y_fraction;
1617
+ int y0_fraction = 256 - y1_fraction;
1618
+ const uint8_t* src_ptr1 = src_ptr + src_stride;
1619
+ size_t dst_w = (size_t)dst_width;
1620
+ assert(source_y_fraction >= 0);
1621
+ assert(source_y_fraction < 256);
1622
+ // Blend 100 / 0 - Copy row unchanged.
1623
+ if (y1_fraction == 0) {
1624
+ do {
1625
+ size_t vl = __riscv_vsetvl_e8m8(dst_w);
1626
+ __riscv_vse8_v_u8m8(dst_ptr, __riscv_vle8_v_u8m8(src_ptr, vl), vl);
1627
+ dst_w -= vl;
1628
+ src_ptr += vl;
1629
+ dst_ptr += vl;
1630
+ } while (dst_w > 0);
1631
+ return;
1632
+ }
1633
+ // To match behavior on other platforms, vxrm (fixed-point rounding mode
1634
+ // register) is set to round-to-nearest-up(0).
1635
+ asm volatile("csrwi vxrm, 0");
1636
+ // Blend 50 / 50.
1637
+ if (y1_fraction == 128) {
1638
+ do {
1639
+ size_t vl = __riscv_vsetvl_e8m8(dst_w);
1640
+ vuint8m8_t row0 = __riscv_vle8_v_u8m8(src_ptr, vl);
1641
+ vuint8m8_t row1 = __riscv_vle8_v_u8m8(src_ptr1, vl);
1642
+ // Use round-to-nearest-up mode for averaging add
1643
+ vuint8m8_t row_out = __riscv_vaaddu_vv_u8m8(row0, row1, vl);
1644
+ __riscv_vse8_v_u8m8(dst_ptr, row_out, vl);
1645
+ dst_w -= vl;
1646
+ src_ptr += vl;
1647
+ src_ptr1 += vl;
1648
+ dst_ptr += vl;
1649
+ } while (dst_w > 0);
1650
+ return;
1651
+ }
1652
+ // General purpose row blend.
1653
+ do {
1654
+ size_t vl = __riscv_vsetvl_e8m4(dst_w);
1655
+ vuint8m4_t row0 = __riscv_vle8_v_u8m4(src_ptr, vl);
1656
+ vuint16m8_t acc = __riscv_vwmulu_vx_u16m8(row0, y0_fraction, vl);
1657
+ vuint8m4_t row1 = __riscv_vle8_v_u8m4(src_ptr1, vl);
1658
+ acc = __riscv_vwmaccu_vx_u16m8(acc, y1_fraction, row1, vl);
1659
+ // Use round-to-nearest-up mode for vnclip
1660
+ __riscv_vse8_v_u8m4(dst_ptr, __riscv_vnclipu_wx_u8m4(acc, 8, vl), vl);
1661
+ dst_w -= vl;
1662
+ src_ptr += vl;
1663
+ src_ptr1 += vl;
1664
+ dst_ptr += vl;
1665
+ } while (dst_w > 0);
1666
+ }
1667
+ #endif
1668
+ #endif
1669
+
1670
+ #ifdef HAS_SPLITRGBROW_RVV
1671
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1672
+ void SplitRGBRow_RVV(const uint8_t* src_rgb,
1673
+ uint8_t* dst_r,
1674
+ uint8_t* dst_g,
1675
+ uint8_t* dst_b,
1676
+ int width) {
1677
+ size_t w = (size_t)width;
1678
+ do {
1679
+ size_t vl = __riscv_vsetvl_e8m2(w);
1680
+ vuint8m2x3_t v_src = __riscv_vlseg3e8_v_u8m2x3(src_rgb, vl);
1681
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x3_u8m2(v_src, 0);
1682
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x3_u8m2(v_src, 1);
1683
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x3_u8m2(v_src, 2);
1684
+ __riscv_vse8_v_u8m2(dst_r, v_r, vl);
1685
+ __riscv_vse8_v_u8m2(dst_g, v_g, vl);
1686
+ __riscv_vse8_v_u8m2(dst_b, v_b, vl);
1687
+ w -= vl;
1688
+ dst_r += vl;
1689
+ dst_g += vl;
1690
+ dst_b += vl;
1691
+ src_rgb += vl * 3;
1692
+ } while (w > 0);
1693
+ }
1694
+ #else
1695
+ void SplitRGBRow_RVV(const uint8_t* src_rgb,
1696
+ uint8_t* dst_r,
1697
+ uint8_t* dst_g,
1698
+ uint8_t* dst_b,
1699
+ int width) {
1700
+ size_t w = (size_t)width;
1701
+ do {
1702
+ vuint8m2_t v_b, v_g, v_r;
1703
+ size_t vl = __riscv_vsetvl_e8m2(w);
1704
+ __riscv_vlseg3e8_v_u8m2(&v_r, &v_g, &v_b, src_rgb, vl);
1705
+ __riscv_vse8_v_u8m2(dst_r, v_r, vl);
1706
+ __riscv_vse8_v_u8m2(dst_g, v_g, vl);
1707
+ __riscv_vse8_v_u8m2(dst_b, v_b, vl);
1708
+ w -= vl;
1709
+ dst_r += vl;
1710
+ dst_g += vl;
1711
+ dst_b += vl;
1712
+ src_rgb += vl * 3;
1713
+ } while (w > 0);
1714
+ }
1715
+ #endif
1716
+ #endif
1717
+
1718
+ #ifdef HAS_MERGERGBROW_RVV
1719
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1720
+ void MergeRGBRow_RVV(const uint8_t* src_r,
1721
+ const uint8_t* src_g,
1722
+ const uint8_t* src_b,
1723
+ uint8_t* dst_rgb,
1724
+ int width) {
1725
+ size_t w = (size_t)width;
1726
+ do {
1727
+ size_t vl = __riscv_vsetvl_e8m2(w);
1728
+ vuint8m2_t v_r = __riscv_vle8_v_u8m2(src_r, vl);
1729
+ vuint8m2_t v_g = __riscv_vle8_v_u8m2(src_g, vl);
1730
+ vuint8m2_t v_b = __riscv_vle8_v_u8m2(src_b, vl);
1731
+ vuint8m2x3_t v_dst = __riscv_vcreate_v_u8m2x3(v_r, v_g, v_b);
1732
+ __riscv_vsseg3e8_v_u8m2x3(dst_rgb, v_dst, vl);
1733
+ w -= vl;
1734
+ src_r += vl;
1735
+ src_g += vl;
1736
+ src_b += vl;
1737
+ dst_rgb += vl * 3;
1738
+ } while (w > 0);
1739
+ }
1740
+ #else
1741
+ void MergeRGBRow_RVV(const uint8_t* src_r,
1742
+ const uint8_t* src_g,
1743
+ const uint8_t* src_b,
1744
+ uint8_t* dst_rgb,
1745
+ int width) {
1746
+ size_t w = (size_t)width;
1747
+ do {
1748
+ size_t vl = __riscv_vsetvl_e8m2(w);
1749
+ vuint8m2_t v_r = __riscv_vle8_v_u8m2(src_r, vl);
1750
+ vuint8m2_t v_g = __riscv_vle8_v_u8m2(src_g, vl);
1751
+ vuint8m2_t v_b = __riscv_vle8_v_u8m2(src_b, vl);
1752
+ __riscv_vsseg3e8_v_u8m2(dst_rgb, v_r, v_g, v_b, vl);
1753
+ w -= vl;
1754
+ src_r += vl;
1755
+ src_g += vl;
1756
+ src_b += vl;
1757
+ dst_rgb += vl * 3;
1758
+ } while (w > 0);
1759
+ }
1760
+ #endif
1761
+ #endif
1762
+
1763
+ #ifdef HAS_SPLITARGBROW_RVV
1764
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1765
+ void SplitARGBRow_RVV(const uint8_t* src_argb,
1766
+ uint8_t* dst_r,
1767
+ uint8_t* dst_g,
1768
+ uint8_t* dst_b,
1769
+ uint8_t* dst_a,
1770
+ int width) {
1771
+ size_t w = (size_t)width;
1772
+ do {
1773
+ size_t vl = __riscv_vsetvl_e8m2(w);
1774
+ vuint8m2x4_t v_src = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
1775
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src, 0);
1776
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src, 1);
1777
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src, 2);
1778
+ vuint8m2_t v_a = __riscv_vget_v_u8m2x4_u8m2(v_src, 3);
1779
+ __riscv_vse8_v_u8m2(dst_a, v_a, vl);
1780
+ __riscv_vse8_v_u8m2(dst_r, v_r, vl);
1781
+ __riscv_vse8_v_u8m2(dst_g, v_g, vl);
1782
+ __riscv_vse8_v_u8m2(dst_b, v_b, vl);
1783
+ w -= vl;
1784
+ dst_a += vl;
1785
+ dst_r += vl;
1786
+ dst_g += vl;
1787
+ dst_b += vl;
1788
+ src_argb += vl * 4;
1789
+ } while (w > 0);
1790
+ }
1791
+ #else
1792
+ void SplitARGBRow_RVV(const uint8_t* src_argb,
1793
+ uint8_t* dst_r,
1794
+ uint8_t* dst_g,
1795
+ uint8_t* dst_b,
1796
+ uint8_t* dst_a,
1797
+ int width) {
1798
+ size_t w = (size_t)width;
1799
+ do {
1800
+ vuint8m2_t v_b, v_g, v_r, v_a;
1801
+ size_t vl = __riscv_vsetvl_e8m2(w);
1802
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
1803
+ __riscv_vse8_v_u8m2(dst_a, v_a, vl);
1804
+ __riscv_vse8_v_u8m2(dst_r, v_r, vl);
1805
+ __riscv_vse8_v_u8m2(dst_g, v_g, vl);
1806
+ __riscv_vse8_v_u8m2(dst_b, v_b, vl);
1807
+ w -= vl;
1808
+ dst_a += vl;
1809
+ dst_r += vl;
1810
+ dst_g += vl;
1811
+ dst_b += vl;
1812
+ src_argb += vl * 4;
1813
+ } while (w > 0);
1814
+ }
1815
+ #endif
1816
+ #endif
1817
+
1818
+ #ifdef HAS_MERGEARGBROW_RVV
1819
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1820
+ void MergeARGBRow_RVV(const uint8_t* src_r,
1821
+ const uint8_t* src_g,
1822
+ const uint8_t* src_b,
1823
+ const uint8_t* src_a,
1824
+ uint8_t* dst_argb,
1825
+ int width) {
1826
+ size_t w = (size_t)width;
1827
+ do {
1828
+ size_t vl = __riscv_vsetvl_e8m2(w);
1829
+ vuint8m2_t v_r = __riscv_vle8_v_u8m2(src_r, vl);
1830
+ vuint8m2_t v_g = __riscv_vle8_v_u8m2(src_g, vl);
1831
+ vuint8m2_t v_b = __riscv_vle8_v_u8m2(src_b, vl);
1832
+ vuint8m2_t v_a = __riscv_vle8_v_u8m2(src_a, vl);
1833
+ vuint8m2x4_t v_dst = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
1834
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst, vl);
1835
+ w -= vl;
1836
+ src_r += vl;
1837
+ src_g += vl;
1838
+ src_b += vl;
1839
+ src_a += vl;
1840
+ dst_argb += vl * 4;
1841
+ } while (w > 0);
1842
+ }
1843
+ #else
1844
+ void MergeARGBRow_RVV(const uint8_t* src_r,
1845
+ const uint8_t* src_g,
1846
+ const uint8_t* src_b,
1847
+ const uint8_t* src_a,
1848
+ uint8_t* dst_argb,
1849
+ int width) {
1850
+ size_t w = (size_t)width;
1851
+ do {
1852
+ size_t vl = __riscv_vsetvl_e8m2(w);
1853
+ vuint8m2_t v_r = __riscv_vle8_v_u8m2(src_r, vl);
1854
+ vuint8m2_t v_g = __riscv_vle8_v_u8m2(src_g, vl);
1855
+ vuint8m2_t v_b = __riscv_vle8_v_u8m2(src_b, vl);
1856
+ vuint8m2_t v_a = __riscv_vle8_v_u8m2(src_a, vl);
1857
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
1858
+ w -= vl;
1859
+ src_r += vl;
1860
+ src_g += vl;
1861
+ src_b += vl;
1862
+ src_a += vl;
1863
+ dst_argb += vl * 4;
1864
+ } while (w > 0);
1865
+ }
1866
+ #endif
1867
+ #endif
1868
+
1869
+ #ifdef HAS_SPLITXRGBROW_RVV
1870
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1871
+ void SplitXRGBRow_RVV(const uint8_t* src_argb,
1872
+ uint8_t* dst_r,
1873
+ uint8_t* dst_g,
1874
+ uint8_t* dst_b,
1875
+ int width) {
1876
+ size_t w = (size_t)width;
1877
+ do {
1878
+ size_t vl = __riscv_vsetvl_e8m2(w);
1879
+ vuint8m2x4_t v_src = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
1880
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src, 0);
1881
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src, 1);
1882
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src, 2);
1883
+ __riscv_vse8_v_u8m2(dst_r, v_r, vl);
1884
+ __riscv_vse8_v_u8m2(dst_g, v_g, vl);
1885
+ __riscv_vse8_v_u8m2(dst_b, v_b, vl);
1886
+ w -= vl;
1887
+ dst_r += vl;
1888
+ dst_g += vl;
1889
+ dst_b += vl;
1890
+ src_argb += vl * 4;
1891
+ } while (w > 0);
1892
+ }
1893
+ #else
1894
+ void SplitXRGBRow_RVV(const uint8_t* src_argb,
1895
+ uint8_t* dst_r,
1896
+ uint8_t* dst_g,
1897
+ uint8_t* dst_b,
1898
+ int width) {
1899
+ size_t w = (size_t)width;
1900
+ do {
1901
+ vuint8m2_t v_b, v_g, v_r, v_a;
1902
+ size_t vl = __riscv_vsetvl_e8m2(w);
1903
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
1904
+ __riscv_vse8_v_u8m2(dst_r, v_r, vl);
1905
+ __riscv_vse8_v_u8m2(dst_g, v_g, vl);
1906
+ __riscv_vse8_v_u8m2(dst_b, v_b, vl);
1907
+ w -= vl;
1908
+ dst_r += vl;
1909
+ dst_g += vl;
1910
+ dst_b += vl;
1911
+ src_argb += vl * 4;
1912
+ } while (w > 0);
1913
+ }
1914
+ #endif
1915
+ #endif
1916
+
1917
+ #ifdef HAS_MERGEXRGBROW_RVV
1918
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1919
+ void MergeXRGBRow_RVV(const uint8_t* src_r,
1920
+ const uint8_t* src_g,
1921
+ const uint8_t* src_b,
1922
+ uint8_t* dst_argb,
1923
+ int width) {
1924
+ size_t w = (size_t)width;
1925
+ size_t vl = __riscv_vsetvl_e8m2(w);
1926
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1927
+ do {
1928
+ vuint8m2_t v_r = __riscv_vle8_v_u8m2(src_r, vl);
1929
+ vuint8m2_t v_g = __riscv_vle8_v_u8m2(src_g, vl);
1930
+ vuint8m2_t v_b = __riscv_vle8_v_u8m2(src_b, vl);
1931
+ vuint8m2x4_t v_dst = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
1932
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst, vl);
1933
+ w -= vl;
1934
+ src_r += vl;
1935
+ src_g += vl;
1936
+ src_b += vl;
1937
+ dst_argb += vl * 4;
1938
+ vl = __riscv_vsetvl_e8m2(w);
1939
+ } while (w > 0);
1940
+ }
1941
+ #else
1942
+ void MergeXRGBRow_RVV(const uint8_t* src_r,
1943
+ const uint8_t* src_g,
1944
+ const uint8_t* src_b,
1945
+ uint8_t* dst_argb,
1946
+ int width) {
1947
+ size_t w = (size_t)width;
1948
+ size_t vl = __riscv_vsetvl_e8m2(w);
1949
+ vuint8m2_t v_a = __riscv_vmv_v_x_u8m2(255u, vl);
1950
+ do {
1951
+ vuint8m2_t v_r, v_g, v_b;
1952
+ v_r = __riscv_vle8_v_u8m2(src_r, vl);
1953
+ v_g = __riscv_vle8_v_u8m2(src_g, vl);
1954
+ v_b = __riscv_vle8_v_u8m2(src_b, vl);
1955
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
1956
+ w -= vl;
1957
+ src_r += vl;
1958
+ src_g += vl;
1959
+ src_b += vl;
1960
+ dst_argb += vl * 4;
1961
+ vl = __riscv_vsetvl_e8m2(w);
1962
+ } while (w > 0);
1963
+ }
1964
+ #endif
1965
+ #endif
1966
+
1967
+ #ifdef HAS_SPLITUVROW_RVV
1968
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
1969
+ void SplitUVRow_RVV(const uint8_t* src_uv,
1970
+ uint8_t* dst_u,
1971
+ uint8_t* dst_v,
1972
+ int width) {
1973
+ size_t w = (size_t)width;
1974
+ do {
1975
+ size_t vl = __riscv_vsetvl_e8m4(w);
1976
+ vuint8m4x2_t v_src = __riscv_vlseg2e8_v_u8m4x2(src_uv, vl);
1977
+ vuint8m4_t v_u = __riscv_vget_v_u8m4x2_u8m4(v_src, 0);
1978
+ vuint8m4_t v_v = __riscv_vget_v_u8m4x2_u8m4(v_src, 1);
1979
+ __riscv_vse8_v_u8m4(dst_u, v_u, vl);
1980
+ __riscv_vse8_v_u8m4(dst_v, v_v, vl);
1981
+ w -= vl;
1982
+ dst_u += vl;
1983
+ dst_v += vl;
1984
+ src_uv += 2 * vl;
1985
+ } while (w > 0);
1986
+ }
1987
+ #else
1988
+ void SplitUVRow_RVV(const uint8_t* src_uv,
1989
+ uint8_t* dst_u,
1990
+ uint8_t* dst_v,
1991
+ int width) {
1992
+ size_t w = (size_t)width;
1993
+ do {
1994
+ size_t vl = __riscv_vsetvl_e8m4(w);
1995
+ vuint8m4_t v_u, v_v;
1996
+ __riscv_vlseg2e8_v_u8m4(&v_u, &v_v, src_uv, vl);
1997
+ __riscv_vse8_v_u8m4(dst_u, v_u, vl);
1998
+ __riscv_vse8_v_u8m4(dst_v, v_v, vl);
1999
+ w -= vl;
2000
+ dst_u += vl;
2001
+ dst_v += vl;
2002
+ src_uv += 2 * vl;
2003
+ } while (w > 0);
2004
+ }
2005
+ #endif
2006
+ #endif
2007
+
2008
+ #ifdef HAS_MERGEUVROW_RVV
2009
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
2010
+ void MergeUVRow_RVV(const uint8_t* src_u,
2011
+ const uint8_t* src_v,
2012
+ uint8_t* dst_uv,
2013
+ int width) {
2014
+ size_t w = (size_t)width;
2015
+ do {
2016
+ size_t vl = __riscv_vsetvl_e8m4(w);
2017
+ vuint8m4_t v_u = __riscv_vle8_v_u8m4(src_u, vl);
2018
+ vuint8m4_t v_v = __riscv_vle8_v_u8m4(src_v, vl);
2019
+ vuint8m4x2_t v_dst = __riscv_vcreate_v_u8m4x2(v_u, v_v);
2020
+ __riscv_vsseg2e8_v_u8m4x2(dst_uv, v_dst, vl);
2021
+ w -= vl;
2022
+ src_u += vl;
2023
+ src_v += vl;
2024
+ dst_uv += 2 * vl;
2025
+ } while (w > 0);
2026
+ }
2027
+ #else
2028
+ void MergeUVRow_RVV(const uint8_t* src_u,
2029
+ const uint8_t* src_v,
2030
+ uint8_t* dst_uv,
2031
+ int width) {
2032
+ size_t w = (size_t)width;
2033
+ do {
2034
+ vuint8m4_t v_u, v_v;
2035
+ size_t vl = __riscv_vsetvl_e8m4(w);
2036
+ v_u = __riscv_vle8_v_u8m4(src_u, vl);
2037
+ v_v = __riscv_vle8_v_u8m4(src_v, vl);
2038
+ __riscv_vsseg2e8_v_u8m4(dst_uv, v_u, v_v, vl);
2039
+ w -= vl;
2040
+ src_u += vl;
2041
+ src_v += vl;
2042
+ dst_uv += 2 * vl;
2043
+ } while (w > 0);
2044
+ }
2045
+ #endif
2046
+ #endif
2047
+
2048
+ struct RgbConstants {
2049
+ uint8_t kRGBToY[4];
2050
+ uint16_t kAddY;
2051
+ uint16_t pad;
2052
+ };
2053
+
2054
+ // RGB to JPeg coefficients
2055
+ // B * 0.1140 coefficient = 29
2056
+ // G * 0.5870 coefficient = 150
2057
+ // R * 0.2990 coefficient = 77
2058
+ // Add 0.5 = 0x80
2059
+ static const struct RgbConstants kRgb24JPEGConstants = {{29, 150, 77, 0},
2060
+ 128,
2061
+ 0};
2062
+
2063
+ static const struct RgbConstants kRawJPEGConstants = {{77, 150, 29, 0}, 128, 0};
2064
+
2065
+ // RGB to BT.601 coefficients
2066
+ // B * 0.1016 coefficient = 25
2067
+ // G * 0.5078 coefficient = 129
2068
+ // R * 0.2578 coefficient = 66
2069
+ // Add 16.5 = 0x1080
2070
+
2071
+ static const struct RgbConstants kRgb24I601Constants = {{25, 129, 66, 0},
2072
+ 0x1080,
2073
+ 0};
2074
+
2075
+ static const struct RgbConstants kRawI601Constants = {{66, 129, 25, 0},
2076
+ 0x1080,
2077
+ 0};
2078
+
2079
+ // ARGB expects first 3 values to contain RGB and 4th value is ignored
2080
+ #ifdef HAS_ARGBTOYMATRIXROW_RVV
2081
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
2082
+ static void ARGBToYMatrixRow_RVV(const uint8_t* src_argb,
2083
+ uint8_t* dst_y,
2084
+ int width,
2085
+ const struct RgbConstants* rgbconstants) {
2086
+ assert(width != 0);
2087
+ size_t w = (size_t)width;
2088
+ vuint8m2_t v_by, v_gy, v_ry; // vectors are to store RGBToY constant
2089
+ vuint16m4_t v_addy; // vector is to store kAddY
2090
+ size_t vl = __riscv_vsetvl_e8m2(w);
2091
+ v_by = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[0], vl);
2092
+ v_gy = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[1], vl);
2093
+ v_ry = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[2], vl);
2094
+ v_addy = __riscv_vmv_v_x_u16m4(rgbconstants->kAddY, vl);
2095
+ do {
2096
+ vuint8m2_t v_y;
2097
+ vuint16m4_t v_y_u16;
2098
+ size_t vl = __riscv_vsetvl_e8m2(w);
2099
+ vuint8m2x4_t v_src_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
2100
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 0);
2101
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 1);
2102
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 2);
2103
+ v_y_u16 = __riscv_vwmulu_vv_u16m4(v_r, v_ry, vl);
2104
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_gy, v_g, vl);
2105
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_by, v_b, vl);
2106
+ v_y_u16 = __riscv_vadd_vv_u16m4(v_y_u16, v_addy, vl);
2107
+ v_y = __riscv_vnsrl_wx_u8m2(v_y_u16, 8, vl);
2108
+ __riscv_vse8_v_u8m2(dst_y, v_y, vl);
2109
+ w -= vl;
2110
+ src_argb += 4 * vl;
2111
+ dst_y += vl;
2112
+ } while (w > 0);
2113
+ }
2114
+ #else
2115
+ static void ARGBToYMatrixRow_RVV(const uint8_t* src_argb,
2116
+ uint8_t* dst_y,
2117
+ int width,
2118
+ const struct RgbConstants* rgbconstants) {
2119
+ assert(width != 0);
2120
+ size_t w = (size_t)width;
2121
+ vuint8m2_t v_by, v_gy, v_ry; // vectors are to store RGBToY constant
2122
+ vuint16m4_t v_addy; // vector is to store kAddY
2123
+ size_t vl = __riscv_vsetvl_e8m2(w);
2124
+ v_by = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[0], vl);
2125
+ v_gy = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[1], vl);
2126
+ v_ry = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[2], vl);
2127
+ v_addy = __riscv_vmv_v_x_u16m4(rgbconstants->kAddY, vl);
2128
+ do {
2129
+ vuint8m2_t v_b, v_g, v_r, v_a, v_y;
2130
+ vuint16m4_t v_y_u16;
2131
+ size_t vl = __riscv_vsetvl_e8m2(w);
2132
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
2133
+ v_y_u16 = __riscv_vwmulu_vv_u16m4(v_r, v_ry, vl);
2134
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_gy, v_g, vl);
2135
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_by, v_b, vl);
2136
+ v_y_u16 = __riscv_vadd_vv_u16m4(v_y_u16, v_addy, vl);
2137
+ v_y = __riscv_vnsrl_wx_u8m2(v_y_u16, 8, vl);
2138
+ __riscv_vse8_v_u8m2(dst_y, v_y, vl);
2139
+ w -= vl;
2140
+ src_argb += 4 * vl;
2141
+ dst_y += vl;
2142
+ } while (w > 0);
2143
+ }
2144
+ #endif
2145
+ #endif
2146
+
2147
+ #ifdef HAS_ARGBTOYROW_RVV
2148
+ void ARGBToYRow_RVV(const uint8_t* src_argb, uint8_t* dst_y, int width) {
2149
+ ARGBToYMatrixRow_RVV(src_argb, dst_y, width, &kRgb24I601Constants);
2150
+ }
2151
+ #endif
2152
+
2153
+ #ifdef HAS_ARGBTOYJROW_RVV
2154
+ void ARGBToYJRow_RVV(const uint8_t* src_argb, uint8_t* dst_yj, int width) {
2155
+ ARGBToYMatrixRow_RVV(src_argb, dst_yj, width, &kRgb24JPEGConstants);
2156
+ }
2157
+ #endif
2158
+
2159
+ #ifdef HAS_ABGRTOYROW_RVV
2160
+ void ABGRToYRow_RVV(const uint8_t* src_abgr, uint8_t* dst_y, int width) {
2161
+ ARGBToYMatrixRow_RVV(src_abgr, dst_y, width, &kRawI601Constants);
2162
+ }
2163
+ #endif
2164
+
2165
+ #ifdef HAS_ABGRTOYJROW_RVV
2166
+ void ABGRToYJRow_RVV(const uint8_t* src_abgr, uint8_t* dst_yj, int width) {
2167
+ ARGBToYMatrixRow_RVV(src_abgr, dst_yj, width, &kRawJPEGConstants);
2168
+ }
2169
+ #endif
2170
+
2171
+ // RGBA expects first value to be A and ignored, then 3 values to contain RGB.
2172
+ #ifdef HAS_RGBATOYMATRIXROW_RVV
2173
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
2174
+ static void RGBAToYMatrixRow_RVV(const uint8_t* src_rgba,
2175
+ uint8_t* dst_y,
2176
+ int width,
2177
+ const struct RgbConstants* rgbconstants) {
2178
+ assert(width != 0);
2179
+ size_t w = (size_t)width;
2180
+ vuint8m2_t v_by, v_gy, v_ry; // vectors are to store RGBToY constant
2181
+ vuint16m4_t v_addy; // vector is to store kAddY
2182
+ size_t vl = __riscv_vsetvl_e8m2(w);
2183
+ v_by = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[0], vl);
2184
+ v_gy = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[1], vl);
2185
+ v_ry = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[2], vl);
2186
+ v_addy = __riscv_vmv_v_x_u16m4(rgbconstants->kAddY, vl);
2187
+ do {
2188
+ vuint8m2_t v_y;
2189
+ vuint16m4_t v_y_u16;
2190
+ size_t vl = __riscv_vsetvl_e8m2(w);
2191
+ vuint8m2x4_t v_src_rgba = __riscv_vlseg4e8_v_u8m2x4(src_rgba, vl);
2192
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_rgba, 1);
2193
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_rgba, 2);
2194
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_rgba, 3);
2195
+ v_y_u16 = __riscv_vwmulu_vv_u16m4(v_r, v_ry, vl);
2196
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_gy, v_g, vl);
2197
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_by, v_b, vl);
2198
+ v_y_u16 = __riscv_vadd_vv_u16m4(v_y_u16, v_addy, vl);
2199
+ v_y = __riscv_vnsrl_wx_u8m2(v_y_u16, 8, vl);
2200
+ __riscv_vse8_v_u8m2(dst_y, v_y, vl);
2201
+ w -= vl;
2202
+ src_rgba += 4 * vl;
2203
+ dst_y += vl;
2204
+ } while (w > 0);
2205
+ }
2206
+ #else
2207
+ static void RGBAToYMatrixRow_RVV(const uint8_t* src_rgba,
2208
+ uint8_t* dst_y,
2209
+ int width,
2210
+ const struct RgbConstants* rgbconstants) {
2211
+ assert(width != 0);
2212
+ size_t w = (size_t)width;
2213
+ vuint8m2_t v_by, v_gy, v_ry; // vectors are to store RGBToY constant
2214
+ vuint16m4_t v_addy; // vector is to store kAddY
2215
+ size_t vl = __riscv_vsetvl_e8m2(w);
2216
+ v_by = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[0], vl);
2217
+ v_gy = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[1], vl);
2218
+ v_ry = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[2], vl);
2219
+ v_addy = __riscv_vmv_v_x_u16m4(rgbconstants->kAddY, vl);
2220
+ do {
2221
+ vuint8m2_t v_b, v_g, v_r, v_a, v_y;
2222
+ vuint16m4_t v_y_u16;
2223
+ size_t vl = __riscv_vsetvl_e8m2(w);
2224
+ __riscv_vlseg4e8_v_u8m2(&v_a, &v_b, &v_g, &v_r, src_rgba, vl);
2225
+ v_y_u16 = __riscv_vwmulu_vv_u16m4(v_r, v_ry, vl);
2226
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_gy, v_g, vl);
2227
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_by, v_b, vl);
2228
+ v_y_u16 = __riscv_vadd_vv_u16m4(v_y_u16, v_addy, vl);
2229
+ v_y = __riscv_vnsrl_wx_u8m2(v_y_u16, 8, vl);
2230
+ __riscv_vse8_v_u8m2(dst_y, v_y, vl);
2231
+ w -= vl;
2232
+ src_rgba += 4 * vl;
2233
+ dst_y += vl;
2234
+ } while (w > 0);
2235
+ }
2236
+ #endif
2237
+ #endif
2238
+
2239
+ #ifdef HAS_RGBATOYROW_RVV
2240
+ void RGBAToYRow_RVV(const uint8_t* src_rgba, uint8_t* dst_y, int width) {
2241
+ RGBAToYMatrixRow_RVV(src_rgba, dst_y, width, &kRgb24I601Constants);
2242
+ }
2243
+ #endif
2244
+
2245
+ #ifdef HAS_RGBATOYJROW_RVV
2246
+ void RGBAToYJRow_RVV(const uint8_t* src_rgba, uint8_t* dst_yj, int width) {
2247
+ RGBAToYMatrixRow_RVV(src_rgba, dst_yj, width, &kRgb24JPEGConstants);
2248
+ }
2249
+ #endif
2250
+
2251
+ #ifdef HAS_BGRATOYROW_RVV
2252
+ void BGRAToYRow_RVV(const uint8_t* src_bgra, uint8_t* dst_y, int width) {
2253
+ RGBAToYMatrixRow_RVV(src_bgra, dst_y, width, &kRawI601Constants);
2254
+ }
2255
+ #endif
2256
+
2257
+ #ifdef HAS_RGBTOYMATRIXROW_RVV
2258
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
2259
+ static void RGBToYMatrixRow_RVV(const uint8_t* src_rgb,
2260
+ uint8_t* dst_y,
2261
+ int width,
2262
+ const struct RgbConstants* rgbconstants) {
2263
+ assert(width != 0);
2264
+ size_t w = (size_t)width;
2265
+ vuint8m2_t v_by, v_gy, v_ry; // vectors are to store RGBToY constant
2266
+ vuint16m4_t v_addy; // vector is to store kAddY
2267
+ size_t vl = __riscv_vsetvl_e8m2(w);
2268
+ v_by = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[0], vl);
2269
+ v_gy = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[1], vl);
2270
+ v_ry = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[2], vl);
2271
+ v_addy = __riscv_vmv_v_x_u16m4(rgbconstants->kAddY, vl);
2272
+ do {
2273
+ vuint8m2_t v_y;
2274
+ vuint16m4_t v_y_u16;
2275
+ size_t vl = __riscv_vsetvl_e8m2(w);
2276
+ vuint8m2x3_t v_src_rgb = __riscv_vlseg3e8_v_u8m2x3(src_rgb, vl);
2277
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x3_u8m2(v_src_rgb, 0);
2278
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x3_u8m2(v_src_rgb, 1);
2279
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x3_u8m2(v_src_rgb, 2);
2280
+ v_y_u16 = __riscv_vwmulu_vv_u16m4(v_r, v_ry, vl);
2281
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_gy, v_g, vl);
2282
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_by, v_b, vl);
2283
+ v_y_u16 = __riscv_vadd_vv_u16m4(v_y_u16, v_addy, vl);
2284
+ v_y = __riscv_vnsrl_wx_u8m2(v_y_u16, 8, vl);
2285
+ __riscv_vse8_v_u8m2(dst_y, v_y, vl);
2286
+ w -= vl;
2287
+ src_rgb += 3 * vl;
2288
+ dst_y += vl;
2289
+ } while (w > 0);
2290
+ }
2291
+ #else
2292
+ static void RGBToYMatrixRow_RVV(const uint8_t* src_rgb,
2293
+ uint8_t* dst_y,
2294
+ int width,
2295
+ const struct RgbConstants* rgbconstants) {
2296
+ assert(width != 0);
2297
+ size_t w = (size_t)width;
2298
+ vuint8m2_t v_by, v_gy, v_ry; // vectors are to store RGBToY constant
2299
+ vuint16m4_t v_addy; // vector is to store kAddY
2300
+ size_t vl = __riscv_vsetvl_e8m2(w);
2301
+ v_by = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[0], vl);
2302
+ v_gy = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[1], vl);
2303
+ v_ry = __riscv_vmv_v_x_u8m2(rgbconstants->kRGBToY[2], vl);
2304
+ v_addy = __riscv_vmv_v_x_u16m4(rgbconstants->kAddY, vl);
2305
+ do {
2306
+ vuint8m2_t v_b, v_g, v_r, v_y;
2307
+ vuint16m4_t v_y_u16;
2308
+ size_t vl = __riscv_vsetvl_e8m2(w);
2309
+ __riscv_vlseg3e8_v_u8m2(&v_b, &v_g, &v_r, src_rgb, vl);
2310
+ v_y_u16 = __riscv_vwmulu_vv_u16m4(v_r, v_ry, vl);
2311
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_gy, v_g, vl);
2312
+ v_y_u16 = __riscv_vwmaccu_vv_u16m4(v_y_u16, v_by, v_b, vl);
2313
+ v_y_u16 = __riscv_vadd_vv_u16m4(v_y_u16, v_addy, vl);
2314
+ v_y = __riscv_vnsrl_wx_u8m2(v_y_u16, 8, vl);
2315
+ __riscv_vse8_v_u8m2(dst_y, v_y, vl);
2316
+ w -= vl;
2317
+ src_rgb += 3 * vl;
2318
+ dst_y += vl;
2319
+ } while (w > 0);
2320
+ }
2321
+ #endif
2322
+ #endif
2323
+
2324
+ #ifdef HAS_RGB24TOYJROW_RVV
2325
+ void RGB24ToYJRow_RVV(const uint8_t* src_rgb24, uint8_t* dst_yj, int width) {
2326
+ RGBToYMatrixRow_RVV(src_rgb24, dst_yj, width, &kRgb24JPEGConstants);
2327
+ }
2328
+ #endif
2329
+
2330
+ #ifdef HAS_RAWTOYJROW_RVV
2331
+ void RAWToYJRow_RVV(const uint8_t* src_raw, uint8_t* dst_yj, int width) {
2332
+ RGBToYMatrixRow_RVV(src_raw, dst_yj, width, &kRawJPEGConstants);
2333
+ }
2334
+ #endif
2335
+
2336
+ #ifdef HAS_RGB24TOYROW_RVV
2337
+ void RGB24ToYRow_RVV(const uint8_t* src_rgb24, uint8_t* dst_y, int width) {
2338
+ RGBToYMatrixRow_RVV(src_rgb24, dst_y, width, &kRgb24I601Constants);
2339
+ }
2340
+ #endif
2341
+
2342
+ #ifdef HAS_RAWTOYROW_RVV
2343
+ void RAWToYRow_RVV(const uint8_t* src_raw, uint8_t* dst_y, int width) {
2344
+ RGBToYMatrixRow_RVV(src_raw, dst_y, width, &kRawI601Constants);
2345
+ }
2346
+ #endif
2347
+
2348
+ // Blend src_argb over src_argb1 and store to dst_argb.
2349
+ // dst_argb may be src_argb or src_argb1.
2350
+ // src_argb: RGB values have already been pre-multiplied by the a.
2351
+ #ifdef HAS_ARGBBLENDROW_RVV
2352
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
2353
+ void ARGBBlendRow_RVV(const uint8_t* src_argb,
2354
+ const uint8_t* src_argb1,
2355
+ uint8_t* dst_argb,
2356
+ int width) {
2357
+ size_t w = (size_t)width;
2358
+ size_t vl = __riscv_vsetvlmax_e8m2();
2359
+ // clamp255((((256 - a) * b) >> 8) + f)
2360
+ // = b * (256 - a) / 256 + f
2361
+ // = b - (b * a / 256) + f
2362
+ vuint8m2_t v_255 = __riscv_vmv_v_x_u8m2(255, vl);
2363
+ do {
2364
+ vuint8m2_t v_tmp_b, v_tmp_g, v_tmp_r;
2365
+ vuint8m2_t v_dst_b, v_dst_g, v_dst_r;
2366
+ vuint8m2x4_t v_dst_argb;
2367
+ size_t vl = __riscv_vsetvl_e8m2(w);
2368
+ vuint8m2x4_t v_src0_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
2369
+ vuint8m2_t v_src0_b = __riscv_vget_v_u8m2x4_u8m2(v_src0_argb, 0);
2370
+ vuint8m2_t v_src0_g = __riscv_vget_v_u8m2x4_u8m2(v_src0_argb, 1);
2371
+ vuint8m2_t v_src0_r = __riscv_vget_v_u8m2x4_u8m2(v_src0_argb, 2);
2372
+ vuint8m2_t v_src0_a = __riscv_vget_v_u8m2x4_u8m2(v_src0_argb, 3);
2373
+ vuint8m2x4_t v_src1_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb1, vl);
2374
+ vuint8m2_t v_src1_b = __riscv_vget_v_u8m2x4_u8m2(v_src1_argb, 0);
2375
+ vuint8m2_t v_src1_g = __riscv_vget_v_u8m2x4_u8m2(v_src1_argb, 1);
2376
+ vuint8m2_t v_src1_r = __riscv_vget_v_u8m2x4_u8m2(v_src1_argb, 2);
2377
+
2378
+ v_tmp_b = __riscv_vmulhu_vv_u8m2(v_src1_b, v_src0_a, vl);
2379
+ v_tmp_g = __riscv_vmulhu_vv_u8m2(v_src1_g, v_src0_a, vl);
2380
+ v_tmp_r = __riscv_vmulhu_vv_u8m2(v_src1_r, v_src0_a, vl);
2381
+
2382
+ v_dst_b = __riscv_vsub_vv_u8m2(v_src1_b, v_tmp_b, vl);
2383
+ v_dst_g = __riscv_vsub_vv_u8m2(v_src1_g, v_tmp_g, vl);
2384
+ v_dst_r = __riscv_vsub_vv_u8m2(v_src1_r, v_tmp_r, vl);
2385
+
2386
+ v_dst_b = __riscv_vsaddu_vv_u8m2(v_dst_b, v_src0_b, vl);
2387
+ v_dst_g = __riscv_vsaddu_vv_u8m2(v_dst_g, v_src0_g, vl);
2388
+ v_dst_r = __riscv_vsaddu_vv_u8m2(v_dst_r, v_src0_r, vl);
2389
+
2390
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_dst_b, v_dst_g, v_dst_r, v_255);
2391
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
2392
+
2393
+ w -= vl;
2394
+ src_argb += 4 * vl;
2395
+ src_argb1 += 4 * vl;
2396
+ dst_argb += 4 * vl;
2397
+ } while (w > 0);
2398
+ }
2399
+ #else
2400
+ void ARGBBlendRow_RVV(const uint8_t* src_argb,
2401
+ const uint8_t* src_argb1,
2402
+ uint8_t* dst_argb,
2403
+ int width) {
2404
+ size_t w = (size_t)width;
2405
+ size_t vl = __riscv_vsetvlmax_e8m2();
2406
+ // clamp255((((256 - a) * b) >> 8) + f)
2407
+ // = b * (256 - a) / 256 + f
2408
+ // = b - (b * a / 256) + f
2409
+ vuint8m2_t v_255 = __riscv_vmv_v_x_u8m2(255, vl);
2410
+ do {
2411
+ vuint8m2_t v_src0_b, v_src0_g, v_src0_r, v_src0_a;
2412
+ vuint8m2_t v_src1_b, v_src1_g, v_src1_r, v_src1_a;
2413
+ vuint8m2_t v_tmp_b, v_tmp_g, v_tmp_r;
2414
+ vuint8m2_t v_dst_b, v_dst_g, v_dst_r;
2415
+ vl = __riscv_vsetvl_e8m2(w);
2416
+ __riscv_vlseg4e8_v_u8m2(&v_src0_b, &v_src0_g, &v_src0_r, &v_src0_a,
2417
+ src_argb, vl);
2418
+ __riscv_vlseg4e8_v_u8m2(&v_src1_b, &v_src1_g, &v_src1_r, &v_src1_a,
2419
+ src_argb1, vl);
2420
+
2421
+ v_tmp_b = __riscv_vmulhu_vv_u8m2(v_src1_b, v_src0_a, vl);
2422
+ v_tmp_g = __riscv_vmulhu_vv_u8m2(v_src1_g, v_src0_a, vl);
2423
+ v_tmp_r = __riscv_vmulhu_vv_u8m2(v_src1_r, v_src0_a, vl);
2424
+
2425
+ v_dst_b = __riscv_vsub_vv_u8m2(v_src1_b, v_tmp_b, vl);
2426
+ v_dst_g = __riscv_vsub_vv_u8m2(v_src1_g, v_tmp_g, vl);
2427
+ v_dst_r = __riscv_vsub_vv_u8m2(v_src1_r, v_tmp_r, vl);
2428
+
2429
+ v_dst_b = __riscv_vsaddu_vv_u8m2(v_dst_b, v_src0_b, vl);
2430
+ v_dst_g = __riscv_vsaddu_vv_u8m2(v_dst_g, v_src0_g, vl);
2431
+ v_dst_r = __riscv_vsaddu_vv_u8m2(v_dst_r, v_src0_r, vl);
2432
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_dst_b, v_dst_g, v_dst_r, v_255, vl);
2433
+
2434
+ w -= vl;
2435
+ src_argb += 4 * vl;
2436
+ src_argb1 += 4 * vl;
2437
+ dst_argb += 4 * vl;
2438
+ } while (w > 0);
2439
+ }
2440
+ #endif
2441
+ #endif
2442
+
2443
+ #ifdef HAS_BLENDPLANEROW_RVV
2444
+ void BlendPlaneRow_RVV(const uint8_t* src0,
2445
+ const uint8_t* src1,
2446
+ const uint8_t* alpha,
2447
+ uint8_t* dst,
2448
+ int width) {
2449
+ size_t w = (size_t)width;
2450
+ do {
2451
+ vuint16m8_t v_dst_u16;
2452
+ vuint8m4_t v_dst;
2453
+ size_t vl = __riscv_vsetvl_e8m4(w);
2454
+ vuint8m4_t v_src0 = __riscv_vle8_v_u8m4(src0, vl);
2455
+ vuint8m4_t v_src1 = __riscv_vle8_v_u8m4(src1, vl);
2456
+ vuint8m4_t v_alpha = __riscv_vle8_v_u8m4(alpha, vl);
2457
+ vuint8m4_t v_255_minus_alpha = __riscv_vrsub_vx_u8m4(v_alpha, 255u, vl);
2458
+
2459
+ // (a * foreground) + (1-a) * background
2460
+ v_dst_u16 = __riscv_vwmulu_vv_u16m8(v_alpha, v_src0, vl);
2461
+ v_dst_u16 =
2462
+ __riscv_vwmaccu_vv_u16m8(v_dst_u16, v_255_minus_alpha, v_src1, vl);
2463
+ v_dst_u16 = __riscv_vadd_vx_u16m8(v_dst_u16, 255u, vl);
2464
+ v_dst = __riscv_vnsrl_wx_u8m4(v_dst_u16, 8, vl);
2465
+
2466
+ __riscv_vse8_v_u8m4(dst, v_dst, vl);
2467
+ w -= vl;
2468
+ src0 += vl;
2469
+ src1 += vl;
2470
+ alpha += vl;
2471
+ dst += vl;
2472
+ } while (w > 0);
2473
+ }
2474
+ #endif
2475
+
2476
+ // Attenuate: (f * a + 255) >> 8
2477
+ #ifdef HAS_ARGBATTENUATEROW_RVV
2478
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
2479
+ void ARGBAttenuateRow_RVV(const uint8_t* src_argb,
2480
+ uint8_t* dst_argb,
2481
+ int width) {
2482
+ size_t w = (size_t)width;
2483
+ do {
2484
+ vuint16m4_t v_ba_16, v_ga_16, v_ra_16;
2485
+ vuint8m2x4_t v_dst_argb;
2486
+ size_t vl = __riscv_vsetvl_e8m2(w);
2487
+ vuint8m2x4_t v_src_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
2488
+ vuint8m2_t v_b = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 0);
2489
+ vuint8m2_t v_g = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 1);
2490
+ vuint8m2_t v_r = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 2);
2491
+ vuint8m2_t v_a = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 3);
2492
+ // f * a
2493
+ v_ba_16 = __riscv_vwmulu_vv_u16m4(v_b, v_a, vl);
2494
+ v_ga_16 = __riscv_vwmulu_vv_u16m4(v_g, v_a, vl);
2495
+ v_ra_16 = __riscv_vwmulu_vv_u16m4(v_r, v_a, vl);
2496
+ // f * a + 255
2497
+ v_ba_16 = __riscv_vadd_vx_u16m4(v_ba_16, 255u, vl);
2498
+ v_ga_16 = __riscv_vadd_vx_u16m4(v_ga_16, 255u, vl);
2499
+ v_ra_16 = __riscv_vadd_vx_u16m4(v_ra_16, 255u, vl);
2500
+ // (f * a + 255) >> 8
2501
+ v_b = __riscv_vnsrl_wx_u8m2(v_ba_16, 8, vl);
2502
+ v_g = __riscv_vnsrl_wx_u8m2(v_ga_16, 8, vl);
2503
+ v_r = __riscv_vnsrl_wx_u8m2(v_ra_16, 8, vl);
2504
+
2505
+ v_dst_argb = __riscv_vcreate_v_u8m2x4(v_b, v_g, v_r, v_a);
2506
+ __riscv_vsseg4e8_v_u8m2x4(dst_argb, v_dst_argb, vl);
2507
+ w -= vl;
2508
+ src_argb += vl * 4;
2509
+ dst_argb += vl * 4;
2510
+ } while (w > 0);
2511
+ }
2512
+ #else
2513
+ void ARGBAttenuateRow_RVV(const uint8_t* src_argb,
2514
+ uint8_t* dst_argb,
2515
+ int width) {
2516
+ size_t w = (size_t)width;
2517
+ do {
2518
+ vuint8m2_t v_b, v_g, v_r, v_a;
2519
+ vuint16m4_t v_ba_16, v_ga_16, v_ra_16;
2520
+ size_t vl = __riscv_vsetvl_e8m2(w);
2521
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
2522
+ // f * a
2523
+ v_ba_16 = __riscv_vwmulu_vv_u16m4(v_b, v_a, vl);
2524
+ v_ga_16 = __riscv_vwmulu_vv_u16m4(v_g, v_a, vl);
2525
+ v_ra_16 = __riscv_vwmulu_vv_u16m4(v_r, v_a, vl);
2526
+ // f * a + 255
2527
+ v_ba_16 = __riscv_vadd_vx_u16m4(v_ba_16, 255u, vl);
2528
+ v_ga_16 = __riscv_vadd_vx_u16m4(v_ga_16, 255u, vl);
2529
+ v_ra_16 = __riscv_vadd_vx_u16m4(v_ra_16, 255u, vl);
2530
+ // (f * a + 255) >> 8
2531
+ v_b = __riscv_vnsrl_wx_u8m2(v_ba_16, 8, vl);
2532
+ v_g = __riscv_vnsrl_wx_u8m2(v_ga_16, 8, vl);
2533
+ v_r = __riscv_vnsrl_wx_u8m2(v_ra_16, 8, vl);
2534
+ __riscv_vsseg4e8_v_u8m2(dst_argb, v_b, v_g, v_r, v_a, vl);
2535
+ w -= vl;
2536
+ src_argb += vl * 4;
2537
+ dst_argb += vl * 4;
2538
+ } while (w > 0);
2539
+ }
2540
+ #endif
2541
+ #endif
2542
+
2543
+ #ifdef HAS_ARGBEXTRACTALPHAROW_RVV
2544
+ #ifdef LIBYUV_RVV_HAS_TUPLE_TYPE
2545
+ void ARGBExtractAlphaRow_RVV(const uint8_t* src_argb,
2546
+ uint8_t* dst_a,
2547
+ int width) {
2548
+ size_t w = (size_t)width;
2549
+ do {
2550
+ size_t vl = __riscv_vsetvl_e8m2(w);
2551
+ vuint8m2x4_t v_src_argb = __riscv_vlseg4e8_v_u8m2x4(src_argb, vl);
2552
+ vuint8m2_t v_a = __riscv_vget_v_u8m2x4_u8m2(v_src_argb, 3);
2553
+ __riscv_vse8_v_u8m2(dst_a, v_a, vl);
2554
+ w -= vl;
2555
+ src_argb += vl * 4;
2556
+ dst_a += vl;
2557
+ } while (w > 0);
2558
+ }
2559
+ #else
2560
+ void ARGBExtractAlphaRow_RVV(const uint8_t* src_argb,
2561
+ uint8_t* dst_a,
2562
+ int width) {
2563
+ size_t w = (size_t)width;
2564
+ do {
2565
+ size_t vl = __riscv_vsetvl_e8m2(w);
2566
+ vuint8m2_t v_b, v_g, v_r, v_a;
2567
+ __riscv_vlseg4e8_v_u8m2(&v_b, &v_g, &v_r, &v_a, src_argb, vl);
2568
+ __riscv_vse8_v_u8m2(dst_a, v_a, vl);
2569
+ w -= vl;
2570
+ src_argb += vl * 4;
2571
+ dst_a += vl;
2572
+ } while (w > 0);
2573
+ }
2574
+ #endif
2575
+ #endif
2576
+
2577
+ #ifdef HAS_ARGBCOPYYTOALPHAROW_RVV
2578
+ void ARGBCopyYToAlphaRow_RVV(const uint8_t* src, uint8_t* dst, int width) {
2579
+ size_t w = (size_t)width;
2580
+ const ptrdiff_t dst_stride = 4;
2581
+ dst += 3;
2582
+ do {
2583
+ size_t vl = __riscv_vsetvl_e8m8(w);
2584
+ vuint8m8_t v_a = __riscv_vle8_v_u8m8(src, vl);
2585
+ __riscv_vsse8_v_u8m8(dst, dst_stride, v_a, vl);
2586
+ w -= vl;
2587
+ src += vl;
2588
+ dst += vl * dst_stride;
2589
+ } while (w > 0);
2590
+ }
2591
+ #endif
2592
+
2593
+ #ifdef __cplusplus
2594
+ } // extern "C"
2595
+ } // namespace libyuv
2596
+ #endif
2597
+
2598
+ #endif // !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) &&
2599
+ // defined(__clang__)