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,3030 @@
1
+ /*
2
+ * Copyright 2022 The LibYuv Project Authors. All rights reserved.
3
+ *
4
+ * Copyright (c) 2022 Loongson Technology Corporation Limited
5
+ *
6
+ * Use of this source code is governed by a BSD-style license
7
+ * that can be found in the LICENSE file in the root of the source
8
+ * tree. An additional intellectual property rights grant can be found
9
+ * in the file PATENTS. All contributing project authors may
10
+ * be found in the AUTHORS file in the root of the source tree.
11
+ */
12
+
13
+ #include "libyuv/row.h"
14
+
15
+ #if !defined(LIBYUV_DISABLE_LSX) && defined(__loongarch_sx)
16
+ #include "libyuv/loongson_intrinsics.h"
17
+
18
+ #ifdef __cplusplus
19
+ namespace libyuv {
20
+ extern "C" {
21
+ #endif
22
+
23
+ // Fill YUV -> RGB conversion constants into vectors
24
+ #define YUVTORGB_SETUP(yuvconst, vr, ub, vg, ug, yg, yb) \
25
+ { \
26
+ ub = __lsx_vreplgr2vr_h(yuvconst->kUVToB[0]); \
27
+ vr = __lsx_vreplgr2vr_h(yuvconst->kUVToR[1]); \
28
+ ug = __lsx_vreplgr2vr_h(yuvconst->kUVToG[0]); \
29
+ vg = __lsx_vreplgr2vr_h(yuvconst->kUVToG[1]); \
30
+ yg = __lsx_vreplgr2vr_h(yuvconst->kYToRgb[0]); \
31
+ yb = __lsx_vreplgr2vr_w(yuvconst->kYBiasToRgb[0]); \
32
+ }
33
+
34
+ // Load 32 YUV422 pixel data
35
+ #define READYUV422_D(psrc_y, psrc_u, psrc_v, out_y, uv_l, uv_h) \
36
+ { \
37
+ __m128i temp0, temp1; \
38
+ \
39
+ DUP2_ARG2(__lsx_vld, psrc_y, 0, psrc_u, 0, out_y, temp0); \
40
+ temp1 = __lsx_vld(psrc_v, 0); \
41
+ temp0 = __lsx_vsub_b(temp0, const_80); \
42
+ temp1 = __lsx_vsub_b(temp1, const_80); \
43
+ temp0 = __lsx_vsllwil_h_b(temp0, 0); \
44
+ temp1 = __lsx_vsllwil_h_b(temp1, 0); \
45
+ uv_l = __lsx_vilvl_h(temp0, temp1); \
46
+ uv_h = __lsx_vilvh_h(temp0, temp1); \
47
+ }
48
+
49
+ // Load 16 YUV422 pixel data
50
+ #define READYUV422(psrc_y, psrc_u, psrc_v, out_y, uv) \
51
+ { \
52
+ __m128i temp0, temp1; \
53
+ \
54
+ out_y = __lsx_vld(psrc_y, 0); \
55
+ temp0 = __lsx_vldrepl_d(psrc_u, 0); \
56
+ temp1 = __lsx_vldrepl_d(psrc_v, 0); \
57
+ uv = __lsx_vilvl_b(temp0, temp1); \
58
+ uv = __lsx_vsub_b(uv, const_80); \
59
+ uv = __lsx_vsllwil_h_b(uv, 0); \
60
+ }
61
+
62
+ // Convert 16 pixels of YUV420 to RGB.
63
+ #define YUVTORGB_D(in_y, in_uvl, in_uvh, ubvr, ugvg, yg, yb, b_l, b_h, g_l, \
64
+ g_h, r_l, r_h) \
65
+ { \
66
+ __m128i u_l, u_h, v_l, v_h; \
67
+ __m128i yl_ev, yl_od, yh_ev, yh_od; \
68
+ __m128i temp0, temp1, temp2, temp3; \
69
+ \
70
+ temp0 = __lsx_vilvl_b(in_y, in_y); \
71
+ temp1 = __lsx_vilvh_b(in_y, in_y); \
72
+ yl_ev = __lsx_vmulwev_w_hu_h(temp0, yg); \
73
+ yl_od = __lsx_vmulwod_w_hu_h(temp0, yg); \
74
+ yh_ev = __lsx_vmulwev_w_hu_h(temp1, yg); \
75
+ yh_od = __lsx_vmulwod_w_hu_h(temp1, yg); \
76
+ DUP4_ARG2(__lsx_vsrai_w, yl_ev, 16, yl_od, 16, yh_ev, 16, yh_od, 16, \
77
+ yl_ev, yl_od, yh_ev, yh_od); \
78
+ yl_ev = __lsx_vadd_w(yl_ev, yb); \
79
+ yl_od = __lsx_vadd_w(yl_od, yb); \
80
+ yh_ev = __lsx_vadd_w(yh_ev, yb); \
81
+ yh_od = __lsx_vadd_w(yh_od, yb); \
82
+ v_l = __lsx_vmulwev_w_h(in_uvl, ubvr); \
83
+ u_l = __lsx_vmulwod_w_h(in_uvl, ubvr); \
84
+ v_h = __lsx_vmulwev_w_h(in_uvh, ubvr); \
85
+ u_h = __lsx_vmulwod_w_h(in_uvh, ubvr); \
86
+ temp0 = __lsx_vadd_w(yl_ev, u_l); \
87
+ temp1 = __lsx_vadd_w(yl_od, u_l); \
88
+ temp2 = __lsx_vadd_w(yh_ev, u_h); \
89
+ temp3 = __lsx_vadd_w(yh_od, u_h); \
90
+ DUP4_ARG2(__lsx_vsrai_w, temp0, 6, temp1, 6, temp2, 6, temp3, 6, temp0, \
91
+ temp1, temp2, temp3); \
92
+ DUP4_ARG1(__lsx_vclip255_w, temp0, temp1, temp2, temp3, temp0, temp1, \
93
+ temp2, temp3); \
94
+ b_l = __lsx_vpackev_h(temp1, temp0); \
95
+ b_h = __lsx_vpackev_h(temp3, temp2); \
96
+ temp0 = __lsx_vadd_w(yl_ev, v_l); \
97
+ temp1 = __lsx_vadd_w(yl_od, v_l); \
98
+ temp2 = __lsx_vadd_w(yh_ev, v_h); \
99
+ temp3 = __lsx_vadd_w(yh_od, v_h); \
100
+ DUP4_ARG2(__lsx_vsrai_w, temp0, 6, temp1, 6, temp2, 6, temp3, 6, temp0, \
101
+ temp1, temp2, temp3); \
102
+ DUP4_ARG1(__lsx_vclip255_w, temp0, temp1, temp2, temp3, temp0, temp1, \
103
+ temp2, temp3); \
104
+ r_l = __lsx_vpackev_h(temp1, temp0); \
105
+ r_h = __lsx_vpackev_h(temp3, temp2); \
106
+ DUP2_ARG2(__lsx_vdp2_w_h, in_uvl, ugvg, in_uvh, ugvg, u_l, u_h); \
107
+ temp0 = __lsx_vsub_w(yl_ev, u_l); \
108
+ temp1 = __lsx_vsub_w(yl_od, u_l); \
109
+ temp2 = __lsx_vsub_w(yh_ev, u_h); \
110
+ temp3 = __lsx_vsub_w(yh_od, u_h); \
111
+ DUP4_ARG2(__lsx_vsrai_w, temp0, 6, temp1, 6, temp2, 6, temp3, 6, temp0, \
112
+ temp1, temp2, temp3); \
113
+ DUP4_ARG1(__lsx_vclip255_w, temp0, temp1, temp2, temp3, temp0, temp1, \
114
+ temp2, temp3); \
115
+ g_l = __lsx_vpackev_h(temp1, temp0); \
116
+ g_h = __lsx_vpackev_h(temp3, temp2); \
117
+ }
118
+
119
+ // Convert 8 pixels of YUV420 to RGB.
120
+ #define YUVTORGB(in_y, in_vu, vrub, vgug, yg, yb, out_b, out_g, out_r) \
121
+ { \
122
+ __m128i y_ev, y_od, u_l, v_l; \
123
+ __m128i tmp0, tmp1, tmp2, tmp3; \
124
+ \
125
+ tmp0 = __lsx_vilvl_b(in_y, in_y); \
126
+ y_ev = __lsx_vmulwev_w_hu_h(tmp0, yg); \
127
+ y_od = __lsx_vmulwod_w_hu_h(tmp0, yg); \
128
+ y_ev = __lsx_vsrai_w(y_ev, 16); \
129
+ y_od = __lsx_vsrai_w(y_od, 16); \
130
+ y_ev = __lsx_vadd_w(y_ev, yb); \
131
+ y_od = __lsx_vadd_w(y_od, yb); \
132
+ in_vu = __lsx_vilvl_b(zero, in_vu); \
133
+ in_vu = __lsx_vsub_h(in_vu, const_80); \
134
+ u_l = __lsx_vmulwev_w_h(in_vu, vrub); \
135
+ v_l = __lsx_vmulwod_w_h(in_vu, vrub); \
136
+ tmp0 = __lsx_vadd_w(y_ev, u_l); \
137
+ tmp1 = __lsx_vadd_w(y_od, u_l); \
138
+ tmp2 = __lsx_vadd_w(y_ev, v_l); \
139
+ tmp3 = __lsx_vadd_w(y_od, v_l); \
140
+ tmp0 = __lsx_vsrai_w(tmp0, 6); \
141
+ tmp1 = __lsx_vsrai_w(tmp1, 6); \
142
+ tmp2 = __lsx_vsrai_w(tmp2, 6); \
143
+ tmp3 = __lsx_vsrai_w(tmp3, 6); \
144
+ tmp0 = __lsx_vclip255_w(tmp0); \
145
+ tmp1 = __lsx_vclip255_w(tmp1); \
146
+ tmp2 = __lsx_vclip255_w(tmp2); \
147
+ tmp3 = __lsx_vclip255_w(tmp3); \
148
+ out_b = __lsx_vpackev_h(tmp1, tmp0); \
149
+ out_r = __lsx_vpackev_h(tmp3, tmp2); \
150
+ tmp0 = __lsx_vdp2_w_h(in_vu, vgug); \
151
+ tmp1 = __lsx_vsub_w(y_ev, tmp0); \
152
+ tmp2 = __lsx_vsub_w(y_od, tmp0); \
153
+ tmp1 = __lsx_vsrai_w(tmp1, 6); \
154
+ tmp2 = __lsx_vsrai_w(tmp2, 6); \
155
+ tmp1 = __lsx_vclip255_w(tmp1); \
156
+ tmp2 = __lsx_vclip255_w(tmp2); \
157
+ out_g = __lsx_vpackev_h(tmp2, tmp1); \
158
+ }
159
+
160
+ // Convert I444 pixels of YUV420 to RGB.
161
+ #define I444TORGB(in_yy, in_u, in_v, ub, vr, ugvg, yg, yb, out_b, out_g, \
162
+ out_r) \
163
+ { \
164
+ __m128i y_ev, y_od, u_ev, v_ev, u_od, v_od; \
165
+ __m128i tmp0, tmp1, tmp2, tmp3; \
166
+ \
167
+ y_ev = __lsx_vmulwev_w_hu_h(in_yy, yg); \
168
+ y_od = __lsx_vmulwod_w_hu_h(in_yy, yg); \
169
+ y_ev = __lsx_vsrai_w(y_ev, 16); \
170
+ y_od = __lsx_vsrai_w(y_od, 16); \
171
+ y_ev = __lsx_vadd_w(y_ev, yb); \
172
+ y_od = __lsx_vadd_w(y_od, yb); \
173
+ in_u = __lsx_vsub_h(in_u, const_80); \
174
+ in_v = __lsx_vsub_h(in_v, const_80); \
175
+ u_ev = __lsx_vmulwev_w_h(in_u, ub); \
176
+ u_od = __lsx_vmulwod_w_h(in_u, ub); \
177
+ v_ev = __lsx_vmulwev_w_h(in_v, vr); \
178
+ v_od = __lsx_vmulwod_w_h(in_v, vr); \
179
+ tmp0 = __lsx_vadd_w(y_ev, u_ev); \
180
+ tmp1 = __lsx_vadd_w(y_od, u_od); \
181
+ tmp2 = __lsx_vadd_w(y_ev, v_ev); \
182
+ tmp3 = __lsx_vadd_w(y_od, v_od); \
183
+ tmp0 = __lsx_vsrai_w(tmp0, 6); \
184
+ tmp1 = __lsx_vsrai_w(tmp1, 6); \
185
+ tmp2 = __lsx_vsrai_w(tmp2, 6); \
186
+ tmp3 = __lsx_vsrai_w(tmp3, 6); \
187
+ tmp0 = __lsx_vclip255_w(tmp0); \
188
+ tmp1 = __lsx_vclip255_w(tmp1); \
189
+ tmp2 = __lsx_vclip255_w(tmp2); \
190
+ tmp3 = __lsx_vclip255_w(tmp3); \
191
+ out_b = __lsx_vpackev_h(tmp1, tmp0); \
192
+ out_r = __lsx_vpackev_h(tmp3, tmp2); \
193
+ u_ev = __lsx_vpackev_h(in_u, in_v); \
194
+ u_od = __lsx_vpackod_h(in_u, in_v); \
195
+ v_ev = __lsx_vdp2_w_h(u_ev, ugvg); \
196
+ v_od = __lsx_vdp2_w_h(u_od, ugvg); \
197
+ tmp0 = __lsx_vsub_w(y_ev, v_ev); \
198
+ tmp1 = __lsx_vsub_w(y_od, v_od); \
199
+ tmp0 = __lsx_vsrai_w(tmp0, 6); \
200
+ tmp1 = __lsx_vsrai_w(tmp1, 6); \
201
+ tmp0 = __lsx_vclip255_w(tmp0); \
202
+ tmp1 = __lsx_vclip255_w(tmp1); \
203
+ out_g = __lsx_vpackev_h(tmp1, tmp0); \
204
+ }
205
+
206
+ // Pack and Store 16 ARGB values.
207
+ #define STOREARGB_D(a_l, a_h, r_l, r_h, g_l, g_h, b_l, b_h, pdst_argb) \
208
+ { \
209
+ __m128i temp0, temp1, temp2, temp3; \
210
+ temp0 = __lsx_vpackev_b(g_l, b_l); \
211
+ temp1 = __lsx_vpackev_b(a_l, r_l); \
212
+ temp2 = __lsx_vpackev_b(g_h, b_h); \
213
+ temp3 = __lsx_vpackev_b(a_h, r_h); \
214
+ r_l = __lsx_vilvl_h(temp1, temp0); \
215
+ r_h = __lsx_vilvh_h(temp1, temp0); \
216
+ g_l = __lsx_vilvl_h(temp3, temp2); \
217
+ g_h = __lsx_vilvh_h(temp3, temp2); \
218
+ __lsx_vst(r_l, pdst_argb, 0); \
219
+ __lsx_vst(r_h, pdst_argb, 16); \
220
+ __lsx_vst(g_l, pdst_argb, 32); \
221
+ __lsx_vst(g_h, pdst_argb, 48); \
222
+ pdst_argb += 64; \
223
+ }
224
+
225
+ // Pack and Store 8 ARGB values.
226
+ #define STOREARGB(in_a, in_r, in_g, in_b, pdst_argb) \
227
+ { \
228
+ __m128i temp0, temp1; \
229
+ __m128i dst0, dst1; \
230
+ \
231
+ temp0 = __lsx_vpackev_b(in_g, in_b); \
232
+ temp1 = __lsx_vpackev_b(in_a, in_r); \
233
+ dst0 = __lsx_vilvl_h(temp1, temp0); \
234
+ dst1 = __lsx_vilvh_h(temp1, temp0); \
235
+ __lsx_vst(dst0, pdst_argb, 0); \
236
+ __lsx_vst(dst1, pdst_argb, 16); \
237
+ pdst_argb += 32; \
238
+ }
239
+
240
+ #define RGBTOUV(_tmpb, _tmpg, _tmpr, _nexb, _nexg, _nexr, _dst0) \
241
+ { \
242
+ __m128i _tmp0, _tmp1, _tmp2, _tmp3, _tmp4, _tmp5; \
243
+ __m128i _reg0, _reg1; \
244
+ _tmp0 = __lsx_vaddwev_h_bu(_tmpb, _nexb); \
245
+ _tmp1 = __lsx_vaddwod_h_bu(_tmpb, _nexb); \
246
+ _tmp2 = __lsx_vaddwev_h_bu(_tmpg, _nexg); \
247
+ _tmp3 = __lsx_vaddwod_h_bu(_tmpg, _nexg); \
248
+ _reg0 = __lsx_vaddwev_h_bu(_tmpr, _nexr); \
249
+ _reg1 = __lsx_vaddwod_h_bu(_tmpr, _nexr); \
250
+ _tmp4 = __lsx_vaddwev_w_hu(_tmp0, _tmp1); \
251
+ _tmp5 = __lsx_vaddwod_w_hu(_tmp0, _tmp1); \
252
+ _tmp0 = __lsx_vilvl_w(_tmp5, _tmp4); \
253
+ _tmp1 = __lsx_vilvh_w(_tmp5, _tmp4); \
254
+ _tmpb = __lsx_vssrarni_hu_w(_tmp1, _tmp0, 2); \
255
+ _tmp4 = __lsx_vaddwev_w_hu(_tmp2, _tmp3); \
256
+ _tmp5 = __lsx_vaddwod_w_hu(_tmp2, _tmp3); \
257
+ _tmp2 = __lsx_vilvl_w(_tmp5, _tmp4); \
258
+ _tmp3 = __lsx_vilvh_w(_tmp5, _tmp4); \
259
+ _tmpg = __lsx_vssrarni_hu_w(_tmp3, _tmp2, 2); \
260
+ _tmp4 = __lsx_vaddwev_w_hu(_reg0, _reg1); \
261
+ _tmp5 = __lsx_vaddwod_w_hu(_reg0, _reg1); \
262
+ _tmp0 = __lsx_vilvl_w(_tmp5, _tmp4); \
263
+ _tmp1 = __lsx_vilvh_w(_tmp5, _tmp4); \
264
+ _tmpr = __lsx_vssrarni_hu_w(_tmp1, _tmp0, 2); \
265
+ _reg0 = __lsx_vmadd_h(const_8000, const_112, _tmpb); \
266
+ _reg1 = __lsx_vmadd_h(const_8000, const_112, _tmpr); \
267
+ _reg0 = __lsx_vmsub_h(_reg0, const_74, _tmpg); \
268
+ _reg1 = __lsx_vmsub_h(_reg1, const_94, _tmpg); \
269
+ _reg0 = __lsx_vmsub_h(_reg0, const_38, _tmpr); \
270
+ _reg1 = __lsx_vmsub_h(_reg1, const_18, _tmpb); \
271
+ _dst0 = __lsx_vpickod_b(_reg1, _reg0); \
272
+ }
273
+
274
+ void MirrorRow_LSX(const uint8_t* src, uint8_t* dst, int width) {
275
+ int x;
276
+ int len = width / 32;
277
+ __m128i src0, src1;
278
+ __m128i shuffler = {0x08090A0B0C0D0E0F, 0x0001020304050607};
279
+ src += width - 32;
280
+ for (x = 0; x < len; x++) {
281
+ DUP2_ARG2(__lsx_vld, src, 0, src, 16, src0, src1);
282
+ DUP2_ARG3(__lsx_vshuf_b, src0, src0, shuffler, src1, src1, shuffler, src0,
283
+ src1);
284
+ __lsx_vst(src1, dst, 0);
285
+ __lsx_vst(src0, dst, 16);
286
+ dst += 32;
287
+ src -= 32;
288
+ }
289
+ }
290
+
291
+ void MirrorUVRow_LSX(const uint8_t* src_uv, uint8_t* dst_uv, int width) {
292
+ int x;
293
+ int len = width / 8;
294
+ __m128i src, dst;
295
+ __m128i shuffler = {0x0004000500060007, 0x0000000100020003};
296
+
297
+ src_uv += (width - 8) << 1;
298
+ for (x = 0; x < len; x++) {
299
+ src = __lsx_vld(src_uv, 0);
300
+ dst = __lsx_vshuf_h(shuffler, src, src);
301
+ __lsx_vst(dst, dst_uv, 0);
302
+ src_uv -= 16;
303
+ dst_uv += 16;
304
+ }
305
+ }
306
+
307
+ void ARGBMirrorRow_LSX(const uint8_t* src, uint8_t* dst, int width) {
308
+ int x;
309
+ int len = width / 8;
310
+ __m128i src0, src1;
311
+ __m128i shuffler = {0x0B0A09080F0E0D0C, 0x0302010007060504};
312
+
313
+ src += (width * 4) - 32;
314
+ for (x = 0; x < len; x++) {
315
+ DUP2_ARG2(__lsx_vld, src, 0, src, 16, src0, src1);
316
+ DUP2_ARG3(__lsx_vshuf_b, src0, src0, shuffler, src1, src1, shuffler, src0,
317
+ src1);
318
+ __lsx_vst(src1, dst, 0);
319
+ __lsx_vst(src0, dst, 16);
320
+ dst += 32;
321
+ src -= 32;
322
+ }
323
+ }
324
+
325
+ void I422ToYUY2Row_LSX(const uint8_t* src_y,
326
+ const uint8_t* src_u,
327
+ const uint8_t* src_v,
328
+ uint8_t* dst_yuy2,
329
+ int width) {
330
+ int x;
331
+ int len = width / 16;
332
+ __m128i src_u0, src_v0, src_y0, vec_uv0;
333
+ __m128i vec_yuy2_0, vec_yuy2_1;
334
+
335
+ for (x = 0; x < len; x++) {
336
+ DUP2_ARG2(__lsx_vld, src_u, 0, src_v, 0, src_u0, src_v0);
337
+ src_y0 = __lsx_vld(src_y, 0);
338
+ vec_uv0 = __lsx_vilvl_b(src_v0, src_u0);
339
+ vec_yuy2_0 = __lsx_vilvl_b(vec_uv0, src_y0);
340
+ vec_yuy2_1 = __lsx_vilvh_b(vec_uv0, src_y0);
341
+ __lsx_vst(vec_yuy2_0, dst_yuy2, 0);
342
+ __lsx_vst(vec_yuy2_1, dst_yuy2, 16);
343
+ src_u += 8;
344
+ src_v += 8;
345
+ src_y += 16;
346
+ dst_yuy2 += 32;
347
+ }
348
+ }
349
+
350
+ void I422ToUYVYRow_LSX(const uint8_t* src_y,
351
+ const uint8_t* src_u,
352
+ const uint8_t* src_v,
353
+ uint8_t* dst_uyvy,
354
+ int width) {
355
+ int x;
356
+ int len = width / 16;
357
+ __m128i src_u0, src_v0, src_y0, vec_uv0;
358
+ __m128i vec_uyvy0, vec_uyvy1;
359
+
360
+ for (x = 0; x < len; x++) {
361
+ DUP2_ARG2(__lsx_vld, src_u, 0, src_v, 0, src_u0, src_v0);
362
+ src_y0 = __lsx_vld(src_y, 0);
363
+ vec_uv0 = __lsx_vilvl_b(src_v0, src_u0);
364
+ vec_uyvy0 = __lsx_vilvl_b(src_y0, vec_uv0);
365
+ vec_uyvy1 = __lsx_vilvh_b(src_y0, vec_uv0);
366
+ __lsx_vst(vec_uyvy0, dst_uyvy, 0);
367
+ __lsx_vst(vec_uyvy1, dst_uyvy, 16);
368
+ src_u += 8;
369
+ src_v += 8;
370
+ src_y += 16;
371
+ dst_uyvy += 32;
372
+ }
373
+ }
374
+
375
+ void I422ToARGBRow_LSX(const uint8_t* src_y,
376
+ const uint8_t* src_u,
377
+ const uint8_t* src_v,
378
+ uint8_t* dst_argb,
379
+ const struct YuvConstants* yuvconstants,
380
+ int width) {
381
+ int x;
382
+ int len = width / 16;
383
+ __m128i vec_yb, vec_yg, vec_ub, vec_ug, vec_vr, vec_vg;
384
+ __m128i vec_ubvr, vec_ugvg;
385
+ __m128i alpha = __lsx_vldi(0xFF);
386
+ __m128i const_80 = __lsx_vldi(0x80);
387
+
388
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
389
+ vec_ubvr = __lsx_vilvl_h(vec_ub, vec_vr);
390
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
391
+
392
+ for (x = 0; x < len; x++) {
393
+ __m128i y, uv_l, uv_h, b_l, b_h, g_l, g_h, r_l, r_h;
394
+
395
+ READYUV422_D(src_y, src_u, src_v, y, uv_l, uv_h);
396
+ YUVTORGB_D(y, uv_l, uv_h, vec_ubvr, vec_ugvg, vec_yg, vec_yb, b_l, b_h, g_l,
397
+ g_h, r_l, r_h);
398
+ STOREARGB_D(alpha, alpha, r_l, r_h, g_l, g_h, b_l, b_h, dst_argb);
399
+ src_y += 16;
400
+ src_u += 8;
401
+ src_v += 8;
402
+ }
403
+ }
404
+
405
+ void I422ToRGBARow_LSX(const uint8_t* src_y,
406
+ const uint8_t* src_u,
407
+ const uint8_t* src_v,
408
+ uint8_t* dst_argb,
409
+ const struct YuvConstants* yuvconstants,
410
+ int width) {
411
+ int x;
412
+ int len = width / 16;
413
+ __m128i vec_yb, vec_yg, vec_ub, vec_vr, vec_ug, vec_vg;
414
+ __m128i vec_ubvr, vec_ugvg;
415
+ __m128i alpha = __lsx_vldi(0xFF);
416
+ __m128i const_80 = __lsx_vldi(0x80);
417
+
418
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
419
+ vec_ubvr = __lsx_vilvl_h(vec_ub, vec_vr);
420
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
421
+
422
+ for (x = 0; x < len; x++) {
423
+ __m128i y, uv_l, uv_h, b_l, b_h, g_l, g_h, r_l, r_h;
424
+
425
+ READYUV422_D(src_y, src_u, src_v, y, uv_l, uv_h);
426
+ YUVTORGB_D(y, uv_l, uv_h, vec_ubvr, vec_ugvg, vec_yg, vec_yb, b_l, b_h, g_l,
427
+ g_h, r_l, r_h);
428
+ STOREARGB_D(r_l, r_h, g_l, g_h, b_l, b_h, alpha, alpha, dst_argb);
429
+ src_y += 16;
430
+ src_u += 8;
431
+ src_v += 8;
432
+ }
433
+ }
434
+
435
+ void I422AlphaToARGBRow_LSX(const uint8_t* src_y,
436
+ const uint8_t* src_u,
437
+ const uint8_t* src_v,
438
+ const uint8_t* src_a,
439
+ uint8_t* dst_argb,
440
+ const struct YuvConstants* yuvconstants,
441
+ int width) {
442
+ int x;
443
+ int len = width / 16;
444
+ int res = width & 15;
445
+ __m128i vec_yb, vec_yg, vec_ub, vec_vr, vec_ug, vec_vg;
446
+ __m128i vec_ubvr, vec_ugvg;
447
+ __m128i zero = __lsx_vldi(0);
448
+ __m128i const_80 = __lsx_vldi(0x80);
449
+
450
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
451
+ vec_ubvr = __lsx_vilvl_h(vec_ub, vec_vr);
452
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
453
+
454
+ for (x = 0; x < len; x++) {
455
+ __m128i y, uv_l, uv_h, b_l, b_h, g_l, g_h, r_l, r_h, a_l, a_h;
456
+
457
+ y = __lsx_vld(src_a, 0);
458
+ a_l = __lsx_vilvl_b(zero, y);
459
+ a_h = __lsx_vilvh_b(zero, y);
460
+ READYUV422_D(src_y, src_u, src_v, y, uv_l, uv_h);
461
+ YUVTORGB_D(y, uv_l, uv_h, vec_ubvr, vec_ugvg, vec_yg, vec_yb, b_l, b_h, g_l,
462
+ g_h, r_l, r_h);
463
+ STOREARGB_D(a_l, a_h, r_l, r_h, g_l, g_h, b_l, b_h, dst_argb);
464
+ src_y += 16;
465
+ src_u += 8;
466
+ src_v += 8;
467
+ src_a += 16;
468
+ }
469
+ if (res) {
470
+ __m128i y, uv, r, g, b, a;
471
+ a = __lsx_vld(src_a, 0);
472
+ a = __lsx_vsllwil_hu_bu(a, 0);
473
+ READYUV422(src_y, src_u, src_v, y, uv);
474
+ YUVTORGB(y, uv, vec_ubvr, vec_ugvg, vec_yg, vec_yb, b, g, r);
475
+ STOREARGB(a, r, g, b, dst_argb);
476
+ }
477
+ }
478
+
479
+ void I422ToRGB24Row_LSX(const uint8_t* src_y,
480
+ const uint8_t* src_u,
481
+ const uint8_t* src_v,
482
+ uint8_t* dst_argb,
483
+ const struct YuvConstants* yuvconstants,
484
+ int32_t width) {
485
+ int x;
486
+ int len = width / 16;
487
+ __m128i vec_yb, vec_yg, vec_ub, vec_vr, vec_ug, vec_vg;
488
+ __m128i vec_ubvr, vec_ugvg;
489
+ __m128i const_80 = __lsx_vldi(0x80);
490
+ __m128i shuffler0 = {0x0504120302100100, 0x0A18090816070614};
491
+ __m128i shuffler1 = {0x1E0F0E1C0D0C1A0B, 0x1E0F0E1C0D0C1A0B};
492
+
493
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
494
+ vec_ubvr = __lsx_vilvl_h(vec_ub, vec_vr);
495
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
496
+
497
+ for (x = 0; x < len; x++) {
498
+ __m128i y, uv_l, uv_h, b_l, b_h, g_l, g_h, r_l, r_h;
499
+ __m128i temp0, temp1, temp2, temp3;
500
+
501
+ READYUV422_D(src_y, src_u, src_v, y, uv_l, uv_h);
502
+ YUVTORGB_D(y, uv_l, uv_h, vec_ubvr, vec_ugvg, vec_yg, vec_yb, b_l, b_h, g_l,
503
+ g_h, r_l, r_h);
504
+ temp0 = __lsx_vpackev_b(g_l, b_l);
505
+ temp1 = __lsx_vpackev_b(g_h, b_h);
506
+ DUP4_ARG3(__lsx_vshuf_b, r_l, temp0, shuffler1, r_h, temp1, shuffler1, r_l,
507
+ temp0, shuffler0, r_h, temp1, shuffler0, temp2, temp3, temp0,
508
+ temp1);
509
+
510
+ b_l = __lsx_vilvl_d(temp1, temp2);
511
+ b_h = __lsx_vilvh_d(temp3, temp1);
512
+ __lsx_vst(temp0, dst_argb, 0);
513
+ __lsx_vst(b_l, dst_argb, 16);
514
+ __lsx_vst(b_h, dst_argb, 32);
515
+ dst_argb += 48;
516
+ src_y += 16;
517
+ src_u += 8;
518
+ src_v += 8;
519
+ }
520
+ }
521
+
522
+ // TODO(fbarchard): Consider AND instead of shift to isolate 5 upper bits of R.
523
+ void I422ToRGB565Row_LSX(const uint8_t* src_y,
524
+ const uint8_t* src_u,
525
+ const uint8_t* src_v,
526
+ uint8_t* dst_rgb565,
527
+ const struct YuvConstants* yuvconstants,
528
+ int width) {
529
+ int x;
530
+ int len = width / 16;
531
+ __m128i vec_yb, vec_yg, vec_ub, vec_vr, vec_ug, vec_vg;
532
+ __m128i vec_ubvr, vec_ugvg;
533
+ __m128i const_80 = __lsx_vldi(0x80);
534
+
535
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
536
+ vec_ubvr = __lsx_vilvl_h(vec_ub, vec_vr);
537
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
538
+
539
+ for (x = 0; x < len; x++) {
540
+ __m128i y, uv_l, uv_h, b_l, b_h, g_l, g_h, r_l, r_h;
541
+
542
+ READYUV422_D(src_y, src_u, src_v, y, uv_l, uv_h);
543
+ YUVTORGB_D(y, uv_l, uv_h, vec_ubvr, vec_ugvg, vec_yg, vec_yb, b_l, b_h, g_l,
544
+ g_h, r_l, r_h);
545
+ b_l = __lsx_vsrli_h(b_l, 3);
546
+ b_h = __lsx_vsrli_h(b_h, 3);
547
+ g_l = __lsx_vsrli_h(g_l, 2);
548
+ g_h = __lsx_vsrli_h(g_h, 2);
549
+ r_l = __lsx_vsrli_h(r_l, 3);
550
+ r_h = __lsx_vsrli_h(r_h, 3);
551
+ r_l = __lsx_vslli_h(r_l, 11);
552
+ r_h = __lsx_vslli_h(r_h, 11);
553
+ g_l = __lsx_vslli_h(g_l, 5);
554
+ g_h = __lsx_vslli_h(g_h, 5);
555
+ r_l = __lsx_vor_v(r_l, g_l);
556
+ r_l = __lsx_vor_v(r_l, b_l);
557
+ r_h = __lsx_vor_v(r_h, g_h);
558
+ r_h = __lsx_vor_v(r_h, b_h);
559
+ __lsx_vst(r_l, dst_rgb565, 0);
560
+ __lsx_vst(r_h, dst_rgb565, 16);
561
+ dst_rgb565 += 32;
562
+ src_y += 16;
563
+ src_u += 8;
564
+ src_v += 8;
565
+ }
566
+ }
567
+
568
+ // TODO(fbarchard): Consider AND instead of shift to isolate 4 upper bits of G.
569
+ void I422ToARGB4444Row_LSX(const uint8_t* src_y,
570
+ const uint8_t* src_u,
571
+ const uint8_t* src_v,
572
+ uint8_t* dst_argb4444,
573
+ const struct YuvConstants* yuvconstants,
574
+ int width) {
575
+ int x;
576
+ int len = width / 16;
577
+ __m128i vec_yb, vec_yg, vec_ub, vec_vr, vec_ug, vec_vg;
578
+ __m128i vec_ubvr, vec_ugvg;
579
+ __m128i const_80 = __lsx_vldi(0x80);
580
+ __m128i alpha = (__m128i)v2u64{0xF000F000F000F000, 0xF000F000F000F000};
581
+ __m128i mask = {0x00F000F000F000F0, 0x00F000F000F000F0};
582
+
583
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
584
+ vec_ubvr = __lsx_vilvl_h(vec_ub, vec_vr);
585
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
586
+
587
+ for (x = 0; x < len; x++) {
588
+ __m128i y, uv_l, uv_h, b_l, b_h, g_l, g_h, r_l, r_h;
589
+
590
+ READYUV422_D(src_y, src_u, src_v, y, uv_l, uv_h);
591
+ YUVTORGB_D(y, uv_l, uv_h, vec_ubvr, vec_ugvg, vec_yg, vec_yb, b_l, b_h, g_l,
592
+ g_h, r_l, r_h);
593
+ b_l = __lsx_vsrli_h(b_l, 4);
594
+ b_h = __lsx_vsrli_h(b_h, 4);
595
+ r_l = __lsx_vsrli_h(r_l, 4);
596
+ r_h = __lsx_vsrli_h(r_h, 4);
597
+ g_l = __lsx_vand_v(g_l, mask);
598
+ g_h = __lsx_vand_v(g_h, mask);
599
+ r_l = __lsx_vslli_h(r_l, 8);
600
+ r_h = __lsx_vslli_h(r_h, 8);
601
+ r_l = __lsx_vor_v(r_l, alpha);
602
+ r_h = __lsx_vor_v(r_h, alpha);
603
+ r_l = __lsx_vor_v(r_l, g_l);
604
+ r_h = __lsx_vor_v(r_h, g_h);
605
+ r_l = __lsx_vor_v(r_l, b_l);
606
+ r_h = __lsx_vor_v(r_h, b_h);
607
+ __lsx_vst(r_l, dst_argb4444, 0);
608
+ __lsx_vst(r_h, dst_argb4444, 16);
609
+ dst_argb4444 += 32;
610
+ src_y += 16;
611
+ src_u += 8;
612
+ src_v += 8;
613
+ }
614
+ }
615
+
616
+ void I422ToARGB1555Row_LSX(const uint8_t* src_y,
617
+ const uint8_t* src_u,
618
+ const uint8_t* src_v,
619
+ uint8_t* dst_argb1555,
620
+ const struct YuvConstants* yuvconstants,
621
+ int width) {
622
+ int x;
623
+ int len = width / 16;
624
+ __m128i vec_yb, vec_yg, vec_ub, vec_vr, vec_ug, vec_vg;
625
+ __m128i vec_ubvr, vec_ugvg;
626
+ __m128i const_80 = __lsx_vldi(0x80);
627
+ __m128i alpha = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
628
+
629
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
630
+ vec_ubvr = __lsx_vilvl_h(vec_ub, vec_vr);
631
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
632
+
633
+ for (x = 0; x < len; x++) {
634
+ __m128i y, uv_l, uv_h, b_l, b_h, g_l, g_h, r_l, r_h;
635
+
636
+ READYUV422_D(src_y, src_u, src_v, y, uv_l, uv_h);
637
+ YUVTORGB_D(y, uv_l, uv_h, vec_ubvr, vec_ugvg, vec_yg, vec_yb, b_l, b_h, g_l,
638
+ g_h, r_l, r_h);
639
+ b_l = __lsx_vsrli_h(b_l, 3);
640
+ b_h = __lsx_vsrli_h(b_h, 3);
641
+ g_l = __lsx_vsrli_h(g_l, 3);
642
+
643
+ g_h = __lsx_vsrli_h(g_h, 3);
644
+ g_l = __lsx_vslli_h(g_l, 5);
645
+ g_h = __lsx_vslli_h(g_h, 5);
646
+ r_l = __lsx_vsrli_h(r_l, 3);
647
+ r_h = __lsx_vsrli_h(r_h, 3);
648
+ r_l = __lsx_vslli_h(r_l, 10);
649
+ r_h = __lsx_vslli_h(r_h, 10);
650
+ r_l = __lsx_vor_v(r_l, alpha);
651
+ r_h = __lsx_vor_v(r_h, alpha);
652
+ r_l = __lsx_vor_v(r_l, g_l);
653
+ r_h = __lsx_vor_v(r_h, g_h);
654
+ r_l = __lsx_vor_v(r_l, b_l);
655
+ r_h = __lsx_vor_v(r_h, b_h);
656
+ __lsx_vst(r_l, dst_argb1555, 0);
657
+ __lsx_vst(r_h, dst_argb1555, 16);
658
+ dst_argb1555 += 32;
659
+ src_y += 16;
660
+ src_u += 8;
661
+ src_v += 8;
662
+ }
663
+ }
664
+
665
+ void YUY2ToYRow_LSX(const uint8_t* src_yuy2, uint8_t* dst_y, int width) {
666
+ int x;
667
+ int len = width / 16;
668
+ __m128i src0, src1, dst0;
669
+
670
+ for (x = 0; x < len; x++) {
671
+ DUP2_ARG2(__lsx_vld, src_yuy2, 0, src_yuy2, 16, src0, src1);
672
+ dst0 = __lsx_vpickev_b(src1, src0);
673
+ __lsx_vst(dst0, dst_y, 0);
674
+ src_yuy2 += 32;
675
+ dst_y += 16;
676
+ }
677
+ }
678
+
679
+ void YUY2ToUVRow_LSX(const uint8_t* src_yuy2,
680
+ int src_stride_yuy2,
681
+ uint8_t* dst_u,
682
+ uint8_t* dst_v,
683
+ int width) {
684
+ const uint8_t* src_yuy2_next = src_yuy2 + src_stride_yuy2;
685
+ int x;
686
+ int len = width / 16;
687
+ __m128i src0, src1, src2, src3;
688
+ __m128i tmp0, dst0, dst1;
689
+
690
+ for (x = 0; x < len; x++) {
691
+ DUP4_ARG2(__lsx_vld, src_yuy2, 0, src_yuy2, 16, src_yuy2_next, 0,
692
+ src_yuy2_next, 16, src0, src1, src2, src3);
693
+ src0 = __lsx_vpickod_b(src1, src0);
694
+ src1 = __lsx_vpickod_b(src3, src2);
695
+ tmp0 = __lsx_vavgr_bu(src1, src0);
696
+ dst0 = __lsx_vpickev_b(tmp0, tmp0);
697
+ dst1 = __lsx_vpickod_b(tmp0, tmp0);
698
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
699
+ __lsx_vstelm_d(dst1, dst_v, 0, 0);
700
+ src_yuy2 += 32;
701
+ src_yuy2_next += 32;
702
+ dst_u += 8;
703
+ dst_v += 8;
704
+ }
705
+ }
706
+
707
+ void YUY2ToUV422Row_LSX(const uint8_t* src_yuy2,
708
+ uint8_t* dst_u,
709
+ uint8_t* dst_v,
710
+ int width) {
711
+ int x;
712
+ int len = width / 16;
713
+ __m128i src0, src1, tmp0, dst0, dst1;
714
+
715
+ for (x = 0; x < len; x++) {
716
+ DUP2_ARG2(__lsx_vld, src_yuy2, 0, src_yuy2, 16, src0, src1);
717
+ tmp0 = __lsx_vpickod_b(src1, src0);
718
+ dst0 = __lsx_vpickev_b(tmp0, tmp0);
719
+ dst1 = __lsx_vpickod_b(tmp0, tmp0);
720
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
721
+ __lsx_vstelm_d(dst1, dst_v, 0, 0);
722
+ src_yuy2 += 32;
723
+ dst_u += 8;
724
+ dst_v += 8;
725
+ }
726
+ }
727
+
728
+ void UYVYToYRow_LSX(const uint8_t* src_uyvy, uint8_t* dst_y, int width) {
729
+ int x;
730
+ int len = width / 16;
731
+ __m128i src0, src1, dst0;
732
+
733
+ for (x = 0; x < len; x++) {
734
+ DUP2_ARG2(__lsx_vld, src_uyvy, 0, src_uyvy, 16, src0, src1);
735
+ dst0 = __lsx_vpickod_b(src1, src0);
736
+ __lsx_vst(dst0, dst_y, 0);
737
+ src_uyvy += 32;
738
+ dst_y += 16;
739
+ }
740
+ }
741
+
742
+ void UYVYToUVRow_LSX(const uint8_t* src_uyvy,
743
+ int src_stride_uyvy,
744
+ uint8_t* dst_u,
745
+ uint8_t* dst_v,
746
+ int width) {
747
+ const uint8_t* src_uyvy_next = src_uyvy + src_stride_uyvy;
748
+ int x;
749
+ int len = width / 16;
750
+ __m128i src0, src1, src2, src3, tmp0, dst0, dst1;
751
+
752
+ for (x = 0; x < len; x++) {
753
+ DUP4_ARG2(__lsx_vld, src_uyvy, 0, src_uyvy, 16, src_uyvy_next, 0,
754
+ src_uyvy_next, 16, src0, src1, src2, src3);
755
+ src0 = __lsx_vpickev_b(src1, src0);
756
+ src1 = __lsx_vpickev_b(src3, src2);
757
+ tmp0 = __lsx_vavgr_bu(src1, src0);
758
+ dst0 = __lsx_vpickev_b(tmp0, tmp0);
759
+ dst1 = __lsx_vpickod_b(tmp0, tmp0);
760
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
761
+ __lsx_vstelm_d(dst1, dst_v, 0, 0);
762
+ src_uyvy += 32;
763
+ src_uyvy_next += 32;
764
+ dst_u += 8;
765
+ dst_v += 8;
766
+ }
767
+ }
768
+
769
+ void UYVYToUV422Row_LSX(const uint8_t* src_uyvy,
770
+ uint8_t* dst_u,
771
+ uint8_t* dst_v,
772
+ int width) {
773
+ int x;
774
+ int len = width / 16;
775
+ __m128i src0, src1, tmp0, dst0, dst1;
776
+
777
+ for (x = 0; x < len; x++) {
778
+ DUP2_ARG2(__lsx_vld, src_uyvy, 0, src_uyvy, 16, src0, src1);
779
+ tmp0 = __lsx_vpickev_b(src1, src0);
780
+ dst0 = __lsx_vpickev_b(tmp0, tmp0);
781
+ dst1 = __lsx_vpickod_b(tmp0, tmp0);
782
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
783
+ __lsx_vstelm_d(dst1, dst_v, 0, 0);
784
+ src_uyvy += 32;
785
+ dst_u += 8;
786
+ dst_v += 8;
787
+ }
788
+ }
789
+
790
+ void ARGBToUVRow_LSX(const uint8_t* src_argb0,
791
+ int src_stride_argb,
792
+ uint8_t* dst_u,
793
+ uint8_t* dst_v,
794
+ int width) {
795
+ int x;
796
+ int len = width / 16;
797
+ const uint8_t* src_argb1 = src_argb0 + src_stride_argb;
798
+
799
+ __m128i src0, src1, src2, src3, src4, src5, src6, src7;
800
+ __m128i vec0, vec1, vec2, vec3;
801
+ __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, dst0, dst1;
802
+ __m128i const_0x70 = __lsx_vldi(0x470);
803
+ __m128i const_0x4A = __lsx_vldi(0x44A);
804
+ __m128i const_0x26 = __lsx_vldi(0x426);
805
+ __m128i const_0x5E = __lsx_vldi(0x45E);
806
+ __m128i const_0x12 = __lsx_vldi(0x412);
807
+ __m128i const_0x8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
808
+ for (x = 0; x < len; x++) {
809
+ DUP4_ARG2(__lsx_vld, src_argb0, 0, src_argb0, 16, src_argb0, 32, src_argb0,
810
+ 48, src0, src1, src2, src3);
811
+ DUP4_ARG2(__lsx_vld, src_argb1, 0, src_argb1, 16, src_argb1, 32, src_argb1,
812
+ 48, src4, src5, src6, src7);
813
+ vec0 = __lsx_vaddwev_h_bu(src0, src4);
814
+ vec1 = __lsx_vaddwev_h_bu(src1, src5);
815
+ vec2 = __lsx_vaddwev_h_bu(src2, src6);
816
+ vec3 = __lsx_vaddwev_h_bu(src3, src7);
817
+ tmp0 = __lsx_vpickev_h(vec1, vec0);
818
+ tmp1 = __lsx_vpickev_h(vec3, vec2);
819
+ tmp2 = __lsx_vpickod_h(vec1, vec0);
820
+ tmp3 = __lsx_vpickod_h(vec3, vec2);
821
+ vec0 = __lsx_vaddwod_h_bu(src0, src4);
822
+ vec1 = __lsx_vaddwod_h_bu(src1, src5);
823
+ vec2 = __lsx_vaddwod_h_bu(src2, src6);
824
+ vec3 = __lsx_vaddwod_h_bu(src3, src7);
825
+ tmp4 = __lsx_vpickev_h(vec1, vec0);
826
+ tmp5 = __lsx_vpickev_h(vec3, vec2);
827
+ vec0 = __lsx_vpickev_h(tmp1, tmp0);
828
+ vec1 = __lsx_vpickod_h(tmp1, tmp0);
829
+ src0 = __lsx_vadd_h(vec0, vec1);
830
+ src0 = __lsx_vsrari_h(src0, 2);
831
+ vec0 = __lsx_vpickev_h(tmp3, tmp2);
832
+ vec1 = __lsx_vpickod_h(tmp3, tmp2);
833
+ src1 = __lsx_vadd_h(vec0, vec1);
834
+ src1 = __lsx_vsrari_h(src1, 2);
835
+ vec0 = __lsx_vpickev_h(tmp5, tmp4);
836
+ vec1 = __lsx_vpickod_h(tmp5, tmp4);
837
+ src2 = __lsx_vadd_h(vec0, vec1);
838
+ src2 = __lsx_vsrari_h(src2, 2);
839
+ dst0 = __lsx_vmadd_h(const_0x8000, src0, const_0x70);
840
+ dst0 = __lsx_vmsub_h(dst0, src2, const_0x4A);
841
+ dst0 = __lsx_vmsub_h(dst0, src1, const_0x26);
842
+ dst1 = __lsx_vmadd_h(const_0x8000, src1, const_0x70);
843
+ dst1 = __lsx_vmsub_h(dst1, src2, const_0x5E);
844
+ dst1 = __lsx_vmsub_h(dst1, src0, const_0x12);
845
+ dst0 = __lsx_vsrai_h(dst0, 8);
846
+ dst1 = __lsx_vsrai_h(dst1, 8);
847
+ dst0 = __lsx_vpickev_b(dst1, dst0);
848
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
849
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
850
+ src_argb0 += 64;
851
+ src_argb1 += 64;
852
+ dst_u += 8;
853
+ dst_v += 8;
854
+ }
855
+ }
856
+
857
+ void ARGBToRGB24Row_LSX(const uint8_t* src_argb, uint8_t* dst_rgb, int width) {
858
+ int x;
859
+ int len = (width / 16) - 1;
860
+ __m128i src0, src1, src2, src3;
861
+ __m128i tmp0, tmp1, tmp2, tmp3;
862
+ __m128i shuf = {0x0908060504020100, 0x000000000E0D0C0A};
863
+ for (x = 0; x < len; x++) {
864
+ DUP4_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src_argb, 32, src_argb, 48,
865
+ src0, src1, src2, src3);
866
+ tmp0 = __lsx_vshuf_b(src0, src0, shuf);
867
+ tmp1 = __lsx_vshuf_b(src1, src1, shuf);
868
+ tmp2 = __lsx_vshuf_b(src2, src2, shuf);
869
+ tmp3 = __lsx_vshuf_b(src3, src3, shuf);
870
+ __lsx_vst(tmp0, dst_rgb, 0);
871
+ __lsx_vst(tmp1, dst_rgb, 12);
872
+ __lsx_vst(tmp2, dst_rgb, 24);
873
+ __lsx_vst(tmp3, dst_rgb, 36);
874
+ dst_rgb += 48;
875
+ src_argb += 64;
876
+ }
877
+ DUP4_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src_argb, 32, src_argb, 48,
878
+ src0, src1, src2, src3);
879
+ tmp0 = __lsx_vshuf_b(src0, src0, shuf);
880
+ tmp1 = __lsx_vshuf_b(src1, src1, shuf);
881
+ tmp2 = __lsx_vshuf_b(src2, src2, shuf);
882
+ tmp3 = __lsx_vshuf_b(src3, src3, shuf);
883
+ __lsx_vst(tmp0, dst_rgb, 0);
884
+ __lsx_vst(tmp1, dst_rgb, 12);
885
+ __lsx_vst(tmp2, dst_rgb, 24);
886
+ dst_rgb += 36;
887
+ __lsx_vst(tmp3, dst_rgb, 0);
888
+ }
889
+
890
+ void ARGBToRAWRow_LSX(const uint8_t* src_argb, uint8_t* dst_rgb, int width) {
891
+ int x;
892
+ int len = (width / 16) - 1;
893
+ __m128i src0, src1, src2, src3;
894
+ __m128i tmp0, tmp1, tmp2, tmp3;
895
+ __m128i shuf = {0x090A040506000102, 0x000000000C0D0E08};
896
+ for (x = 0; x < len; x++) {
897
+ DUP4_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src_argb, 32, src_argb, 48,
898
+ src0, src1, src2, src3);
899
+ tmp0 = __lsx_vshuf_b(src0, src0, shuf);
900
+ tmp1 = __lsx_vshuf_b(src1, src1, shuf);
901
+ tmp2 = __lsx_vshuf_b(src2, src2, shuf);
902
+ tmp3 = __lsx_vshuf_b(src3, src3, shuf);
903
+ __lsx_vst(tmp0, dst_rgb, 0);
904
+ __lsx_vst(tmp1, dst_rgb, 12);
905
+ __lsx_vst(tmp2, dst_rgb, 24);
906
+ __lsx_vst(tmp3, dst_rgb, 36);
907
+ dst_rgb += 48;
908
+ src_argb += 64;
909
+ }
910
+ DUP4_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src_argb, 32, src_argb, 48,
911
+ src0, src1, src2, src3);
912
+ tmp0 = __lsx_vshuf_b(src0, src0, shuf);
913
+ tmp1 = __lsx_vshuf_b(src1, src1, shuf);
914
+ tmp2 = __lsx_vshuf_b(src2, src2, shuf);
915
+ tmp3 = __lsx_vshuf_b(src3, src3, shuf);
916
+ __lsx_vst(tmp0, dst_rgb, 0);
917
+ __lsx_vst(tmp1, dst_rgb, 12);
918
+ __lsx_vst(tmp2, dst_rgb, 24);
919
+ dst_rgb += 36;
920
+ __lsx_vst(tmp3, dst_rgb, 0);
921
+ }
922
+
923
+ void ARGBToRGB565Row_LSX(const uint8_t* src_argb, uint8_t* dst_rgb, int width) {
924
+ int x;
925
+ int len = width / 8;
926
+ __m128i zero = __lsx_vldi(0);
927
+ __m128i src0, src1, tmp0, tmp1, dst0;
928
+ __m128i shift = {0x0300030003000300, 0x0300030003000300};
929
+
930
+ for (x = 0; x < len; x++) {
931
+ DUP2_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src0, src1);
932
+ tmp0 = __lsx_vpickev_b(src1, src0);
933
+ tmp1 = __lsx_vpickod_b(src1, src0);
934
+ tmp0 = __lsx_vsrli_b(tmp0, 3);
935
+ tmp1 = __lsx_vpackev_b(zero, tmp1);
936
+ tmp1 = __lsx_vsrli_h(tmp1, 2);
937
+ tmp0 = __lsx_vsll_b(tmp0, shift);
938
+ tmp1 = __lsx_vslli_h(tmp1, 5);
939
+ dst0 = __lsx_vor_v(tmp0, tmp1);
940
+ __lsx_vst(dst0, dst_rgb, 0);
941
+ dst_rgb += 16;
942
+ src_argb += 32;
943
+ }
944
+ }
945
+
946
+ void ARGBToARGB1555Row_LSX(const uint8_t* src_argb,
947
+ uint8_t* dst_rgb,
948
+ int width) {
949
+ int x;
950
+ int len = width / 8;
951
+ __m128i zero = __lsx_vldi(0);
952
+ __m128i src0, src1, tmp0, tmp1, tmp2, tmp3, dst0;
953
+ __m128i shift1 = {0x0703070307030703, 0x0703070307030703};
954
+ __m128i shift2 = {0x0200020002000200, 0x0200020002000200};
955
+
956
+ for (x = 0; x < len; x++) {
957
+ DUP2_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src0, src1);
958
+ tmp0 = __lsx_vpickev_b(src1, src0);
959
+ tmp1 = __lsx_vpickod_b(src1, src0);
960
+ tmp0 = __lsx_vsrli_b(tmp0, 3);
961
+ tmp1 = __lsx_vsrl_b(tmp1, shift1);
962
+ tmp0 = __lsx_vsll_b(tmp0, shift2);
963
+ tmp2 = __lsx_vpackev_b(zero, tmp1);
964
+ tmp3 = __lsx_vpackod_b(zero, tmp1);
965
+ tmp2 = __lsx_vslli_h(tmp2, 5);
966
+ tmp3 = __lsx_vslli_h(tmp3, 15);
967
+ dst0 = __lsx_vor_v(tmp0, tmp2);
968
+ dst0 = __lsx_vor_v(dst0, tmp3);
969
+ __lsx_vst(dst0, dst_rgb, 0);
970
+ dst_rgb += 16;
971
+ src_argb += 32;
972
+ }
973
+ }
974
+
975
+ void ARGBToARGB4444Row_LSX(const uint8_t* src_argb,
976
+ uint8_t* dst_rgb,
977
+ int width) {
978
+ int x;
979
+ int len = width / 8;
980
+ __m128i src0, src1, tmp0, tmp1, dst0;
981
+
982
+ for (x = 0; x < len; x++) {
983
+ DUP2_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src0, src1);
984
+ tmp0 = __lsx_vpickev_b(src1, src0);
985
+ tmp1 = __lsx_vpickod_b(src1, src0);
986
+ tmp1 = __lsx_vandi_b(tmp1, 0xF0);
987
+ tmp0 = __lsx_vsrli_b(tmp0, 4);
988
+ dst0 = __lsx_vor_v(tmp1, tmp0);
989
+ __lsx_vst(dst0, dst_rgb, 0);
990
+ dst_rgb += 16;
991
+ src_argb += 32;
992
+ }
993
+ }
994
+
995
+ void ARGBToUV444Row_LSX(const uint8_t* src_argb,
996
+ uint8_t* dst_u,
997
+ uint8_t* dst_v,
998
+ int32_t width) {
999
+ int x;
1000
+ int len = width / 16;
1001
+ __m128i src0, src1, src2, src3;
1002
+ __m128i tmp0, tmp1, tmp2, tmp3;
1003
+ __m128i reg0, reg1, reg2, reg3, dst0, dst1;
1004
+ __m128i const_112 = __lsx_vldi(112);
1005
+ __m128i const_74 = __lsx_vldi(74);
1006
+ __m128i const_38 = __lsx_vldi(38);
1007
+ __m128i const_94 = __lsx_vldi(94);
1008
+ __m128i const_18 = __lsx_vldi(18);
1009
+ __m128i const_0x8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
1010
+ for (x = 0; x < len; x++) {
1011
+ DUP4_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src_argb, 32, src_argb, 48,
1012
+ src0, src1, src2, src3);
1013
+ tmp0 = __lsx_vpickev_h(src1, src0);
1014
+ tmp1 = __lsx_vpickod_h(src1, src0);
1015
+ tmp2 = __lsx_vpickev_h(src3, src2);
1016
+ tmp3 = __lsx_vpickod_h(src3, src2);
1017
+ reg0 = __lsx_vmaddwev_h_bu(const_0x8000, tmp0, const_112);
1018
+ reg1 = __lsx_vmaddwev_h_bu(const_0x8000, tmp2, const_112);
1019
+ reg2 = __lsx_vmulwod_h_bu(tmp0, const_74);
1020
+ reg3 = __lsx_vmulwod_h_bu(tmp2, const_74);
1021
+ reg2 = __lsx_vmaddwev_h_bu(reg2, tmp1, const_38);
1022
+ reg3 = __lsx_vmaddwev_h_bu(reg3, tmp3, const_38);
1023
+ reg0 = __lsx_vsub_h(reg0, reg2);
1024
+ reg1 = __lsx_vsub_h(reg1, reg3);
1025
+ reg0 = __lsx_vsrai_h(reg0, 8);
1026
+ reg1 = __lsx_vsrai_h(reg1, 8);
1027
+ dst0 = __lsx_vpickev_b(reg1, reg0);
1028
+
1029
+ reg0 = __lsx_vmaddwev_h_bu(const_0x8000, tmp1, const_112);
1030
+ reg1 = __lsx_vmaddwev_h_bu(const_0x8000, tmp3, const_112);
1031
+ reg2 = __lsx_vmulwev_h_bu(tmp0, const_18);
1032
+ reg3 = __lsx_vmulwev_h_bu(tmp2, const_18);
1033
+ reg2 = __lsx_vmaddwod_h_bu(reg2, tmp0, const_94);
1034
+ reg3 = __lsx_vmaddwod_h_bu(reg3, tmp2, const_94);
1035
+ reg0 = __lsx_vsub_h(reg0, reg2);
1036
+ reg1 = __lsx_vsub_h(reg1, reg3);
1037
+ reg0 = __lsx_vsrai_h(reg0, 8);
1038
+ reg1 = __lsx_vsrai_h(reg1, 8);
1039
+ dst1 = __lsx_vpickev_b(reg1, reg0);
1040
+
1041
+ __lsx_vst(dst0, dst_u, 0);
1042
+ __lsx_vst(dst1, dst_v, 0);
1043
+ dst_u += 16;
1044
+ dst_v += 16;
1045
+ src_argb += 64;
1046
+ }
1047
+ }
1048
+
1049
+ void ARGBMultiplyRow_LSX(const uint8_t* src_argb0,
1050
+ const uint8_t* src_argb1,
1051
+ uint8_t* dst_argb,
1052
+ int width) {
1053
+ int x;
1054
+ int len = width / 4;
1055
+ __m128i zero = __lsx_vldi(0);
1056
+ __m128i src0, src1, dst0, dst1;
1057
+ __m128i tmp0, tmp1, tmp2, tmp3;
1058
+
1059
+ for (x = 0; x < len; x++) {
1060
+ DUP2_ARG2(__lsx_vld, src_argb0, 0, src_argb1, 0, src0, src1);
1061
+ tmp0 = __lsx_vilvl_b(src0, src0);
1062
+ tmp1 = __lsx_vilvh_b(src0, src0);
1063
+ tmp2 = __lsx_vilvl_b(zero, src1);
1064
+ tmp3 = __lsx_vilvh_b(zero, src1);
1065
+ dst0 = __lsx_vmuh_hu(tmp0, tmp2);
1066
+ dst1 = __lsx_vmuh_hu(tmp1, tmp3);
1067
+ dst0 = __lsx_vpickev_b(dst1, dst0);
1068
+ __lsx_vst(dst0, dst_argb, 0);
1069
+ src_argb0 += 16;
1070
+ src_argb1 += 16;
1071
+ dst_argb += 16;
1072
+ }
1073
+ }
1074
+
1075
+ void ARGBAddRow_LSX(const uint8_t* src_argb0,
1076
+ const uint8_t* src_argb1,
1077
+ uint8_t* dst_argb,
1078
+ int width) {
1079
+ int x;
1080
+ int len = width / 4;
1081
+ __m128i src0, src1, dst0;
1082
+
1083
+ for (x = 0; x < len; x++) {
1084
+ DUP2_ARG2(__lsx_vld, src_argb0, 0, src_argb1, 0, src0, src1);
1085
+ dst0 = __lsx_vsadd_bu(src0, src1);
1086
+ __lsx_vst(dst0, dst_argb, 0);
1087
+ src_argb0 += 16;
1088
+ src_argb1 += 16;
1089
+ dst_argb += 16;
1090
+ }
1091
+ }
1092
+
1093
+ void ARGBSubtractRow_LSX(const uint8_t* src_argb0,
1094
+ const uint8_t* src_argb1,
1095
+ uint8_t* dst_argb,
1096
+ int width) {
1097
+ int x;
1098
+ int len = width / 4;
1099
+ __m128i src0, src1, dst0;
1100
+
1101
+ for (x = 0; x < len; x++) {
1102
+ DUP2_ARG2(__lsx_vld, src_argb0, 0, src_argb1, 0, src0, src1);
1103
+ dst0 = __lsx_vssub_bu(src0, src1);
1104
+ __lsx_vst(dst0, dst_argb, 0);
1105
+ src_argb0 += 16;
1106
+ src_argb1 += 16;
1107
+ dst_argb += 16;
1108
+ }
1109
+ }
1110
+
1111
+ void ARGBAttenuateRow_LSX(const uint8_t* src_argb,
1112
+ uint8_t* dst_argb,
1113
+ int width) {
1114
+ int x;
1115
+ int len = width / 8;
1116
+ __m128i src0, src1, tmp0, tmp1;
1117
+ __m128i reg0, reg1, reg2, reg3, reg4, reg5;
1118
+ __m128i b, g, r, a, dst0, dst1;
1119
+ __m128i control = {0x0005000100040000, 0x0007000300060002};
1120
+ __m128i zero = __lsx_vldi(0);
1121
+ __m128i const_add = __lsx_vldi(0x8ff);
1122
+
1123
+ for (x = 0; x < len; x++) {
1124
+ DUP2_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src0, src1);
1125
+ tmp0 = __lsx_vpickev_b(src1, src0);
1126
+ tmp1 = __lsx_vpickod_b(src1, src0);
1127
+ b = __lsx_vpackev_b(zero, tmp0);
1128
+ r = __lsx_vpackod_b(zero, tmp0);
1129
+ g = __lsx_vpackev_b(zero, tmp1);
1130
+ a = __lsx_vpackod_b(zero, tmp1);
1131
+ reg0 = __lsx_vmaddwev_w_hu(const_add, b, a);
1132
+ reg1 = __lsx_vmaddwod_w_hu(const_add, b, a);
1133
+ reg2 = __lsx_vmaddwev_w_hu(const_add, r, a);
1134
+ reg3 = __lsx_vmaddwod_w_hu(const_add, r, a);
1135
+ reg4 = __lsx_vmaddwev_w_hu(const_add, g, a);
1136
+ reg5 = __lsx_vmaddwod_w_hu(const_add, g, a);
1137
+ reg0 = __lsx_vssrani_h_w(reg1, reg0, 8);
1138
+ reg2 = __lsx_vssrani_h_w(reg3, reg2, 8);
1139
+ reg4 = __lsx_vssrani_h_w(reg5, reg4, 8);
1140
+ reg0 = __lsx_vshuf_h(control, reg0, reg0);
1141
+ reg2 = __lsx_vshuf_h(control, reg2, reg2);
1142
+ reg4 = __lsx_vshuf_h(control, reg4, reg4);
1143
+ tmp0 = __lsx_vpackev_b(reg4, reg0);
1144
+ tmp1 = __lsx_vpackev_b(a, reg2);
1145
+ dst0 = __lsx_vilvl_h(tmp1, tmp0);
1146
+ dst1 = __lsx_vilvh_h(tmp1, tmp0);
1147
+ __lsx_vst(dst0, dst_argb, 0);
1148
+ __lsx_vst(dst1, dst_argb, 16);
1149
+ dst_argb += 32;
1150
+ src_argb += 32;
1151
+ }
1152
+ }
1153
+
1154
+ void ARGBToRGB565DitherRow_LSX(const uint8_t* src_argb,
1155
+ uint8_t* dst_rgb,
1156
+ uint32_t dither4,
1157
+ int width) {
1158
+ int x;
1159
+ int len = width / 8;
1160
+ __m128i src0, src1, tmp0, tmp1, dst0;
1161
+ __m128i b, g, r;
1162
+ __m128i zero = __lsx_vldi(0);
1163
+ __m128i vec_dither = __lsx_vldrepl_w(&dither4, 0);
1164
+
1165
+ vec_dither = __lsx_vilvl_b(zero, vec_dither);
1166
+ for (x = 0; x < len; x++) {
1167
+ DUP2_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src0, src1);
1168
+ tmp0 = __lsx_vpickev_b(src1, src0);
1169
+ tmp1 = __lsx_vpickod_b(src1, src0);
1170
+ b = __lsx_vpackev_b(zero, tmp0);
1171
+ r = __lsx_vpackod_b(zero, tmp0);
1172
+ g = __lsx_vpackev_b(zero, tmp1);
1173
+ b = __lsx_vadd_h(b, vec_dither);
1174
+ g = __lsx_vadd_h(g, vec_dither);
1175
+ r = __lsx_vadd_h(r, vec_dither);
1176
+ DUP2_ARG1(__lsx_vclip255_h, b, g, b, g);
1177
+ r = __lsx_vclip255_h(r);
1178
+ b = __lsx_vsrai_h(b, 3);
1179
+ g = __lsx_vsrai_h(g, 2);
1180
+ r = __lsx_vsrai_h(r, 3);
1181
+ g = __lsx_vslli_h(g, 5);
1182
+ r = __lsx_vslli_h(r, 11);
1183
+ dst0 = __lsx_vor_v(b, g);
1184
+ dst0 = __lsx_vor_v(dst0, r);
1185
+ __lsx_vst(dst0, dst_rgb, 0);
1186
+ src_argb += 32;
1187
+ dst_rgb += 16;
1188
+ }
1189
+ }
1190
+
1191
+ void ARGBShuffleRow_LSX(const uint8_t* src_argb,
1192
+ uint8_t* dst_argb,
1193
+ const uint8_t* shuffler,
1194
+ int width) {
1195
+ int x;
1196
+ int len = width / 8;
1197
+ __m128i src0, src1, dst0, dst1;
1198
+ __m128i shuf = {0x0404040400000000, 0x0C0C0C0C08080808};
1199
+ __m128i temp = __lsx_vldrepl_w(shuffler, 0);
1200
+
1201
+ shuf = __lsx_vadd_b(shuf, temp);
1202
+ for (x = 0; x < len; x++) {
1203
+ DUP2_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src0, src1);
1204
+ dst0 = __lsx_vshuf_b(src0, src0, shuf);
1205
+ dst1 = __lsx_vshuf_b(src1, src1, shuf);
1206
+ __lsx_vst(dst0, dst_argb, 0);
1207
+ __lsx_vst(dst1, dst_argb, 16);
1208
+ src_argb += 32;
1209
+ dst_argb += 32;
1210
+ }
1211
+ }
1212
+
1213
+ void ARGBShadeRow_LSX(const uint8_t* src_argb,
1214
+ uint8_t* dst_argb,
1215
+ int width,
1216
+ uint32_t value) {
1217
+ int x;
1218
+ int len = width / 4;
1219
+ __m128i src0, dst0, tmp0, tmp1;
1220
+ __m128i vec_value = __lsx_vreplgr2vr_w(value);
1221
+
1222
+ vec_value = __lsx_vilvl_b(vec_value, vec_value);
1223
+ for (x = 0; x < len; x++) {
1224
+ src0 = __lsx_vld(src_argb, 0);
1225
+ tmp0 = __lsx_vilvl_b(src0, src0);
1226
+ tmp1 = __lsx_vilvh_b(src0, src0);
1227
+ tmp0 = __lsx_vmuh_hu(tmp0, vec_value);
1228
+ tmp1 = __lsx_vmuh_hu(tmp1, vec_value);
1229
+ dst0 = __lsx_vpickod_b(tmp1, tmp0);
1230
+ __lsx_vst(dst0, dst_argb, 0);
1231
+ src_argb += 16;
1232
+ dst_argb += 16;
1233
+ }
1234
+ }
1235
+
1236
+ void ARGBGrayRow_LSX(const uint8_t* src_argb, uint8_t* dst_argb, int width) {
1237
+ int x;
1238
+ int len = width / 8;
1239
+ __m128i src0, src1, tmp0, tmp1;
1240
+ __m128i reg0, reg1, reg2, dst0, dst1;
1241
+ __m128i const_128 = __lsx_vldi(0x480);
1242
+ __m128i const_150 = __lsx_vldi(0x96);
1243
+ __m128i const_br = {0x4D1D4D1D4D1D4D1D, 0x4D1D4D1D4D1D4D1D};
1244
+
1245
+ for (x = 0; x < len; x++) {
1246
+ DUP2_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src0, src1);
1247
+ tmp0 = __lsx_vpickev_b(src1, src0);
1248
+ tmp1 = __lsx_vpickod_b(src1, src0);
1249
+ reg0 = __lsx_vdp2_h_bu(tmp0, const_br);
1250
+ reg1 = __lsx_vmaddwev_h_bu(const_128, tmp1, const_150);
1251
+ reg2 = __lsx_vadd_h(reg0, reg1);
1252
+ tmp0 = __lsx_vpackod_b(reg2, reg2);
1253
+ tmp1 = __lsx_vpackod_b(tmp1, reg2);
1254
+ dst0 = __lsx_vilvl_h(tmp1, tmp0);
1255
+ dst1 = __lsx_vilvh_h(tmp1, tmp0);
1256
+ __lsx_vst(dst0, dst_argb, 0);
1257
+ __lsx_vst(dst1, dst_argb, 16);
1258
+ src_argb += 32;
1259
+ dst_argb += 32;
1260
+ }
1261
+ }
1262
+
1263
+ void ARGBSepiaRow_LSX(uint8_t* dst_argb, int width) {
1264
+ int x;
1265
+ int len = width / 8;
1266
+ __m128i src0, src1, tmp0, tmp1;
1267
+ __m128i reg0, reg1, spb, spg, spr;
1268
+ __m128i dst0, dst1;
1269
+ __m128i spb_g = __lsx_vldi(68);
1270
+ __m128i spg_g = __lsx_vldi(88);
1271
+ __m128i spr_g = __lsx_vldi(98);
1272
+ __m128i spb_br = {0x2311231123112311, 0x2311231123112311};
1273
+ __m128i spg_br = {0x2D162D162D162D16, 0x2D162D162D162D16};
1274
+ __m128i spr_br = {0x3218321832183218, 0x3218321832183218};
1275
+ __m128i shuff = {0x1706150413021100, 0x1F0E1D0C1B0A1908};
1276
+
1277
+ for (x = 0; x < len; x++) {
1278
+ DUP2_ARG2(__lsx_vld, dst_argb, 0, dst_argb, 16, src0, src1);
1279
+ tmp0 = __lsx_vpickev_b(src1, src0);
1280
+ tmp1 = __lsx_vpickod_b(src1, src0);
1281
+ DUP2_ARG2(__lsx_vdp2_h_bu, tmp0, spb_br, tmp0, spg_br, spb, spg);
1282
+ spr = __lsx_vdp2_h_bu(tmp0, spr_br);
1283
+ spb = __lsx_vmaddwev_h_bu(spb, tmp1, spb_g);
1284
+ spg = __lsx_vmaddwev_h_bu(spg, tmp1, spg_g);
1285
+ spr = __lsx_vmaddwev_h_bu(spr, tmp1, spr_g);
1286
+ spb = __lsx_vsrli_h(spb, 7);
1287
+ spg = __lsx_vsrli_h(spg, 7);
1288
+ spr = __lsx_vsrli_h(spr, 7);
1289
+ spg = __lsx_vsat_hu(spg, 7);
1290
+ spr = __lsx_vsat_hu(spr, 7);
1291
+ reg0 = __lsx_vpackev_b(spg, spb);
1292
+ reg1 = __lsx_vshuf_b(tmp1, spr, shuff);
1293
+ dst0 = __lsx_vilvl_h(reg1, reg0);
1294
+ dst1 = __lsx_vilvh_h(reg1, reg0);
1295
+ __lsx_vst(dst0, dst_argb, 0);
1296
+ __lsx_vst(dst1, dst_argb, 16);
1297
+ dst_argb += 32;
1298
+ }
1299
+ }
1300
+
1301
+ void ARGB4444ToARGBRow_LSX(const uint8_t* src_argb4444,
1302
+ uint8_t* dst_argb,
1303
+ int width) {
1304
+ int x;
1305
+ int len = width / 16;
1306
+ __m128i src0, src1;
1307
+ __m128i tmp0, tmp1, tmp2, tmp3;
1308
+ __m128i reg0, reg1, reg2, reg3;
1309
+ __m128i dst0, dst1, dst2, dst3;
1310
+
1311
+ for (x = 0; x < len; x++) {
1312
+ src0 = __lsx_vld(src_argb4444, 0);
1313
+ src1 = __lsx_vld(src_argb4444, 16);
1314
+ tmp0 = __lsx_vandi_b(src0, 0x0F);
1315
+ tmp1 = __lsx_vandi_b(src0, 0xF0);
1316
+ tmp2 = __lsx_vandi_b(src1, 0x0F);
1317
+ tmp3 = __lsx_vandi_b(src1, 0xF0);
1318
+ reg0 = __lsx_vslli_b(tmp0, 4);
1319
+ reg2 = __lsx_vslli_b(tmp2, 4);
1320
+ reg1 = __lsx_vsrli_b(tmp1, 4);
1321
+ reg3 = __lsx_vsrli_b(tmp3, 4);
1322
+ DUP4_ARG2(__lsx_vor_v, tmp0, reg0, tmp1, reg1, tmp2, reg2, tmp3, reg3, tmp0,
1323
+ tmp1, tmp2, tmp3);
1324
+ dst0 = __lsx_vilvl_b(tmp1, tmp0);
1325
+ dst2 = __lsx_vilvl_b(tmp3, tmp2);
1326
+ dst1 = __lsx_vilvh_b(tmp1, tmp0);
1327
+ dst3 = __lsx_vilvh_b(tmp3, tmp2);
1328
+ __lsx_vst(dst0, dst_argb, 0);
1329
+ __lsx_vst(dst1, dst_argb, 16);
1330
+ __lsx_vst(dst2, dst_argb, 32);
1331
+ __lsx_vst(dst3, dst_argb, 48);
1332
+ dst_argb += 64;
1333
+ src_argb4444 += 32;
1334
+ }
1335
+ }
1336
+
1337
+ void ARGB1555ToARGBRow_LSX(const uint8_t* src_argb1555,
1338
+ uint8_t* dst_argb,
1339
+ int width) {
1340
+ int x;
1341
+ int len = width / 16;
1342
+ __m128i src0, src1;
1343
+ __m128i tmp0, tmp1, tmpb, tmpg, tmpr, tmpa;
1344
+ __m128i reg0, reg1, reg2;
1345
+ __m128i dst0, dst1, dst2, dst3;
1346
+
1347
+ for (x = 0; x < len; x++) {
1348
+ src0 = __lsx_vld(src_argb1555, 0);
1349
+ src1 = __lsx_vld(src_argb1555, 16);
1350
+ tmp0 = __lsx_vpickev_b(src1, src0);
1351
+ tmp1 = __lsx_vpickod_b(src1, src0);
1352
+ tmpb = __lsx_vandi_b(tmp0, 0x1F);
1353
+ tmpg = __lsx_vsrli_b(tmp0, 5);
1354
+ reg0 = __lsx_vandi_b(tmp1, 0x03);
1355
+ reg0 = __lsx_vslli_b(reg0, 3);
1356
+ tmpg = __lsx_vor_v(tmpg, reg0);
1357
+ reg1 = __lsx_vandi_b(tmp1, 0x7C);
1358
+ tmpr = __lsx_vsrli_b(reg1, 2);
1359
+ tmpa = __lsx_vsrli_b(tmp1, 7);
1360
+ tmpa = __lsx_vneg_b(tmpa);
1361
+ reg0 = __lsx_vslli_b(tmpb, 3);
1362
+ reg1 = __lsx_vslli_b(tmpg, 3);
1363
+ reg2 = __lsx_vslli_b(tmpr, 3);
1364
+ tmpb = __lsx_vsrli_b(tmpb, 2);
1365
+ tmpg = __lsx_vsrli_b(tmpg, 2);
1366
+ tmpr = __lsx_vsrli_b(tmpr, 2);
1367
+ tmpb = __lsx_vor_v(reg0, tmpb);
1368
+ tmpg = __lsx_vor_v(reg1, tmpg);
1369
+ tmpr = __lsx_vor_v(reg2, tmpr);
1370
+ DUP2_ARG2(__lsx_vilvl_b, tmpg, tmpb, tmpa, tmpr, reg0, reg1);
1371
+ dst0 = __lsx_vilvl_h(reg1, reg0);
1372
+ dst1 = __lsx_vilvh_h(reg1, reg0);
1373
+ DUP2_ARG2(__lsx_vilvh_b, tmpg, tmpb, tmpa, tmpr, reg0, reg1);
1374
+ dst2 = __lsx_vilvl_h(reg1, reg0);
1375
+ dst3 = __lsx_vilvh_h(reg1, reg0);
1376
+ __lsx_vst(dst0, dst_argb, 0);
1377
+ __lsx_vst(dst1, dst_argb, 16);
1378
+ __lsx_vst(dst2, dst_argb, 32);
1379
+ __lsx_vst(dst3, dst_argb, 48);
1380
+ dst_argb += 64;
1381
+ src_argb1555 += 32;
1382
+ }
1383
+ }
1384
+
1385
+ void RGB565ToARGBRow_LSX(const uint8_t* src_rgb565,
1386
+ uint8_t* dst_argb,
1387
+ int width) {
1388
+ int x;
1389
+ int len = width / 16;
1390
+ __m128i src0, src1;
1391
+ __m128i tmp0, tmp1, tmpb, tmpg, tmpr;
1392
+ __m128i reg0, reg1, dst0, dst1, dst2, dst3;
1393
+ __m128i alpha = __lsx_vldi(0xFF);
1394
+
1395
+ for (x = 0; x < len; x++) {
1396
+ src0 = __lsx_vld(src_rgb565, 0);
1397
+ src1 = __lsx_vld(src_rgb565, 16);
1398
+ tmp0 = __lsx_vpickev_b(src1, src0);
1399
+ tmp1 = __lsx_vpickod_b(src1, src0);
1400
+ tmpb = __lsx_vandi_b(tmp0, 0x1F);
1401
+ tmpr = __lsx_vandi_b(tmp1, 0xF8);
1402
+ reg1 = __lsx_vandi_b(tmp1, 0x07);
1403
+ reg0 = __lsx_vsrli_b(tmp0, 5);
1404
+ reg1 = __lsx_vslli_b(reg1, 3);
1405
+ tmpg = __lsx_vor_v(reg1, reg0);
1406
+ reg0 = __lsx_vslli_b(tmpb, 3);
1407
+ reg1 = __lsx_vsrli_b(tmpb, 2);
1408
+ tmpb = __lsx_vor_v(reg1, reg0);
1409
+ reg0 = __lsx_vslli_b(tmpg, 2);
1410
+ reg1 = __lsx_vsrli_b(tmpg, 4);
1411
+ tmpg = __lsx_vor_v(reg1, reg0);
1412
+ reg0 = __lsx_vsrli_b(tmpr, 5);
1413
+ tmpr = __lsx_vor_v(tmpr, reg0);
1414
+ DUP2_ARG2(__lsx_vilvl_b, tmpg, tmpb, alpha, tmpr, reg0, reg1);
1415
+ dst0 = __lsx_vilvl_h(reg1, reg0);
1416
+ dst1 = __lsx_vilvh_h(reg1, reg0);
1417
+ DUP2_ARG2(__lsx_vilvh_b, tmpg, tmpb, alpha, tmpr, reg0, reg1);
1418
+ dst2 = __lsx_vilvl_h(reg1, reg0);
1419
+ dst3 = __lsx_vilvh_h(reg1, reg0);
1420
+ __lsx_vst(dst0, dst_argb, 0);
1421
+ __lsx_vst(dst1, dst_argb, 16);
1422
+ __lsx_vst(dst2, dst_argb, 32);
1423
+ __lsx_vst(dst3, dst_argb, 48);
1424
+ dst_argb += 64;
1425
+ src_rgb565 += 32;
1426
+ }
1427
+ }
1428
+
1429
+ void RGB24ToARGBRow_LSX(const uint8_t* src_rgb24,
1430
+ uint8_t* dst_argb,
1431
+ int width) {
1432
+ int x;
1433
+ int len = width / 16;
1434
+ __m128i src0, src1, src2;
1435
+ __m128i tmp0, tmp1, tmp2;
1436
+ __m128i dst0, dst1, dst2, dst3;
1437
+ __m128i alpha = __lsx_vldi(0xFF);
1438
+ __m128i shuf0 = {0x131211100F0E0D0C, 0x1B1A191817161514};
1439
+ __m128i shuf1 = {0x1F1E1D1C1B1A1918, 0x0706050403020100};
1440
+ __m128i shuf2 = {0x0B0A090807060504, 0x131211100F0E0D0C};
1441
+ __m128i shuf3 = {0x1005040310020100, 0x100B0A0910080706};
1442
+
1443
+ for (x = 0; x < len; x++) {
1444
+ src0 = __lsx_vld(src_rgb24, 0);
1445
+ src1 = __lsx_vld(src_rgb24, 16);
1446
+ src2 = __lsx_vld(src_rgb24, 32);
1447
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuf0, src1, src2, shuf1, tmp0, tmp1);
1448
+ tmp2 = __lsx_vshuf_b(src1, src2, shuf2);
1449
+ DUP4_ARG3(__lsx_vshuf_b, alpha, src0, shuf3, alpha, tmp0, shuf3, alpha,
1450
+ tmp1, shuf3, alpha, tmp2, shuf3, dst0, dst1, dst2, dst3);
1451
+ __lsx_vst(dst0, dst_argb, 0);
1452
+ __lsx_vst(dst1, dst_argb, 16);
1453
+ __lsx_vst(dst2, dst_argb, 32);
1454
+ __lsx_vst(dst3, dst_argb, 48);
1455
+ dst_argb += 64;
1456
+ src_rgb24 += 48;
1457
+ }
1458
+ }
1459
+
1460
+ void RAWToARGBRow_LSX(const uint8_t* src_raw, uint8_t* dst_argb, int width) {
1461
+ int x;
1462
+ int len = width / 16;
1463
+ __m128i src0, src1, src2;
1464
+ __m128i tmp0, tmp1, tmp2;
1465
+ __m128i dst0, dst1, dst2, dst3;
1466
+ __m128i alpha = __lsx_vldi(0xFF);
1467
+ __m128i shuf0 = {0x131211100F0E0D0C, 0x1B1A191817161514};
1468
+ __m128i shuf1 = {0x1F1E1D1C1B1A1918, 0x0706050403020100};
1469
+ __m128i shuf2 = {0x0B0A090807060504, 0x131211100F0E0D0C};
1470
+ __m128i shuf3 = {0x1003040510000102, 0x10090A0B10060708};
1471
+
1472
+ for (x = 0; x < len; x++) {
1473
+ src0 = __lsx_vld(src_raw, 0);
1474
+ src1 = __lsx_vld(src_raw, 16);
1475
+ src2 = __lsx_vld(src_raw, 32);
1476
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuf0, src1, src2, shuf1, tmp0, tmp1);
1477
+ tmp2 = __lsx_vshuf_b(src1, src2, shuf2);
1478
+ DUP4_ARG3(__lsx_vshuf_b, alpha, src0, shuf3, alpha, tmp0, shuf3, alpha,
1479
+ tmp1, shuf3, alpha, tmp2, shuf3, dst0, dst1, dst2, dst3);
1480
+ __lsx_vst(dst0, dst_argb, 0);
1481
+ __lsx_vst(dst1, dst_argb, 16);
1482
+ __lsx_vst(dst2, dst_argb, 32);
1483
+ __lsx_vst(dst3, dst_argb, 48);
1484
+ dst_argb += 64;
1485
+ src_raw += 48;
1486
+ }
1487
+ }
1488
+
1489
+ void ARGB1555ToYRow_LSX(const uint8_t* src_argb1555,
1490
+ uint8_t* dst_y,
1491
+ int width) {
1492
+ int x;
1493
+ int len = width / 16;
1494
+ __m128i src0, src1;
1495
+ __m128i tmp0, tmp1, tmpb, tmpg, tmpr;
1496
+ __m128i reg0, reg1, reg2, dst0;
1497
+ __m128i const_66 = __lsx_vldi(66);
1498
+ __m128i const_129 = __lsx_vldi(129);
1499
+ __m128i const_25 = __lsx_vldi(25);
1500
+ __m128i const_1080 = {0x1080108010801080, 0x1080108010801080};
1501
+
1502
+ for (x = 0; x < len; x++) {
1503
+ src0 = __lsx_vld(src_argb1555, 0);
1504
+ src1 = __lsx_vld(src_argb1555, 16);
1505
+ tmp0 = __lsx_vpickev_b(src1, src0);
1506
+ tmp1 = __lsx_vpickod_b(src1, src0);
1507
+ tmpb = __lsx_vandi_b(tmp0, 0x1F);
1508
+ tmpg = __lsx_vsrli_b(tmp0, 5);
1509
+ reg0 = __lsx_vandi_b(tmp1, 0x03);
1510
+ reg0 = __lsx_vslli_b(reg0, 3);
1511
+ tmpg = __lsx_vor_v(tmpg, reg0);
1512
+ reg1 = __lsx_vandi_b(tmp1, 0x7C);
1513
+ tmpr = __lsx_vsrli_b(reg1, 2);
1514
+ reg0 = __lsx_vslli_b(tmpb, 3);
1515
+ reg1 = __lsx_vslli_b(tmpg, 3);
1516
+ reg2 = __lsx_vslli_b(tmpr, 3);
1517
+ tmpb = __lsx_vsrli_b(tmpb, 2);
1518
+ tmpg = __lsx_vsrli_b(tmpg, 2);
1519
+ tmpr = __lsx_vsrli_b(tmpr, 2);
1520
+ tmpb = __lsx_vor_v(reg0, tmpb);
1521
+ tmpg = __lsx_vor_v(reg1, tmpg);
1522
+ tmpr = __lsx_vor_v(reg2, tmpr);
1523
+ reg0 = __lsx_vmaddwev_h_bu(const_1080, tmpb, const_25);
1524
+ reg1 = __lsx_vmaddwod_h_bu(const_1080, tmpb, const_25);
1525
+ reg0 = __lsx_vmaddwev_h_bu(reg0, tmpg, const_129);
1526
+ reg1 = __lsx_vmaddwod_h_bu(reg1, tmpg, const_129);
1527
+ reg0 = __lsx_vmaddwev_h_bu(reg0, tmpr, const_66);
1528
+ reg1 = __lsx_vmaddwod_h_bu(reg1, tmpr, const_66);
1529
+ dst0 = __lsx_vpackod_b(reg1, reg0);
1530
+ __lsx_vst(dst0, dst_y, 0);
1531
+ dst_y += 16;
1532
+ src_argb1555 += 32;
1533
+ }
1534
+ }
1535
+
1536
+ void ARGB1555ToUVRow_LSX(const uint8_t* src_argb1555,
1537
+ int src_stride_argb1555,
1538
+ uint8_t* dst_u,
1539
+ uint8_t* dst_v,
1540
+ int width) {
1541
+ int x;
1542
+ int len = width / 16;
1543
+ const uint8_t* next_argb1555 = src_argb1555 + src_stride_argb1555;
1544
+ __m128i src0, src1, src2, src3;
1545
+ __m128i tmp0, tmp1, tmp2, tmp3;
1546
+ __m128i tmpb, tmpg, tmpr, nexb, nexg, nexr;
1547
+ __m128i reg0, reg1, reg2, reg3, dst0;
1548
+ __m128i const_112 = __lsx_vldi(0x470);
1549
+ __m128i const_74 = __lsx_vldi(0x44A);
1550
+ __m128i const_38 = __lsx_vldi(0x426);
1551
+ __m128i const_94 = __lsx_vldi(0x45E);
1552
+ __m128i const_18 = __lsx_vldi(0x412);
1553
+ __m128i const_8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
1554
+
1555
+ for (x = 0; x < len; x++) {
1556
+ DUP4_ARG2(__lsx_vld, src_argb1555, 0, src_argb1555, 16, next_argb1555, 0,
1557
+ next_argb1555, 16, src0, src1, src2, src3);
1558
+ DUP2_ARG2(__lsx_vpickev_b, src1, src0, src3, src2, tmp0, tmp2);
1559
+ DUP2_ARG2(__lsx_vpickod_b, src1, src0, src3, src2, tmp1, tmp3);
1560
+ tmpb = __lsx_vandi_b(tmp0, 0x1F);
1561
+ nexb = __lsx_vandi_b(tmp2, 0x1F);
1562
+ tmpg = __lsx_vsrli_b(tmp0, 5);
1563
+ nexg = __lsx_vsrli_b(tmp2, 5);
1564
+ reg0 = __lsx_vandi_b(tmp1, 0x03);
1565
+ reg2 = __lsx_vandi_b(tmp3, 0x03);
1566
+ reg0 = __lsx_vslli_b(reg0, 3);
1567
+ reg2 = __lsx_vslli_b(reg2, 3);
1568
+ tmpg = __lsx_vor_v(tmpg, reg0);
1569
+ nexg = __lsx_vor_v(nexg, reg2);
1570
+ reg1 = __lsx_vandi_b(tmp1, 0x7C);
1571
+ reg3 = __lsx_vandi_b(tmp3, 0x7C);
1572
+ tmpr = __lsx_vsrli_b(reg1, 2);
1573
+ nexr = __lsx_vsrli_b(reg3, 2);
1574
+ reg0 = __lsx_vslli_b(tmpb, 3);
1575
+ reg1 = __lsx_vslli_b(tmpg, 3);
1576
+ reg2 = __lsx_vslli_b(tmpr, 3);
1577
+ tmpb = __lsx_vsrli_b(tmpb, 2);
1578
+ tmpg = __lsx_vsrli_b(tmpg, 2);
1579
+ tmpr = __lsx_vsrli_b(tmpr, 2);
1580
+ tmpb = __lsx_vor_v(reg0, tmpb);
1581
+ tmpg = __lsx_vor_v(reg1, tmpg);
1582
+ tmpr = __lsx_vor_v(reg2, tmpr);
1583
+ reg0 = __lsx_vslli_b(nexb, 3);
1584
+ reg1 = __lsx_vslli_b(nexg, 3);
1585
+ reg2 = __lsx_vslli_b(nexr, 3);
1586
+ nexb = __lsx_vsrli_b(nexb, 2);
1587
+ nexg = __lsx_vsrli_b(nexg, 2);
1588
+ nexr = __lsx_vsrli_b(nexr, 2);
1589
+ nexb = __lsx_vor_v(reg0, nexb);
1590
+ nexg = __lsx_vor_v(reg1, nexg);
1591
+ nexr = __lsx_vor_v(reg2, nexr);
1592
+ RGBTOUV(tmpb, tmpg, tmpr, nexb, nexg, nexr, dst0);
1593
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
1594
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
1595
+ dst_u += 8;
1596
+ dst_v += 8;
1597
+ src_argb1555 += 32;
1598
+ next_argb1555 += 32;
1599
+ }
1600
+ }
1601
+
1602
+ void RGB565ToYRow_LSX(const uint8_t* src_rgb565, uint8_t* dst_y, int width) {
1603
+ int x;
1604
+ int len = width / 16;
1605
+ __m128i src0, src1;
1606
+ __m128i tmp0, tmp1, tmpb, tmpg, tmpr;
1607
+ __m128i reg0, reg1, dst0;
1608
+ __m128i const_66 = __lsx_vldi(66);
1609
+ __m128i const_129 = __lsx_vldi(129);
1610
+ __m128i const_25 = __lsx_vldi(25);
1611
+ __m128i const_1080 = {0x1080108010801080, 0x1080108010801080};
1612
+
1613
+ for (x = 0; x < len; x++) {
1614
+ src0 = __lsx_vld(src_rgb565, 0);
1615
+ src1 = __lsx_vld(src_rgb565, 16);
1616
+ tmp0 = __lsx_vpickev_b(src1, src0);
1617
+ tmp1 = __lsx_vpickod_b(src1, src0);
1618
+ tmpb = __lsx_vandi_b(tmp0, 0x1F);
1619
+ tmpr = __lsx_vandi_b(tmp1, 0xF8);
1620
+ reg1 = __lsx_vandi_b(tmp1, 0x07);
1621
+ reg0 = __lsx_vsrli_b(tmp0, 5);
1622
+ reg1 = __lsx_vslli_b(reg1, 3);
1623
+ tmpg = __lsx_vor_v(reg1, reg0);
1624
+ reg0 = __lsx_vslli_b(tmpb, 3);
1625
+ reg1 = __lsx_vsrli_b(tmpb, 2);
1626
+ tmpb = __lsx_vor_v(reg1, reg0);
1627
+ reg0 = __lsx_vslli_b(tmpg, 2);
1628
+ reg1 = __lsx_vsrli_b(tmpg, 4);
1629
+ tmpg = __lsx_vor_v(reg1, reg0);
1630
+ reg0 = __lsx_vsrli_b(tmpr, 5);
1631
+ tmpr = __lsx_vor_v(tmpr, reg0);
1632
+ reg0 = __lsx_vmaddwev_h_bu(const_1080, tmpb, const_25);
1633
+ reg1 = __lsx_vmaddwod_h_bu(const_1080, tmpb, const_25);
1634
+ reg0 = __lsx_vmaddwev_h_bu(reg0, tmpg, const_129);
1635
+ reg1 = __lsx_vmaddwod_h_bu(reg1, tmpg, const_129);
1636
+ reg0 = __lsx_vmaddwev_h_bu(reg0, tmpr, const_66);
1637
+ reg1 = __lsx_vmaddwod_h_bu(reg1, tmpr, const_66);
1638
+ dst0 = __lsx_vpackod_b(reg1, reg0);
1639
+ __lsx_vst(dst0, dst_y, 0);
1640
+ dst_y += 16;
1641
+ src_rgb565 += 32;
1642
+ }
1643
+ }
1644
+
1645
+ void RGB565ToUVRow_LSX(const uint8_t* src_rgb565,
1646
+ int src_stride_rgb565,
1647
+ uint8_t* dst_u,
1648
+ uint8_t* dst_v,
1649
+ int width) {
1650
+ int x;
1651
+ int len = width / 16;
1652
+ const uint8_t* next_rgb565 = src_rgb565 + src_stride_rgb565;
1653
+ __m128i src0, src1, src2, src3;
1654
+ __m128i tmp0, tmp1, tmp2, tmp3;
1655
+ __m128i tmpb, tmpg, tmpr, nexb, nexg, nexr;
1656
+ __m128i reg0, reg1, reg2, reg3, dst0;
1657
+ __m128i const_112 = __lsx_vldi(0x470);
1658
+ __m128i const_74 = __lsx_vldi(0x44A);
1659
+ __m128i const_38 = __lsx_vldi(0x426);
1660
+ __m128i const_94 = __lsx_vldi(0x45E);
1661
+ __m128i const_18 = __lsx_vldi(0x412);
1662
+ __m128i const_8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
1663
+
1664
+ for (x = 0; x < len; x++) {
1665
+ DUP4_ARG2(__lsx_vld, src_rgb565, 0, src_rgb565, 16, next_rgb565, 0,
1666
+ next_rgb565, 16, src0, src1, src2, src3);
1667
+ DUP2_ARG2(__lsx_vpickev_b, src1, src0, src3, src2, tmp0, tmp2);
1668
+ DUP2_ARG2(__lsx_vpickod_b, src1, src0, src3, src2, tmp1, tmp3);
1669
+ tmpb = __lsx_vandi_b(tmp0, 0x1F);
1670
+ tmpr = __lsx_vandi_b(tmp1, 0xF8);
1671
+ nexb = __lsx_vandi_b(tmp2, 0x1F);
1672
+ nexr = __lsx_vandi_b(tmp3, 0xF8);
1673
+ reg1 = __lsx_vandi_b(tmp1, 0x07);
1674
+ reg3 = __lsx_vandi_b(tmp3, 0x07);
1675
+ reg0 = __lsx_vsrli_b(tmp0, 5);
1676
+ reg1 = __lsx_vslli_b(reg1, 3);
1677
+ reg2 = __lsx_vsrli_b(tmp2, 5);
1678
+ reg3 = __lsx_vslli_b(reg3, 3);
1679
+ tmpg = __lsx_vor_v(reg1, reg0);
1680
+ nexg = __lsx_vor_v(reg2, reg3);
1681
+ reg0 = __lsx_vslli_b(tmpb, 3);
1682
+ reg1 = __lsx_vsrli_b(tmpb, 2);
1683
+ reg2 = __lsx_vslli_b(nexb, 3);
1684
+ reg3 = __lsx_vsrli_b(nexb, 2);
1685
+ tmpb = __lsx_vor_v(reg1, reg0);
1686
+ nexb = __lsx_vor_v(reg2, reg3);
1687
+ reg0 = __lsx_vslli_b(tmpg, 2);
1688
+ reg1 = __lsx_vsrli_b(tmpg, 4);
1689
+ reg2 = __lsx_vslli_b(nexg, 2);
1690
+ reg3 = __lsx_vsrli_b(nexg, 4);
1691
+ tmpg = __lsx_vor_v(reg1, reg0);
1692
+ nexg = __lsx_vor_v(reg2, reg3);
1693
+ reg0 = __lsx_vsrli_b(tmpr, 5);
1694
+ reg2 = __lsx_vsrli_b(nexr, 5);
1695
+ tmpr = __lsx_vor_v(tmpr, reg0);
1696
+ nexr = __lsx_vor_v(nexr, reg2);
1697
+ RGBTOUV(tmpb, tmpg, tmpr, nexb, nexg, nexr, dst0);
1698
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
1699
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
1700
+ dst_u += 8;
1701
+ dst_v += 8;
1702
+ src_rgb565 += 32;
1703
+ next_rgb565 += 32;
1704
+ }
1705
+ }
1706
+
1707
+ void RGB24ToUVRow_LSX(const uint8_t* src_rgb24,
1708
+ int src_stride_rgb24,
1709
+ uint8_t* dst_u,
1710
+ uint8_t* dst_v,
1711
+ int width) {
1712
+ int x;
1713
+ const uint8_t* next_rgb24 = src_rgb24 + src_stride_rgb24;
1714
+ int len = width / 16;
1715
+ __m128i src0, src1, src2;
1716
+ __m128i nex0, nex1, nex2, dst0;
1717
+ __m128i tmpb, tmpg, tmpr, nexb, nexg, nexr;
1718
+ __m128i const_112 = __lsx_vldi(0x470);
1719
+ __m128i const_74 = __lsx_vldi(0x44A);
1720
+ __m128i const_38 = __lsx_vldi(0x426);
1721
+ __m128i const_94 = __lsx_vldi(0x45E);
1722
+ __m128i const_18 = __lsx_vldi(0x412);
1723
+ __m128i const_8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
1724
+ __m128i shuff0_b = {0x15120F0C09060300, 0x00000000001E1B18};
1725
+ __m128i shuff1_b = {0x0706050403020100, 0x1D1A1714110A0908};
1726
+ __m128i shuff0_g = {0x1613100D0A070401, 0x00000000001F1C19};
1727
+ __m128i shuff1_g = {0x0706050403020100, 0x1E1B1815120A0908};
1728
+ __m128i shuff0_r = {0x1714110E0B080502, 0x0000000000001D1A};
1729
+ __m128i shuff1_r = {0x0706050403020100, 0x1F1C191613100908};
1730
+
1731
+ for (x = 0; x < len; x++) {
1732
+ src0 = __lsx_vld(src_rgb24, 0);
1733
+ src1 = __lsx_vld(src_rgb24, 16);
1734
+ src2 = __lsx_vld(src_rgb24, 32);
1735
+ nex0 = __lsx_vld(next_rgb24, 0);
1736
+ nex1 = __lsx_vld(next_rgb24, 16);
1737
+ nex2 = __lsx_vld(next_rgb24, 32);
1738
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuff0_b, nex1, nex0, shuff0_b, tmpb,
1739
+ nexb);
1740
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuff0_g, nex1, nex0, shuff0_g, tmpg,
1741
+ nexg);
1742
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuff0_r, nex1, nex0, shuff0_r, tmpr,
1743
+ nexr);
1744
+ DUP2_ARG3(__lsx_vshuf_b, src2, tmpb, shuff1_b, nex2, nexb, shuff1_b, tmpb,
1745
+ nexb);
1746
+ DUP2_ARG3(__lsx_vshuf_b, src2, tmpg, shuff1_g, nex2, nexg, shuff1_g, tmpg,
1747
+ nexg);
1748
+ DUP2_ARG3(__lsx_vshuf_b, src2, tmpr, shuff1_r, nex2, nexr, shuff1_r, tmpr,
1749
+ nexr);
1750
+ RGBTOUV(tmpb, tmpg, tmpr, nexb, nexg, nexr, dst0);
1751
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
1752
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
1753
+ dst_u += 8;
1754
+ dst_v += 8;
1755
+ src_rgb24 += 48;
1756
+ next_rgb24 += 48;
1757
+ }
1758
+ }
1759
+
1760
+ void RAWToUVRow_LSX(const uint8_t* src_raw,
1761
+ int src_stride_raw,
1762
+ uint8_t* dst_u,
1763
+ uint8_t* dst_v,
1764
+ int width) {
1765
+ int x;
1766
+ const uint8_t* next_raw = src_raw + src_stride_raw;
1767
+ int len = width / 16;
1768
+ __m128i src0, src1, src2;
1769
+ __m128i nex0, nex1, nex2, dst0;
1770
+ __m128i tmpb, tmpg, tmpr, nexb, nexg, nexr;
1771
+ __m128i const_112 = __lsx_vldi(0x470);
1772
+ __m128i const_74 = __lsx_vldi(0x44A);
1773
+ __m128i const_38 = __lsx_vldi(0x426);
1774
+ __m128i const_94 = __lsx_vldi(0x45E);
1775
+ __m128i const_18 = __lsx_vldi(0x412);
1776
+ __m128i const_8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
1777
+ __m128i shuff0_r = {0x15120F0C09060300, 0x00000000001E1B18};
1778
+ __m128i shuff1_r = {0x0706050403020100, 0x1D1A1714110A0908};
1779
+ __m128i shuff0_g = {0x1613100D0A070401, 0x00000000001F1C19};
1780
+ __m128i shuff1_g = {0x0706050403020100, 0x1E1B1815120A0908};
1781
+ __m128i shuff0_b = {0x1714110E0B080502, 0x0000000000001D1A};
1782
+ __m128i shuff1_b = {0x0706050403020100, 0x1F1C191613100908};
1783
+
1784
+ for (x = 0; x < len; x++) {
1785
+ src0 = __lsx_vld(src_raw, 0);
1786
+ src1 = __lsx_vld(src_raw, 16);
1787
+ src2 = __lsx_vld(src_raw, 32);
1788
+ nex0 = __lsx_vld(next_raw, 0);
1789
+ nex1 = __lsx_vld(next_raw, 16);
1790
+ nex2 = __lsx_vld(next_raw, 32);
1791
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuff0_b, nex1, nex0, shuff0_b, tmpb,
1792
+ nexb);
1793
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuff0_g, nex1, nex0, shuff0_g, tmpg,
1794
+ nexg);
1795
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuff0_r, nex1, nex0, shuff0_r, tmpr,
1796
+ nexr);
1797
+ DUP2_ARG3(__lsx_vshuf_b, src2, tmpb, shuff1_b, nex2, nexb, shuff1_b, tmpb,
1798
+ nexb);
1799
+ DUP2_ARG3(__lsx_vshuf_b, src2, tmpg, shuff1_g, nex2, nexg, shuff1_g, tmpg,
1800
+ nexg);
1801
+ DUP2_ARG3(__lsx_vshuf_b, src2, tmpr, shuff1_r, nex2, nexr, shuff1_r, tmpr,
1802
+ nexr);
1803
+ RGBTOUV(tmpb, tmpg, tmpr, nexb, nexg, nexr, dst0);
1804
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
1805
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
1806
+ dst_u += 8;
1807
+ dst_v += 8;
1808
+ src_raw += 48;
1809
+ next_raw += 48;
1810
+ }
1811
+ }
1812
+
1813
+ void NV12ToARGBRow_LSX(const uint8_t* src_y,
1814
+ const uint8_t* src_uv,
1815
+ uint8_t* dst_argb,
1816
+ const struct YuvConstants* yuvconstants,
1817
+ int width) {
1818
+ int x;
1819
+ int len = width / 8;
1820
+ __m128i vec_y, vec_vu;
1821
+ __m128i vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb;
1822
+ __m128i vec_vrub, vec_vgug;
1823
+ __m128i out_b, out_g, out_r;
1824
+ __m128i const_80 = __lsx_vldi(0x480);
1825
+ __m128i alpha = __lsx_vldi(0xFF);
1826
+ __m128i zero = __lsx_vldi(0);
1827
+
1828
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
1829
+ vec_vrub = __lsx_vilvl_h(vec_vr, vec_ub);
1830
+ vec_vgug = __lsx_vilvl_h(vec_vg, vec_ug);
1831
+
1832
+ for (x = 0; x < len; x++) {
1833
+ vec_y = __lsx_vld(src_y, 0);
1834
+ vec_vu = __lsx_vld(src_uv, 0);
1835
+ YUVTORGB(vec_y, vec_vu, vec_vrub, vec_vgug, vec_yg, vec_yb, out_b, out_g,
1836
+ out_r);
1837
+ STOREARGB(alpha, out_r, out_g, out_b, dst_argb);
1838
+ src_y += 8;
1839
+ src_uv += 8;
1840
+ }
1841
+ }
1842
+
1843
+ void NV12ToRGB565Row_LSX(const uint8_t* src_y,
1844
+ const uint8_t* src_uv,
1845
+ uint8_t* dst_rgb565,
1846
+ const struct YuvConstants* yuvconstants,
1847
+ int width) {
1848
+ int x;
1849
+ int len = width / 8;
1850
+ __m128i vec_y, vec_vu;
1851
+ __m128i vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb;
1852
+ __m128i vec_vrub, vec_vgug;
1853
+ __m128i out_b, out_g, out_r;
1854
+ __m128i const_80 = __lsx_vldi(0x480);
1855
+ __m128i zero = __lsx_vldi(0);
1856
+
1857
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
1858
+ vec_vrub = __lsx_vilvl_h(vec_vr, vec_ub);
1859
+ vec_vgug = __lsx_vilvl_h(vec_vg, vec_ug);
1860
+
1861
+ for (x = 0; x < len; x++) {
1862
+ vec_y = __lsx_vld(src_y, 0);
1863
+ vec_vu = __lsx_vld(src_uv, 0);
1864
+ YUVTORGB(vec_y, vec_vu, vec_vrub, vec_vgug, vec_yg, vec_yb, out_b, out_g,
1865
+ out_r);
1866
+ out_b = __lsx_vsrli_h(out_b, 3);
1867
+ out_g = __lsx_vsrli_h(out_g, 2);
1868
+ out_r = __lsx_vsrli_h(out_r, 3);
1869
+ out_g = __lsx_vslli_h(out_g, 5);
1870
+ out_r = __lsx_vslli_h(out_r, 11);
1871
+ out_r = __lsx_vor_v(out_r, out_g);
1872
+ out_r = __lsx_vor_v(out_r, out_b);
1873
+ __lsx_vst(out_r, dst_rgb565, 0);
1874
+ src_y += 8;
1875
+ src_uv += 8;
1876
+ dst_rgb565 += 16;
1877
+ }
1878
+ }
1879
+
1880
+ void NV21ToARGBRow_LSX(const uint8_t* src_y,
1881
+ const uint8_t* src_vu,
1882
+ uint8_t* dst_argb,
1883
+ const struct YuvConstants* yuvconstants,
1884
+ int width) {
1885
+ int x;
1886
+ int len = width / 8;
1887
+ __m128i vec_y, vec_uv;
1888
+ __m128i vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb;
1889
+ __m128i vec_ubvr, vec_ugvg;
1890
+ __m128i out_b, out_g, out_r;
1891
+ __m128i const_80 = __lsx_vldi(0x480);
1892
+ __m128i alpha = __lsx_vldi(0xFF);
1893
+ __m128i zero = __lsx_vldi(0);
1894
+
1895
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
1896
+ vec_ubvr = __lsx_vilvl_h(vec_ub, vec_vr);
1897
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
1898
+
1899
+ for (x = 0; x < len; x++) {
1900
+ vec_y = __lsx_vld(src_y, 0);
1901
+ vec_uv = __lsx_vld(src_vu, 0);
1902
+ YUVTORGB(vec_y, vec_uv, vec_ubvr, vec_ugvg, vec_yg, vec_yb, out_r, out_g,
1903
+ out_b);
1904
+ STOREARGB(alpha, out_r, out_g, out_b, dst_argb);
1905
+ src_y += 8;
1906
+ src_vu += 8;
1907
+ }
1908
+ }
1909
+
1910
+ void SobelRow_LSX(const uint8_t* src_sobelx,
1911
+ const uint8_t* src_sobely,
1912
+ uint8_t* dst_argb,
1913
+ int width) {
1914
+ int x;
1915
+ int len = width / 16;
1916
+ __m128i src0, src1, tmp0;
1917
+ __m128i out0, out1, out2, out3;
1918
+ __m128i alpha = __lsx_vldi(0xFF);
1919
+ __m128i shuff0 = {0x1001010110000000, 0x1003030310020202};
1920
+ __m128i shuff1 = __lsx_vaddi_bu(shuff0, 0x04);
1921
+ __m128i shuff2 = __lsx_vaddi_bu(shuff1, 0x04);
1922
+ __m128i shuff3 = __lsx_vaddi_bu(shuff2, 0x04);
1923
+
1924
+ for (x = 0; x < len; x++) {
1925
+ src0 = __lsx_vld(src_sobelx, 0);
1926
+ src1 = __lsx_vld(src_sobely, 0);
1927
+ tmp0 = __lsx_vsadd_bu(src0, src1);
1928
+ DUP4_ARG3(__lsx_vshuf_b, alpha, tmp0, shuff0, alpha, tmp0, shuff1, alpha,
1929
+ tmp0, shuff2, alpha, tmp0, shuff3, out0, out1, out2, out3);
1930
+ __lsx_vst(out0, dst_argb, 0);
1931
+ __lsx_vst(out1, dst_argb, 16);
1932
+ __lsx_vst(out2, dst_argb, 32);
1933
+ __lsx_vst(out3, dst_argb, 48);
1934
+ src_sobelx += 16;
1935
+ src_sobely += 16;
1936
+ dst_argb += 64;
1937
+ }
1938
+ }
1939
+
1940
+ void SobelToPlaneRow_LSX(const uint8_t* src_sobelx,
1941
+ const uint8_t* src_sobely,
1942
+ uint8_t* dst_y,
1943
+ int width) {
1944
+ int x;
1945
+ int len = width / 32;
1946
+ __m128i src0, src1, src2, src3, dst0, dst1;
1947
+
1948
+ for (x = 0; x < len; x++) {
1949
+ DUP2_ARG2(__lsx_vld, src_sobelx, 0, src_sobelx, 16, src0, src1);
1950
+ DUP2_ARG2(__lsx_vld, src_sobely, 0, src_sobely, 16, src2, src3);
1951
+ dst0 = __lsx_vsadd_bu(src0, src2);
1952
+ dst1 = __lsx_vsadd_bu(src1, src3);
1953
+ __lsx_vst(dst0, dst_y, 0);
1954
+ __lsx_vst(dst1, dst_y, 16);
1955
+ src_sobelx += 32;
1956
+ src_sobely += 32;
1957
+ dst_y += 32;
1958
+ }
1959
+ }
1960
+
1961
+ void SobelXYRow_LSX(const uint8_t* src_sobelx,
1962
+ const uint8_t* src_sobely,
1963
+ uint8_t* dst_argb,
1964
+ int width) {
1965
+ int x;
1966
+ int len = width / 16;
1967
+ __m128i src_r, src_b, src_g;
1968
+ __m128i tmp0, tmp1, tmp2, tmp3;
1969
+ __m128i dst0, dst1, dst2, dst3;
1970
+ __m128i alpha = __lsx_vldi(0xFF);
1971
+
1972
+ for (x = 0; x < len; x++) {
1973
+ src_r = __lsx_vld(src_sobelx, 0);
1974
+ src_b = __lsx_vld(src_sobely, 0);
1975
+ src_g = __lsx_vsadd_bu(src_r, src_b);
1976
+ tmp0 = __lsx_vilvl_b(src_g, src_b);
1977
+ tmp1 = __lsx_vilvh_b(src_g, src_b);
1978
+ tmp2 = __lsx_vilvl_b(alpha, src_r);
1979
+ tmp3 = __lsx_vilvh_b(alpha, src_r);
1980
+ dst0 = __lsx_vilvl_h(tmp2, tmp0);
1981
+ dst1 = __lsx_vilvh_h(tmp2, tmp0);
1982
+ dst2 = __lsx_vilvl_h(tmp3, tmp1);
1983
+ dst3 = __lsx_vilvh_h(tmp3, tmp1);
1984
+ __lsx_vst(dst0, dst_argb, 0);
1985
+ __lsx_vst(dst1, dst_argb, 16);
1986
+ __lsx_vst(dst2, dst_argb, 32);
1987
+ __lsx_vst(dst3, dst_argb, 48);
1988
+ src_sobelx += 16;
1989
+ src_sobely += 16;
1990
+ dst_argb += 64;
1991
+ }
1992
+ }
1993
+
1994
+ void BGRAToUVRow_LSX(const uint8_t* src_bgra,
1995
+ int src_stride_bgra,
1996
+ uint8_t* dst_u,
1997
+ uint8_t* dst_v,
1998
+ int width) {
1999
+ int x;
2000
+ const uint8_t* next_bgra = src_bgra + src_stride_bgra;
2001
+ int len = width / 16;
2002
+ __m128i src0, src1, src2, src3;
2003
+ __m128i nex0, nex1, nex2, nex3;
2004
+ __m128i tmp0, tmp1, tmp2, tmp3, dst0;
2005
+ __m128i tmpb, tmpg, tmpr, nexb, nexg, nexr;
2006
+ __m128i const_112 = __lsx_vldi(0x470);
2007
+ __m128i const_74 = __lsx_vldi(0x44A);
2008
+ __m128i const_38 = __lsx_vldi(0x426);
2009
+ __m128i const_94 = __lsx_vldi(0x45E);
2010
+ __m128i const_18 = __lsx_vldi(0x412);
2011
+ __m128i const_8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
2012
+
2013
+ for (x = 0; x < len; x++) {
2014
+ DUP4_ARG2(__lsx_vld, src_bgra, 0, src_bgra, 16, src_bgra, 32, src_bgra, 48,
2015
+ src0, src1, src2, src3);
2016
+ DUP4_ARG2(__lsx_vld, next_bgra, 0, next_bgra, 16, next_bgra, 32, next_bgra,
2017
+ 48, nex0, nex1, nex2, nex3);
2018
+ tmp0 = __lsx_vpickod_b(src1, src0);
2019
+ tmp1 = __lsx_vpickev_b(src1, src0);
2020
+ tmp2 = __lsx_vpickod_b(src3, src2);
2021
+ tmp3 = __lsx_vpickev_b(src3, src2);
2022
+ tmpb = __lsx_vpickod_b(tmp2, tmp0);
2023
+ tmpr = __lsx_vpickev_b(tmp2, tmp0);
2024
+ tmpg = __lsx_vpickod_b(tmp3, tmp1);
2025
+ tmp0 = __lsx_vpickod_b(nex1, nex0);
2026
+ tmp1 = __lsx_vpickev_b(nex1, nex0);
2027
+ tmp2 = __lsx_vpickod_b(nex3, nex2);
2028
+ tmp3 = __lsx_vpickev_b(nex3, nex2);
2029
+ nexb = __lsx_vpickod_b(tmp2, tmp0);
2030
+ nexr = __lsx_vpickev_b(tmp2, tmp0);
2031
+ nexg = __lsx_vpickod_b(tmp3, tmp1);
2032
+ RGBTOUV(tmpb, tmpg, tmpr, nexb, nexg, nexr, dst0);
2033
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
2034
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
2035
+ dst_u += 8;
2036
+ dst_v += 8;
2037
+ src_bgra += 64;
2038
+ next_bgra += 64;
2039
+ }
2040
+ }
2041
+
2042
+ void ABGRToUVRow_LSX(const uint8_t* src_abgr,
2043
+ int src_stride_abgr,
2044
+ uint8_t* dst_u,
2045
+ uint8_t* dst_v,
2046
+ int width) {
2047
+ int x;
2048
+ const uint8_t* next_abgr = src_abgr + src_stride_abgr;
2049
+ int len = width / 16;
2050
+ __m128i src0, src1, src2, src3;
2051
+ __m128i nex0, nex1, nex2, nex3;
2052
+ __m128i tmp0, tmp1, tmp2, tmp3, dst0;
2053
+ __m128i tmpb, tmpg, tmpr, nexb, nexg, nexr;
2054
+ __m128i const_112 = __lsx_vldi(0x470);
2055
+ __m128i const_74 = __lsx_vldi(0x44A);
2056
+ __m128i const_38 = __lsx_vldi(0x426);
2057
+ __m128i const_94 = __lsx_vldi(0x45E);
2058
+ __m128i const_18 = __lsx_vldi(0x412);
2059
+ __m128i const_8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
2060
+
2061
+ for (x = 0; x < len; x++) {
2062
+ DUP4_ARG2(__lsx_vld, src_abgr, 0, src_abgr, 16, src_abgr, 32, src_abgr, 48,
2063
+ src0, src1, src2, src3);
2064
+ DUP4_ARG2(__lsx_vld, next_abgr, 0, next_abgr, 16, next_abgr, 32, next_abgr,
2065
+ 48, nex0, nex1, nex2, nex3);
2066
+ tmp0 = __lsx_vpickev_b(src1, src0);
2067
+ tmp1 = __lsx_vpickod_b(src1, src0);
2068
+ tmp2 = __lsx_vpickev_b(src3, src2);
2069
+ tmp3 = __lsx_vpickod_b(src3, src2);
2070
+ tmpb = __lsx_vpickod_b(tmp2, tmp0);
2071
+ tmpr = __lsx_vpickev_b(tmp2, tmp0);
2072
+ tmpg = __lsx_vpickev_b(tmp3, tmp1);
2073
+ tmp0 = __lsx_vpickev_b(nex1, nex0);
2074
+ tmp1 = __lsx_vpickod_b(nex1, nex0);
2075
+ tmp2 = __lsx_vpickev_b(nex3, nex2);
2076
+ tmp3 = __lsx_vpickod_b(nex3, nex2);
2077
+ nexb = __lsx_vpickod_b(tmp2, tmp0);
2078
+ nexr = __lsx_vpickev_b(tmp2, tmp0);
2079
+ nexg = __lsx_vpickev_b(tmp3, tmp1);
2080
+ RGBTOUV(tmpb, tmpg, tmpr, nexb, nexg, nexr, dst0);
2081
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
2082
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
2083
+ dst_u += 8;
2084
+ dst_v += 8;
2085
+ src_abgr += 64;
2086
+ next_abgr += 64;
2087
+ }
2088
+ }
2089
+
2090
+ void RGBAToUVRow_LSX(const uint8_t* src_rgba,
2091
+ int src_stride_rgba,
2092
+ uint8_t* dst_u,
2093
+ uint8_t* dst_v,
2094
+ int width) {
2095
+ int x;
2096
+ const uint8_t* next_rgba = src_rgba + src_stride_rgba;
2097
+ int len = width / 16;
2098
+ __m128i src0, src1, src2, src3;
2099
+ __m128i nex0, nex1, nex2, nex3;
2100
+ __m128i tmp0, tmp1, tmp2, tmp3, dst0;
2101
+ __m128i tmpb, tmpg, tmpr, nexb, nexg, nexr;
2102
+ __m128i const_112 = __lsx_vldi(0x470);
2103
+ __m128i const_74 = __lsx_vldi(0x44A);
2104
+ __m128i const_38 = __lsx_vldi(0x426);
2105
+ __m128i const_94 = __lsx_vldi(0x45E);
2106
+ __m128i const_18 = __lsx_vldi(0x412);
2107
+ __m128i const_8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
2108
+
2109
+ for (x = 0; x < len; x++) {
2110
+ DUP4_ARG2(__lsx_vld, src_rgba, 0, src_rgba, 16, src_rgba, 32, src_rgba, 48,
2111
+ src0, src1, src2, src3);
2112
+ DUP4_ARG2(__lsx_vld, next_rgba, 0, next_rgba, 16, next_rgba, 32, next_rgba,
2113
+ 48, nex0, nex1, nex2, nex3);
2114
+ tmp0 = __lsx_vpickod_b(src1, src0);
2115
+ tmp1 = __lsx_vpickev_b(src1, src0);
2116
+ tmp2 = __lsx_vpickod_b(src3, src2);
2117
+ tmp3 = __lsx_vpickev_b(src3, src2);
2118
+ tmpr = __lsx_vpickod_b(tmp2, tmp0);
2119
+ tmpb = __lsx_vpickev_b(tmp2, tmp0);
2120
+ tmpg = __lsx_vpickod_b(tmp3, tmp1);
2121
+ tmp0 = __lsx_vpickod_b(nex1, nex0);
2122
+ tmp1 = __lsx_vpickev_b(nex1, nex0);
2123
+ tmp2 = __lsx_vpickod_b(nex3, nex2);
2124
+ tmp3 = __lsx_vpickev_b(nex3, nex2);
2125
+ nexr = __lsx_vpickod_b(tmp2, tmp0);
2126
+ nexb = __lsx_vpickev_b(tmp2, tmp0);
2127
+ nexg = __lsx_vpickod_b(tmp3, tmp1);
2128
+ RGBTOUV(tmpb, tmpg, tmpr, nexb, nexg, nexr, dst0);
2129
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
2130
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
2131
+ dst_u += 8;
2132
+ dst_v += 8;
2133
+ src_rgba += 64;
2134
+ next_rgba += 64;
2135
+ }
2136
+ }
2137
+
2138
+ void ARGBToUVJRow_LSX(const uint8_t* src_argb,
2139
+ int src_stride_argb,
2140
+ uint8_t* dst_u,
2141
+ uint8_t* dst_v,
2142
+ int width) {
2143
+ int x;
2144
+ const uint8_t* next_argb = src_argb + src_stride_argb;
2145
+ int len = width / 16;
2146
+ __m128i src0, src1, src2, src3;
2147
+ __m128i nex0, nex1, nex2, nex3;
2148
+ __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
2149
+ __m128i reg0, reg1, dst0;
2150
+ __m128i tmpb, tmpg, tmpr, nexb, nexg, nexr;
2151
+ __m128i const_128 = __lsx_vldi(0x480);
2152
+ __m128i const_85 = __lsx_vldi(0x455);
2153
+ __m128i const_43 = __lsx_vldi(0x42B);
2154
+ __m128i const_107 = __lsx_vldi(0x46B);
2155
+ __m128i const_21 = __lsx_vldi(0x415);
2156
+ __m128i const_8000 = (__m128i)v2u64{0x8000800080008000, 0x8000800080008000};
2157
+
2158
+ for (x = 0; x < len; x++) {
2159
+ DUP4_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src_argb, 32, src_argb, 48,
2160
+ src0, src1, src2, src3);
2161
+ DUP4_ARG2(__lsx_vld, next_argb, 0, next_argb, 16, next_argb, 32, next_argb,
2162
+ 48, nex0, nex1, nex2, nex3);
2163
+ tmp0 = __lsx_vpickev_b(src1, src0);
2164
+ tmp1 = __lsx_vpickod_b(src1, src0);
2165
+ tmp2 = __lsx_vpickev_b(src3, src2);
2166
+ tmp3 = __lsx_vpickod_b(src3, src2);
2167
+ tmpr = __lsx_vpickod_b(tmp2, tmp0);
2168
+ tmpb = __lsx_vpickev_b(tmp2, tmp0);
2169
+ tmpg = __lsx_vpickev_b(tmp3, tmp1);
2170
+ tmp0 = __lsx_vpickev_b(nex1, nex0);
2171
+ tmp1 = __lsx_vpickod_b(nex1, nex0);
2172
+ tmp2 = __lsx_vpickev_b(nex3, nex2);
2173
+ tmp3 = __lsx_vpickod_b(nex3, nex2);
2174
+ nexr = __lsx_vpickod_b(tmp2, tmp0);
2175
+ nexb = __lsx_vpickev_b(tmp2, tmp0);
2176
+ nexg = __lsx_vpickev_b(tmp3, tmp1);
2177
+ tmp0 = __lsx_vaddwev_h_bu(tmpb, nexb);
2178
+ tmp1 = __lsx_vaddwod_h_bu(tmpb, nexb);
2179
+ tmp2 = __lsx_vaddwev_h_bu(tmpg, nexg);
2180
+ tmp3 = __lsx_vaddwod_h_bu(tmpg, nexg);
2181
+ reg0 = __lsx_vaddwev_h_bu(tmpr, nexr);
2182
+ reg1 = __lsx_vaddwod_h_bu(tmpr, nexr);
2183
+ tmp4 = __lsx_vaddwev_w_hu(tmp0, tmp1);
2184
+ tmp5 = __lsx_vaddwod_w_hu(tmp0, tmp1);
2185
+ tmp0 = __lsx_vilvl_w(tmp5, tmp4);
2186
+ tmp1 = __lsx_vilvh_w(tmp5, tmp4);
2187
+ tmpb = __lsx_vssrarni_hu_w(tmp1, tmp0, 2);
2188
+ tmp4 = __lsx_vaddwev_w_hu(tmp2, tmp3);
2189
+ tmp5 = __lsx_vaddwod_w_hu(tmp2, tmp3);
2190
+ tmp2 = __lsx_vilvl_w(tmp5, tmp4);
2191
+ tmp3 = __lsx_vilvh_w(tmp5, tmp4);
2192
+ tmpg = __lsx_vssrarni_hu_w(tmp3, tmp2, 2);
2193
+ tmp4 = __lsx_vaddwev_w_hu(reg0, reg1);
2194
+ tmp5 = __lsx_vaddwod_w_hu(reg0, reg1);
2195
+ tmp0 = __lsx_vilvl_w(tmp5, tmp4);
2196
+ tmp1 = __lsx_vilvh_w(tmp5, tmp4);
2197
+ tmpr = __lsx_vssrarni_hu_w(tmp1, tmp0, 2);
2198
+ reg0 = __lsx_vmadd_h(const_8000, const_128, tmpb);
2199
+ reg1 = __lsx_vmadd_h(const_8000, const_128, tmpr);
2200
+ reg0 = __lsx_vmsub_h(reg0, const_85, tmpg);
2201
+ reg1 = __lsx_vmsub_h(reg1, const_107, tmpg);
2202
+ reg0 = __lsx_vmsub_h(reg0, const_43, tmpr);
2203
+ reg1 = __lsx_vmsub_h(reg1, const_21, tmpb);
2204
+ dst0 = __lsx_vpickod_b(reg1, reg0);
2205
+ __lsx_vstelm_d(dst0, dst_u, 0, 0);
2206
+ __lsx_vstelm_d(dst0, dst_v, 0, 1);
2207
+ dst_u += 8;
2208
+ dst_v += 8;
2209
+ src_argb += 64;
2210
+ next_argb += 64;
2211
+ }
2212
+ }
2213
+
2214
+ void I444ToARGBRow_LSX(const uint8_t* src_y,
2215
+ const uint8_t* src_u,
2216
+ const uint8_t* src_v,
2217
+ uint8_t* dst_argb,
2218
+ const struct YuvConstants* yuvconstants,
2219
+ int width) {
2220
+ int x;
2221
+ int len = width / 16;
2222
+ __m128i vec_y, vec_u, vec_v, out_b, out_g, out_r;
2223
+ __m128i vec_yl, vec_yh, vec_ul, vec_vl, vec_uh, vec_vh;
2224
+ __m128i vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb, vec_ugvg;
2225
+ __m128i const_80 = __lsx_vldi(0x480);
2226
+ __m128i alpha = __lsx_vldi(0xFF);
2227
+ __m128i zero = __lsx_vldi(0);
2228
+
2229
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
2230
+ vec_ugvg = __lsx_vilvl_h(vec_ug, vec_vg);
2231
+
2232
+ for (x = 0; x < len; x++) {
2233
+ vec_y = __lsx_vld(src_y, 0);
2234
+ vec_u = __lsx_vld(src_u, 0);
2235
+ vec_v = __lsx_vld(src_v, 0);
2236
+ vec_yl = __lsx_vilvl_b(vec_y, vec_y);
2237
+ vec_ul = __lsx_vilvl_b(zero, vec_u);
2238
+ vec_vl = __lsx_vilvl_b(zero, vec_v);
2239
+ I444TORGB(vec_yl, vec_ul, vec_vl, vec_ub, vec_vr, vec_ugvg, vec_yg, vec_yb,
2240
+ out_b, out_g, out_r);
2241
+ STOREARGB(alpha, out_r, out_g, out_b, dst_argb);
2242
+ vec_yh = __lsx_vilvh_b(vec_y, vec_y);
2243
+ vec_uh = __lsx_vilvh_b(zero, vec_u);
2244
+ vec_vh = __lsx_vilvh_b(zero, vec_v);
2245
+ I444TORGB(vec_yh, vec_uh, vec_vh, vec_ub, vec_vr, vec_ugvg, vec_yg, vec_yb,
2246
+ out_b, out_g, out_r);
2247
+ STOREARGB(alpha, out_r, out_g, out_b, dst_argb);
2248
+ src_y += 16;
2249
+ src_u += 16;
2250
+ src_v += 16;
2251
+ }
2252
+ }
2253
+
2254
+ void I400ToARGBRow_LSX(const uint8_t* src_y,
2255
+ uint8_t* dst_argb,
2256
+ const struct YuvConstants* yuvconstants,
2257
+ int width) {
2258
+ int x;
2259
+ int len = width / 16;
2260
+ __m128i vec_y, vec_yl, vec_yh, out0;
2261
+ __m128i y_ev, y_od, dst0, dst1, dst2, dst3;
2262
+ __m128i temp0, temp1;
2263
+ __m128i alpha = __lsx_vldi(0xFF);
2264
+ __m128i vec_yg = __lsx_vreplgr2vr_h(yuvconstants->kYToRgb[0]);
2265
+ __m128i vec_yb = __lsx_vreplgr2vr_w(yuvconstants->kYBiasToRgb[0]);
2266
+
2267
+ for (x = 0; x < len; x++) {
2268
+ vec_y = __lsx_vld(src_y, 0);
2269
+ vec_yl = __lsx_vilvl_b(vec_y, vec_y);
2270
+ y_ev = __lsx_vmulwev_w_hu_h(vec_yl, vec_yg);
2271
+ y_od = __lsx_vmulwod_w_hu_h(vec_yl, vec_yg);
2272
+ y_ev = __lsx_vsrai_w(y_ev, 16);
2273
+ y_od = __lsx_vsrai_w(y_od, 16);
2274
+ y_ev = __lsx_vadd_w(y_ev, vec_yb);
2275
+ y_od = __lsx_vadd_w(y_od, vec_yb);
2276
+ y_ev = __lsx_vsrai_w(y_ev, 6);
2277
+ y_od = __lsx_vsrai_w(y_od, 6);
2278
+ y_ev = __lsx_vclip255_w(y_ev);
2279
+ y_od = __lsx_vclip255_w(y_od);
2280
+ out0 = __lsx_vpackev_h(y_od, y_ev);
2281
+ temp0 = __lsx_vpackev_b(out0, out0);
2282
+ temp1 = __lsx_vpackev_b(alpha, out0);
2283
+ dst0 = __lsx_vilvl_h(temp1, temp0);
2284
+ dst1 = __lsx_vilvh_h(temp1, temp0);
2285
+ vec_yh = __lsx_vilvh_b(vec_y, vec_y);
2286
+ y_ev = __lsx_vmulwev_w_hu_h(vec_yh, vec_yg);
2287
+ y_od = __lsx_vmulwod_w_hu_h(vec_yh, vec_yg);
2288
+ y_ev = __lsx_vsrai_w(y_ev, 16);
2289
+ y_od = __lsx_vsrai_w(y_od, 16);
2290
+ y_ev = __lsx_vadd_w(y_ev, vec_yb);
2291
+ y_od = __lsx_vadd_w(y_od, vec_yb);
2292
+ y_ev = __lsx_vsrai_w(y_ev, 6);
2293
+ y_od = __lsx_vsrai_w(y_od, 6);
2294
+ y_ev = __lsx_vclip255_w(y_ev);
2295
+ y_od = __lsx_vclip255_w(y_od);
2296
+ out0 = __lsx_vpackev_h(y_od, y_ev);
2297
+ temp0 = __lsx_vpackev_b(out0, out0);
2298
+ temp1 = __lsx_vpackev_b(alpha, out0);
2299
+ dst2 = __lsx_vilvl_h(temp1, temp0);
2300
+ dst3 = __lsx_vilvh_h(temp1, temp0);
2301
+ __lsx_vst(dst0, dst_argb, 0);
2302
+ __lsx_vst(dst1, dst_argb, 16);
2303
+ __lsx_vst(dst2, dst_argb, 32);
2304
+ __lsx_vst(dst3, dst_argb, 48);
2305
+ dst_argb += 64;
2306
+ src_y += 16;
2307
+ }
2308
+ }
2309
+
2310
+ void J400ToARGBRow_LSX(const uint8_t* src_y, uint8_t* dst_argb, int width) {
2311
+ int x;
2312
+ int len = width / 16;
2313
+ __m128i vec_y, dst0, dst1, dst2, dst3;
2314
+ __m128i tmp0, tmp1, tmp2, tmp3;
2315
+ __m128i alpha = __lsx_vldi(0xFF);
2316
+
2317
+ for (x = 0; x < len; x++) {
2318
+ vec_y = __lsx_vld(src_y, 0);
2319
+ tmp0 = __lsx_vilvl_b(vec_y, vec_y);
2320
+ tmp1 = __lsx_vilvh_b(vec_y, vec_y);
2321
+ tmp2 = __lsx_vilvl_b(alpha, vec_y);
2322
+ tmp3 = __lsx_vilvh_b(alpha, vec_y);
2323
+ dst0 = __lsx_vilvl_h(tmp2, tmp0);
2324
+ dst1 = __lsx_vilvh_h(tmp2, tmp0);
2325
+ dst2 = __lsx_vilvl_h(tmp3, tmp1);
2326
+ dst3 = __lsx_vilvh_h(tmp3, tmp1);
2327
+ __lsx_vst(dst0, dst_argb, 0);
2328
+ __lsx_vst(dst1, dst_argb, 16);
2329
+ __lsx_vst(dst2, dst_argb, 32);
2330
+ __lsx_vst(dst3, dst_argb, 48);
2331
+ dst_argb += 64;
2332
+ src_y += 16;
2333
+ }
2334
+ }
2335
+
2336
+ void YUY2ToARGBRow_LSX(const uint8_t* src_yuy2,
2337
+ uint8_t* dst_argb,
2338
+ const struct YuvConstants* yuvconstants,
2339
+ int width) {
2340
+ int x;
2341
+ int len = width / 8;
2342
+ __m128i src0, vec_y, vec_vu;
2343
+ __m128i vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb;
2344
+ __m128i vec_vrub, vec_vgug;
2345
+ __m128i out_b, out_g, out_r;
2346
+ __m128i const_80 = __lsx_vldi(0x480);
2347
+ __m128i zero = __lsx_vldi(0);
2348
+ __m128i alpha = __lsx_vldi(0xFF);
2349
+
2350
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
2351
+ vec_vrub = __lsx_vilvl_h(vec_vr, vec_ub);
2352
+ vec_vgug = __lsx_vilvl_h(vec_vg, vec_ug);
2353
+
2354
+ for (x = 0; x < len; x++) {
2355
+ src0 = __lsx_vld(src_yuy2, 0);
2356
+ vec_y = __lsx_vpickev_b(src0, src0);
2357
+ vec_vu = __lsx_vpickod_b(src0, src0);
2358
+ YUVTORGB(vec_y, vec_vu, vec_vrub, vec_vgug, vec_yg, vec_yb, out_b, out_g,
2359
+ out_r);
2360
+ STOREARGB(alpha, out_r, out_g, out_b, dst_argb);
2361
+ src_yuy2 += 16;
2362
+ }
2363
+ }
2364
+
2365
+ void UYVYToARGBRow_LSX(const uint8_t* src_uyvy,
2366
+ uint8_t* dst_argb,
2367
+ const struct YuvConstants* yuvconstants,
2368
+ int width) {
2369
+ int x;
2370
+ int len = width / 8;
2371
+ __m128i src0, vec_y, vec_vu;
2372
+ __m128i vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb;
2373
+ __m128i vec_vrub, vec_vgug;
2374
+ __m128i out_b, out_g, out_r;
2375
+ __m128i const_80 = __lsx_vldi(0x480);
2376
+ __m128i zero = __lsx_vldi(0);
2377
+ __m128i alpha = __lsx_vldi(0xFF);
2378
+
2379
+ YUVTORGB_SETUP(yuvconstants, vec_vr, vec_ub, vec_vg, vec_ug, vec_yg, vec_yb);
2380
+ vec_vrub = __lsx_vilvl_h(vec_vr, vec_ub);
2381
+ vec_vgug = __lsx_vilvl_h(vec_vg, vec_ug);
2382
+
2383
+ for (x = 0; x < len; x++) {
2384
+ src0 = __lsx_vld(src_uyvy, 0);
2385
+ vec_y = __lsx_vpickod_b(src0, src0);
2386
+ vec_vu = __lsx_vpickev_b(src0, src0);
2387
+ YUVTORGB(vec_y, vec_vu, vec_vrub, vec_vgug, vec_yg, vec_yb, out_b, out_g,
2388
+ out_r);
2389
+ STOREARGB(alpha, out_r, out_g, out_b, dst_argb);
2390
+ src_uyvy += 16;
2391
+ }
2392
+ }
2393
+
2394
+ void InterpolateRow_LSX(uint8_t* dst_ptr,
2395
+ const uint8_t* src_ptr,
2396
+ ptrdiff_t src_stride,
2397
+ int width,
2398
+ int32_t source_y_fraction) {
2399
+ int x;
2400
+ int y1_fraction = source_y_fraction;
2401
+ int y0_fraction = 256 - y1_fraction;
2402
+ const uint8_t* nex_ptr = src_ptr + src_stride;
2403
+ uint16_t y_fractions;
2404
+ int len = width / 32;
2405
+ __m128i src0, src1, nex0, nex1;
2406
+ __m128i dst0, dst1, y_frac;
2407
+ __m128i tmp0, tmp1, tmp2, tmp3;
2408
+ __m128i const_128 = __lsx_vldi(0x480);
2409
+
2410
+ if (y1_fraction == 0) {
2411
+ for (x = 0; x < len; x++) {
2412
+ DUP2_ARG2(__lsx_vld, src_ptr, 0, src_ptr, 16, src0, src1);
2413
+ __lsx_vst(src0, dst_ptr, 0);
2414
+ __lsx_vst(src1, dst_ptr, 16);
2415
+ src_ptr += 32;
2416
+ dst_ptr += 32;
2417
+ }
2418
+ return;
2419
+ }
2420
+
2421
+ if (y1_fraction == 128) {
2422
+ for (x = 0; x < len; x++) {
2423
+ DUP2_ARG2(__lsx_vld, src_ptr, 0, src_ptr, 16, src0, src1);
2424
+ DUP2_ARG2(__lsx_vld, nex_ptr, 0, nex_ptr, 16, nex0, nex1);
2425
+ dst0 = __lsx_vavgr_bu(src0, nex0);
2426
+ dst1 = __lsx_vavgr_bu(src1, nex1);
2427
+ __lsx_vst(dst0, dst_ptr, 0);
2428
+ __lsx_vst(dst1, dst_ptr, 16);
2429
+ src_ptr += 32;
2430
+ nex_ptr += 32;
2431
+ dst_ptr += 32;
2432
+ }
2433
+ return;
2434
+ }
2435
+
2436
+ y_fractions = (uint16_t)(y0_fraction + (y1_fraction << 8));
2437
+ y_frac = __lsx_vreplgr2vr_h(y_fractions);
2438
+
2439
+ for (x = 0; x < len; x++) {
2440
+ DUP2_ARG2(__lsx_vld, src_ptr, 0, src_ptr, 16, src0, src1);
2441
+ DUP2_ARG2(__lsx_vld, nex_ptr, 0, nex_ptr, 16, nex0, nex1);
2442
+ tmp0 = __lsx_vilvl_b(nex0, src0);
2443
+ tmp1 = __lsx_vilvh_b(nex0, src0);
2444
+ tmp2 = __lsx_vilvl_b(nex1, src1);
2445
+ tmp3 = __lsx_vilvh_b(nex1, src1);
2446
+ tmp0 = __lsx_vdp2add_h_bu(const_128, tmp0, y_frac);
2447
+ tmp1 = __lsx_vdp2add_h_bu(const_128, tmp1, y_frac);
2448
+ tmp2 = __lsx_vdp2add_h_bu(const_128, tmp2, y_frac);
2449
+ tmp3 = __lsx_vdp2add_h_bu(const_128, tmp3, y_frac);
2450
+ dst0 = __lsx_vsrlni_b_h(tmp1, tmp0, 8);
2451
+ dst1 = __lsx_vsrlni_b_h(tmp3, tmp2, 8);
2452
+ __lsx_vst(dst0, dst_ptr, 0);
2453
+ __lsx_vst(dst1, dst_ptr, 16);
2454
+ src_ptr += 32;
2455
+ nex_ptr += 32;
2456
+ dst_ptr += 32;
2457
+ }
2458
+ }
2459
+
2460
+ void ARGBSetRow_LSX(uint8_t* dst_argb, uint32_t v32, int width) {
2461
+ int x;
2462
+ int len = width / 4;
2463
+ __m128i dst0 = __lsx_vreplgr2vr_w(v32);
2464
+
2465
+ for (x = 0; x < len; x++) {
2466
+ __lsx_vst(dst0, dst_argb, 0);
2467
+ dst_argb += 16;
2468
+ }
2469
+ }
2470
+
2471
+ void RAWToRGB24Row_LSX(const uint8_t* src_raw, uint8_t* dst_rgb24, int width) {
2472
+ int x;
2473
+ int len = width / 16;
2474
+ __m128i src0, src1, src2;
2475
+ __m128i dst0, dst1, dst2;
2476
+ __m128i shuf0 = {0x0708030405000102, 0x110C0D0E090A0B06};
2477
+ __m128i shuf1 = {0x1516171213140F10, 0x1F1E1B1C1D18191A};
2478
+ __m128i shuf2 = {0x090405060102031E, 0x0D0E0F0A0B0C0708};
2479
+
2480
+ for (x = 0; x < len; x++) {
2481
+ DUP2_ARG2(__lsx_vld, src_raw, 0, src_raw, 16, src0, src1);
2482
+ src2 = __lsx_vld(src_raw, 32);
2483
+ DUP2_ARG3(__lsx_vshuf_b, src1, src0, shuf0, src1, src0, shuf1, dst0, dst1);
2484
+ dst2 = __lsx_vshuf_b(src1, src2, shuf2);
2485
+ dst1 = __lsx_vinsgr2vr_b(dst1, src_raw[32], 0x0E);
2486
+ __lsx_vst(dst0, dst_rgb24, 0);
2487
+ __lsx_vst(dst1, dst_rgb24, 16);
2488
+ __lsx_vst(dst2, dst_rgb24, 32);
2489
+ dst_rgb24 += 48;
2490
+ src_raw += 48;
2491
+ }
2492
+ }
2493
+
2494
+ void MergeUVRow_LSX(const uint8_t* src_u,
2495
+ const uint8_t* src_v,
2496
+ uint8_t* dst_uv,
2497
+ int width) {
2498
+ int x;
2499
+ int len = width / 16;
2500
+ __m128i src0, src1, dst0, dst1;
2501
+
2502
+ for (x = 0; x < len; x++) {
2503
+ DUP2_ARG2(__lsx_vld, src_u, 0, src_v, 0, src0, src1);
2504
+ dst0 = __lsx_vilvl_b(src1, src0);
2505
+ dst1 = __lsx_vilvh_b(src1, src0);
2506
+ __lsx_vst(dst0, dst_uv, 0);
2507
+ __lsx_vst(dst1, dst_uv, 16);
2508
+ src_u += 16;
2509
+ src_v += 16;
2510
+ dst_uv += 32;
2511
+ }
2512
+ }
2513
+
2514
+ void ARGBExtractAlphaRow_LSX(const uint8_t* src_argb,
2515
+ uint8_t* dst_a,
2516
+ int width) {
2517
+ int x;
2518
+ int len = width / 16;
2519
+ __m128i src0, src1, src2, src3, tmp0, tmp1, dst0;
2520
+
2521
+ for (x = 0; x < len; x++) {
2522
+ DUP4_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src_argb, 32, src_argb, 48,
2523
+ src0, src1, src2, src3);
2524
+ tmp0 = __lsx_vpickod_b(src1, src0);
2525
+ tmp1 = __lsx_vpickod_b(src3, src2);
2526
+ dst0 = __lsx_vpickod_b(tmp1, tmp0);
2527
+ __lsx_vst(dst0, dst_a, 0);
2528
+ src_argb += 64;
2529
+ dst_a += 16;
2530
+ }
2531
+ }
2532
+
2533
+ void ARGBBlendRow_LSX(const uint8_t* src_argb,
2534
+ const uint8_t* src_argb1,
2535
+ uint8_t* dst_argb,
2536
+ int width) {
2537
+ int x;
2538
+ int len = width / 8;
2539
+ __m128i src0, src1, src2, src3;
2540
+ __m128i tmp0, tmp1, dst0, dst1;
2541
+ __m128i reg0, reg1, reg2, reg3;
2542
+ __m128i a0, a1, a2, a3;
2543
+ __m128i const_256 = __lsx_vldi(0x500);
2544
+ __m128i zero = __lsx_vldi(0);
2545
+ __m128i alpha = __lsx_vldi(0xFF);
2546
+ __m128i control = (__m128i)v2u64{0xFF000000FF000000, 0xFF000000FF000000};
2547
+
2548
+ for (x = 0; x < len; x++) {
2549
+ DUP4_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src_argb1, 0, src_argb1, 16,
2550
+ src0, src1, src2, src3);
2551
+ tmp0 = __lsx_vshuf4i_b(src0, 0xFF);
2552
+ tmp1 = __lsx_vshuf4i_b(src1, 0xFF);
2553
+ a0 = __lsx_vilvl_b(zero, tmp0);
2554
+ a1 = __lsx_vilvh_b(zero, tmp0);
2555
+ a2 = __lsx_vilvl_b(zero, tmp1);
2556
+ a3 = __lsx_vilvh_b(zero, tmp1);
2557
+ reg0 = __lsx_vilvl_b(zero, src2);
2558
+ reg1 = __lsx_vilvh_b(zero, src2);
2559
+ reg2 = __lsx_vilvl_b(zero, src3);
2560
+ reg3 = __lsx_vilvh_b(zero, src3);
2561
+ DUP4_ARG2(__lsx_vsub_h, const_256, a0, const_256, a1, const_256, a2,
2562
+ const_256, a3, a0, a1, a2, a3);
2563
+ DUP4_ARG2(__lsx_vmul_h, a0, reg0, a1, reg1, a2, reg2, a3, reg3, reg0, reg1,
2564
+ reg2, reg3);
2565
+ DUP2_ARG3(__lsx_vsrani_b_h, reg1, reg0, 8, reg3, reg2, 8, dst0, dst1);
2566
+ dst0 = __lsx_vsadd_bu(dst0, src0);
2567
+ dst1 = __lsx_vsadd_bu(dst1, src1);
2568
+ dst0 = __lsx_vbitsel_v(dst0, alpha, control);
2569
+ dst1 = __lsx_vbitsel_v(dst1, alpha, control);
2570
+ __lsx_vst(dst0, dst_argb, 0);
2571
+ __lsx_vst(dst1, dst_argb, 16);
2572
+ src_argb += 32;
2573
+ src_argb1 += 32;
2574
+ dst_argb += 32;
2575
+ }
2576
+ }
2577
+
2578
+ void ARGBQuantizeRow_LSX(uint8_t* dst_argb,
2579
+ int scale,
2580
+ int interval_size,
2581
+ int interval_offset,
2582
+ int width) {
2583
+ int x;
2584
+ int len = width / 16;
2585
+ __m128i src0, src1, src2, src3, dst0, dst1, dst2, dst3;
2586
+ __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
2587
+ __m128i reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7;
2588
+ __m128i vec_size = __lsx_vreplgr2vr_b(interval_size);
2589
+ __m128i vec_offset = __lsx_vreplgr2vr_b(interval_offset);
2590
+ __m128i vec_scale = __lsx_vreplgr2vr_w(scale);
2591
+ __m128i zero = __lsx_vldi(0);
2592
+ __m128i control = (__m128i)v2u64{0xFF000000FF000000, 0xFF000000FF000000};
2593
+
2594
+ for (x = 0; x < len; x++) {
2595
+ DUP4_ARG2(__lsx_vld, dst_argb, 0, dst_argb, 16, dst_argb, 32, dst_argb, 48,
2596
+ src0, src1, src2, src3);
2597
+ reg0 = __lsx_vilvl_b(zero, src0);
2598
+ reg1 = __lsx_vilvh_b(zero, src0);
2599
+ reg2 = __lsx_vilvl_b(zero, src1);
2600
+ reg3 = __lsx_vilvh_b(zero, src1);
2601
+ reg4 = __lsx_vilvl_b(zero, src2);
2602
+ reg5 = __lsx_vilvh_b(zero, src2);
2603
+ reg6 = __lsx_vilvl_b(zero, src3);
2604
+ reg7 = __lsx_vilvh_b(zero, src3);
2605
+ tmp0 = __lsx_vilvl_h(zero, reg0);
2606
+ tmp1 = __lsx_vilvh_h(zero, reg0);
2607
+ tmp2 = __lsx_vilvl_h(zero, reg1);
2608
+ tmp3 = __lsx_vilvh_h(zero, reg1);
2609
+ tmp4 = __lsx_vilvl_h(zero, reg2);
2610
+ tmp5 = __lsx_vilvh_h(zero, reg2);
2611
+ tmp6 = __lsx_vilvl_h(zero, reg3);
2612
+ tmp7 = __lsx_vilvh_h(zero, reg3);
2613
+ DUP4_ARG2(__lsx_vmul_w, tmp0, vec_scale, tmp1, vec_scale, tmp2, vec_scale,
2614
+ tmp3, vec_scale, tmp0, tmp1, tmp2, tmp3);
2615
+ DUP4_ARG2(__lsx_vmul_w, tmp4, vec_scale, tmp5, vec_scale, tmp6, vec_scale,
2616
+ tmp7, vec_scale, tmp4, tmp5, tmp6, tmp7);
2617
+ DUP4_ARG3(__lsx_vsrani_h_w, tmp1, tmp0, 16, tmp3, tmp2, 16, tmp5, tmp4, 16,
2618
+ tmp7, tmp6, 16, reg0, reg1, reg2, reg3);
2619
+ dst0 = __lsx_vpickev_b(reg1, reg0);
2620
+ dst1 = __lsx_vpickev_b(reg3, reg2);
2621
+ tmp0 = __lsx_vilvl_h(zero, reg4);
2622
+ tmp1 = __lsx_vilvh_h(zero, reg4);
2623
+ tmp2 = __lsx_vilvl_h(zero, reg5);
2624
+ tmp3 = __lsx_vilvh_h(zero, reg5);
2625
+ tmp4 = __lsx_vilvl_h(zero, reg6);
2626
+ tmp5 = __lsx_vilvh_h(zero, reg6);
2627
+ tmp6 = __lsx_vilvl_h(zero, reg7);
2628
+ tmp7 = __lsx_vilvh_h(zero, reg7);
2629
+ DUP4_ARG2(__lsx_vmul_w, tmp0, vec_scale, tmp1, vec_scale, tmp2, vec_scale,
2630
+ tmp3, vec_scale, tmp0, tmp1, tmp2, tmp3);
2631
+ DUP4_ARG2(__lsx_vmul_w, tmp4, vec_scale, tmp5, vec_scale, tmp6, vec_scale,
2632
+ tmp7, vec_scale, tmp4, tmp5, tmp6, tmp7);
2633
+ DUP4_ARG3(__lsx_vsrani_h_w, tmp1, tmp0, 16, tmp3, tmp2, 16, tmp5, tmp4, 16,
2634
+ tmp7, tmp6, 16, reg0, reg1, reg2, reg3);
2635
+ dst2 = __lsx_vpickev_b(reg1, reg0);
2636
+ dst3 = __lsx_vpickev_b(reg3, reg2);
2637
+ DUP4_ARG2(__lsx_vmul_b, dst0, vec_size, dst1, vec_size, dst2, vec_size,
2638
+ dst3, vec_size, dst0, dst1, dst2, dst3);
2639
+ DUP4_ARG2(__lsx_vadd_b, dst0, vec_offset, dst1, vec_offset, dst2,
2640
+ vec_offset, dst3, vec_offset, dst0, dst1, dst2, dst3);
2641
+ DUP4_ARG3(__lsx_vbitsel_v, dst0, src0, control, dst1, src1, control, dst2,
2642
+ src2, control, dst3, src3, control, dst0, dst1, dst2, dst3);
2643
+ __lsx_vst(dst0, dst_argb, 0);
2644
+ __lsx_vst(dst1, dst_argb, 16);
2645
+ __lsx_vst(dst2, dst_argb, 32);
2646
+ __lsx_vst(dst3, dst_argb, 48);
2647
+ dst_argb += 64;
2648
+ }
2649
+ }
2650
+
2651
+ void ARGBColorMatrixRow_LSX(const uint8_t* src_argb,
2652
+ uint8_t* dst_argb,
2653
+ const int8_t* matrix_argb,
2654
+ int width) {
2655
+ int x;
2656
+ int len = width / 8;
2657
+ __m128i src0, src1, tmp0, tmp1, dst0, dst1;
2658
+ __m128i tmp_b, tmp_g, tmp_r, tmp_a;
2659
+ __m128i reg_b, reg_g, reg_r, reg_a;
2660
+ __m128i matrix_b = __lsx_vldrepl_w(matrix_argb, 0);
2661
+ __m128i matrix_g = __lsx_vldrepl_w(matrix_argb, 4);
2662
+ __m128i matrix_r = __lsx_vldrepl_w(matrix_argb, 8);
2663
+ __m128i matrix_a = __lsx_vldrepl_w(matrix_argb, 12);
2664
+
2665
+ for (x = 0; x < len; x++) {
2666
+ DUP2_ARG2(__lsx_vld, src_argb, 0, src_argb, 16, src0, src1);
2667
+ DUP4_ARG2(__lsx_vdp2_h_bu_b, src0, matrix_b, src0, matrix_g, src0, matrix_r,
2668
+ src0, matrix_a, tmp_b, tmp_g, tmp_r, tmp_a);
2669
+ DUP4_ARG2(__lsx_vdp2_h_bu_b, src1, matrix_b, src1, matrix_g, src1, matrix_r,
2670
+ src1, matrix_a, reg_b, reg_g, reg_r, reg_a);
2671
+ DUP4_ARG2(__lsx_vhaddw_w_h, tmp_b, tmp_b, tmp_g, tmp_g, tmp_r, tmp_r, tmp_a,
2672
+ tmp_a, tmp_b, tmp_g, tmp_r, tmp_a);
2673
+ DUP4_ARG2(__lsx_vhaddw_w_h, reg_b, reg_b, reg_g, reg_g, reg_r, reg_r, reg_a,
2674
+ reg_a, reg_b, reg_g, reg_r, reg_a);
2675
+ DUP4_ARG2(__lsx_vsrai_w, tmp_b, 6, tmp_g, 6, tmp_r, 6, tmp_a, 6, tmp_b,
2676
+ tmp_g, tmp_r, tmp_a);
2677
+ DUP4_ARG2(__lsx_vsrai_w, reg_b, 6, reg_g, 6, reg_r, 6, reg_a, 6, reg_b,
2678
+ reg_g, reg_r, reg_a);
2679
+ DUP4_ARG1(__lsx_vclip255_w, tmp_b, tmp_g, tmp_r, tmp_a, tmp_b, tmp_g, tmp_r,
2680
+ tmp_a)
2681
+ DUP4_ARG1(__lsx_vclip255_w, reg_b, reg_g, reg_r, reg_a, reg_b, reg_g, reg_r,
2682
+ reg_a)
2683
+ DUP4_ARG2(__lsx_vpickev_h, reg_b, tmp_b, reg_g, tmp_g, reg_r, tmp_r, reg_a,
2684
+ tmp_a, tmp_b, tmp_g, tmp_r, tmp_a);
2685
+ tmp0 = __lsx_vpackev_b(tmp_g, tmp_b);
2686
+ tmp1 = __lsx_vpackev_b(tmp_a, tmp_r);
2687
+ dst0 = __lsx_vilvl_h(tmp1, tmp0);
2688
+ dst1 = __lsx_vilvh_h(tmp1, tmp0);
2689
+ __lsx_vst(dst0, dst_argb, 0);
2690
+ __lsx_vst(dst1, dst_argb, 16);
2691
+ src_argb += 32;
2692
+ dst_argb += 32;
2693
+ }
2694
+ }
2695
+
2696
+ void SplitUVRow_LSX(const uint8_t* src_uv,
2697
+ uint8_t* dst_u,
2698
+ uint8_t* dst_v,
2699
+ int width) {
2700
+ int x;
2701
+ int len = width / 32;
2702
+ __m128i src0, src1, src2, src3;
2703
+ __m128i dst0, dst1, dst2, dst3;
2704
+
2705
+ for (x = 0; x < len; x++) {
2706
+ DUP4_ARG2(__lsx_vld, src_uv, 0, src_uv, 16, src_uv, 32, src_uv, 48, src0,
2707
+ src1, src2, src3);
2708
+ DUP2_ARG2(__lsx_vpickev_b, src1, src0, src3, src2, dst0, dst1);
2709
+ DUP2_ARG2(__lsx_vpickod_b, src1, src0, src3, src2, dst2, dst3);
2710
+ __lsx_vst(dst0, dst_u, 0);
2711
+ __lsx_vst(dst1, dst_u, 16);
2712
+ __lsx_vst(dst2, dst_v, 0);
2713
+ __lsx_vst(dst3, dst_v, 16);
2714
+ src_uv += 64;
2715
+ dst_u += 32;
2716
+ dst_v += 32;
2717
+ }
2718
+ }
2719
+
2720
+ void SetRow_LSX(uint8_t* dst, uint8_t v8, int width) {
2721
+ int x;
2722
+ int len = width / 16;
2723
+ __m128i dst0 = __lsx_vreplgr2vr_b(v8);
2724
+
2725
+ for (x = 0; x < len; x++) {
2726
+ __lsx_vst(dst0, dst, 0);
2727
+ dst += 16;
2728
+ }
2729
+ }
2730
+
2731
+ void MirrorSplitUVRow_LSX(const uint8_t* src_uv,
2732
+ uint8_t* dst_u,
2733
+ uint8_t* dst_v,
2734
+ int width) {
2735
+ int x;
2736
+ int len = width / 32;
2737
+ __m128i src0, src1, src2, src3;
2738
+ __m128i dst0, dst1, dst2, dst3;
2739
+ __m128i shuff0 = {0x10121416181A1C1E, 0x00020406080A0C0E};
2740
+ __m128i shuff1 = {0x11131517191B1D1F, 0x01030507090B0D0F};
2741
+
2742
+ src_uv += (width << 1);
2743
+ for (x = 0; x < len; x++) {
2744
+ src_uv -= 64;
2745
+ DUP4_ARG2(__lsx_vld, src_uv, 0, src_uv, 16, src_uv, 32, src_uv, 48, src2,
2746
+ src3, src0, src1);
2747
+ DUP4_ARG3(__lsx_vshuf_b, src1, src0, shuff1, src3, src2, shuff1, src1, src0,
2748
+ shuff0, src3, src2, shuff0, dst0, dst1, dst2, dst3);
2749
+ __lsx_vst(dst0, dst_v, 0);
2750
+ __lsx_vst(dst1, dst_v, 16);
2751
+ __lsx_vst(dst2, dst_u, 0);
2752
+ __lsx_vst(dst3, dst_u, 16);
2753
+ dst_u += 32;
2754
+ dst_v += 32;
2755
+ }
2756
+ }
2757
+
2758
+ void HalfFloatRow_LSX(const uint16_t* src,
2759
+ uint16_t* dst,
2760
+ float scale,
2761
+ int width) {
2762
+ int x;
2763
+ int len = width / 32;
2764
+ float mult = 1.9259299444e-34f * scale;
2765
+ __m128i src0, src1, src2, src3, dst0, dst1, dst2, dst3;
2766
+ __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
2767
+ __m128 reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7;
2768
+ __m128 vec_mult = (__m128)__lsx_vldrepl_w(&mult, 0);
2769
+ __m128i zero = __lsx_vldi(0);
2770
+
2771
+ for (x = 0; x < len; x++) {
2772
+ DUP4_ARG2(__lsx_vld, src, 0, src, 16, src, 32, src, 48, src0, src1, src2,
2773
+ src3);
2774
+ DUP4_ARG2(__lsx_vilvl_h, zero, src0, zero, src1, zero, src2, zero, src3,
2775
+ tmp0, tmp2, tmp4, tmp6);
2776
+ DUP4_ARG2(__lsx_vilvh_h, zero, src0, zero, src1, zero, src2, zero, src3,
2777
+ tmp1, tmp3, tmp5, tmp7);
2778
+ DUP4_ARG1(__lsx_vffint_s_wu, tmp0, tmp2, tmp4, tmp6, reg0, reg2, reg4,
2779
+ reg6);
2780
+ DUP4_ARG1(__lsx_vffint_s_wu, tmp1, tmp3, tmp5, tmp7, reg1, reg3, reg5,
2781
+ reg7);
2782
+ DUP4_ARG2(__lsx_vfmul_s, reg0, vec_mult, reg1, vec_mult, reg2, vec_mult,
2783
+ reg3, vec_mult, reg0, reg1, reg2, reg3);
2784
+ DUP4_ARG2(__lsx_vfmul_s, reg4, vec_mult, reg5, vec_mult, reg6, vec_mult,
2785
+ reg7, vec_mult, reg4, reg5, reg6, reg7);
2786
+ DUP4_ARG2(__lsx_vsrli_w, (v4u32)reg0, 13, (v4u32)reg1, 13, (v4u32)reg2, 13,
2787
+ (v4u32)reg3, 13, tmp0, tmp1, tmp2, tmp3);
2788
+ DUP4_ARG2(__lsx_vsrli_w, (v4u32)reg4, 13, (v4u32)reg5, 13, (v4u32)reg6, 13,
2789
+ (v4u32)reg7, 13, tmp4, tmp5, tmp6, tmp7);
2790
+ DUP4_ARG2(__lsx_vpickev_h, tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, tmp7, tmp6,
2791
+ dst0, dst1, dst2, dst3);
2792
+ __lsx_vst(dst0, dst, 0);
2793
+ __lsx_vst(dst1, dst, 16);
2794
+ __lsx_vst(dst2, dst, 32);
2795
+ __lsx_vst(dst3, dst, 48);
2796
+ src += 32;
2797
+ dst += 32;
2798
+ }
2799
+ }
2800
+
2801
+ #ifndef RgbConstants
2802
+ struct RgbConstants {
2803
+ uint8_t kRGBToY[4];
2804
+ uint16_t kAddY;
2805
+ uint16_t pad;
2806
+ };
2807
+ #define RgbConstants RgbConstants
2808
+
2809
+ // RGB to JPeg coefficients
2810
+ // B * 0.1140 coefficient = 29
2811
+ // G * 0.5870 coefficient = 150
2812
+ // R * 0.2990 coefficient = 77
2813
+ // Add 0.5 = 0x80
2814
+ static const struct RgbConstants kRgb24JPEGConstants = {{29, 150, 77, 0},
2815
+ 128,
2816
+ 0};
2817
+
2818
+ static const struct RgbConstants kRawJPEGConstants = {{77, 150, 29, 0}, 128, 0};
2819
+
2820
+ // RGB to BT.601 coefficients
2821
+ // B * 0.1016 coefficient = 25
2822
+ // G * 0.5078 coefficient = 129
2823
+ // R * 0.2578 coefficient = 66
2824
+ // Add 16.5 = 0x1080
2825
+
2826
+ static const struct RgbConstants kRgb24I601Constants = {{25, 129, 66, 0},
2827
+ 0x1080,
2828
+ 0};
2829
+
2830
+ static const struct RgbConstants kRawI601Constants = {{66, 129, 25, 0},
2831
+ 0x1080,
2832
+ 0};
2833
+ #endif // RgbConstants
2834
+
2835
+ // ARGB expects first 3 values to contain RGB and 4th value is ignored.
2836
+ static void ARGBToYMatrixRow_LSX(const uint8_t* src_argb,
2837
+ uint8_t* dst_y,
2838
+ int width,
2839
+ const struct RgbConstants* rgbconstants) {
2840
+ asm volatile(
2841
+ "vldrepl.b $vr0, %3, 0 \n\t" // load rgbconstants
2842
+ "vldrepl.b $vr1, %3, 1 \n\t" // load rgbconstants
2843
+ "vldrepl.b $vr2, %3, 2 \n\t" // load rgbconstants
2844
+ "vldrepl.h $vr3, %3, 4 \n\t" // load rgbconstants
2845
+ "1: \n\t"
2846
+ "vld $vr4, %0, 0 \n\t"
2847
+ "vld $vr5, %0, 16 \n\t"
2848
+ "vld $vr6, %0, 32 \n\t"
2849
+ "vld $vr7, %0, 48 \n\t" // load 16 pixels of
2850
+ // ARGB
2851
+ "vor.v $vr12, $vr3, $vr3 \n\t"
2852
+ "vor.v $vr13, $vr3, $vr3 \n\t"
2853
+ "addi.d %2, %2, -16 \n\t" // 16 processed per
2854
+ // loop.
2855
+ "vpickev.b $vr8, $vr5, $vr4 \n\t" // BR
2856
+ "vpickev.b $vr10, $vr7, $vr6 \n\t"
2857
+ "vpickod.b $vr9, $vr5, $vr4 \n\t" // GA
2858
+ "vpickod.b $vr11, $vr7, $vr6 \n\t"
2859
+ "vmaddwev.h.bu $vr12, $vr8, $vr0 \n\t" // B
2860
+ "vmaddwev.h.bu $vr13, $vr10, $vr0 \n\t"
2861
+ "vmaddwev.h.bu $vr12, $vr9, $vr1 \n\t" // G
2862
+ "vmaddwev.h.bu $vr13, $vr11, $vr1 \n\t"
2863
+ "vmaddwod.h.bu $vr12, $vr8, $vr2 \n\t" // R
2864
+ "vmaddwod.h.bu $vr13, $vr10, $vr2 \n\t"
2865
+ "addi.d %0, %0, 64 \n\t"
2866
+ "vpickod.b $vr10, $vr13, $vr12 \n\t"
2867
+ "vst $vr10, %1, 0 \n\t"
2868
+ "addi.d %1, %1, 16 \n\t"
2869
+ "bnez %2, 1b \n\t"
2870
+ : "+&r"(src_argb), // %0
2871
+ "+&r"(dst_y), // %1
2872
+ "+&r"(width) // %2
2873
+ : "r"(rgbconstants)
2874
+ : "memory");
2875
+ }
2876
+
2877
+ void ARGBToYRow_LSX(const uint8_t* src_argb, uint8_t* dst_y, int width) {
2878
+ ARGBToYMatrixRow_LSX(src_argb, dst_y, width, &kRgb24I601Constants);
2879
+ }
2880
+
2881
+ void ARGBToYJRow_LSX(const uint8_t* src_argb, uint8_t* dst_yj, int width) {
2882
+ ARGBToYMatrixRow_LSX(src_argb, dst_yj, width, &kRgb24JPEGConstants);
2883
+ }
2884
+
2885
+ void ABGRToYRow_LSX(const uint8_t* src_abgr, uint8_t* dst_y, int width) {
2886
+ ARGBToYMatrixRow_LSX(src_abgr, dst_y, width, &kRawI601Constants);
2887
+ }
2888
+
2889
+ void ABGRToYJRow_LSX(const uint8_t* src_abgr, uint8_t* dst_yj, int width) {
2890
+ ARGBToYMatrixRow_LSX(src_abgr, dst_yj, width, &kRawJPEGConstants);
2891
+ }
2892
+
2893
+ // RGBA expects first value to be A and ignored, then 3 values to contain RGB.
2894
+ // Same code as ARGB, except the LD4
2895
+ static void RGBAToYMatrixRow_LSX(const uint8_t* src_rgba,
2896
+ uint8_t* dst_y,
2897
+ int width,
2898
+ const struct RgbConstants* rgbconstants) {
2899
+ asm volatile(
2900
+ "vldrepl.b $vr0, %3, 0 \n\t" // load rgbconstants
2901
+ "vldrepl.b $vr1, %3, 1 \n\t" // load rgbconstants
2902
+ "vldrepl.b $vr2, %3, 2 \n\t" // load rgbconstants
2903
+ "vldrepl.h $vr3, %3, 4 \n\t" // load rgbconstants
2904
+ "1: \n\t"
2905
+ "vld $vr4, %0, 0 \n\t"
2906
+ "vld $vr5, %0, 16 \n\t"
2907
+ "vld $vr6, %0, 32 \n\t"
2908
+ "vld $vr7, %0, 48 \n\t" // load 16 pixels of
2909
+ // RGBA
2910
+ "vor.v $vr12, $vr3, $vr3 \n\t"
2911
+ "vor.v $vr13, $vr3, $vr3 \n\t"
2912
+ "addi.d %2, %2, -16 \n\t" // 16 processed per
2913
+ // loop.
2914
+ "vpickev.b $vr8, $vr5, $vr4 \n\t" // AG
2915
+ "vpickev.b $vr10, $vr7, $vr6 \n\t"
2916
+ "vpickod.b $vr9, $vr5, $vr4 \n\t" // BR
2917
+ "vpickod.b $vr11, $vr7, $vr6 \n\t"
2918
+ "vmaddwev.h.bu $vr12, $vr9, $vr0 \n\t" // B
2919
+ "vmaddwev.h.bu $vr13, $vr11, $vr0 \n\t"
2920
+ "vmaddwod.h.bu $vr12, $vr8, $vr1 \n\t" // G
2921
+ "vmaddwod.h.bu $vr13, $vr10, $vr1 \n\t"
2922
+ "vmaddwod.h.bu $vr12, $vr9, $vr2 \n\t" // R
2923
+ "vmaddwod.h.bu $vr13, $vr11, $vr2 \n\t"
2924
+ "addi.d %0, %0, 64 \n\t"
2925
+ "vpickod.b $vr10, $vr13, $vr12 \n\t"
2926
+ "vst $vr10, %1, 0 \n\t"
2927
+ "addi.d %1, %1, 16 \n\t"
2928
+ "bnez %2, 1b \n\t"
2929
+ : "+&r"(src_rgba), // %0
2930
+ "+&r"(dst_y), // %1
2931
+ "+&r"(width) // %2
2932
+ : "r"(rgbconstants)
2933
+ : "memory");
2934
+ }
2935
+
2936
+ void RGBAToYRow_LSX(const uint8_t* src_rgba, uint8_t* dst_y, int width) {
2937
+ RGBAToYMatrixRow_LSX(src_rgba, dst_y, width, &kRgb24I601Constants);
2938
+ }
2939
+
2940
+ void RGBAToYJRow_LSX(const uint8_t* src_rgba, uint8_t* dst_yj, int width) {
2941
+ RGBAToYMatrixRow_LSX(src_rgba, dst_yj, width, &kRgb24JPEGConstants);
2942
+ }
2943
+
2944
+ void BGRAToYRow_LSX(const uint8_t* src_bgra, uint8_t* dst_y, int width) {
2945
+ RGBAToYMatrixRow_LSX(src_bgra, dst_y, width, &kRawI601Constants);
2946
+ }
2947
+
2948
+ static void RGBToYMatrixRow_LSX(const uint8_t* src_rgba,
2949
+ uint8_t* dst_y,
2950
+ int width,
2951
+ const struct RgbConstants* rgbconstants) {
2952
+ int8_t shuff[64] = {0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18,
2953
+ 20, 21, 23, 24, 26, 27, 29, 30, 0, 1, 3, 4, 6,
2954
+ 7, 9, 10, 12, 13, 15, 1, 0, 4, 0, 7, 0, 10,
2955
+ 0, 13, 0, 16, 0, 19, 0, 22, 0, 25, 0, 28, 0,
2956
+ 31, 0, 2, 0, 5, 0, 8, 0, 11, 0, 14, 0};
2957
+ asm volatile(
2958
+ "vldrepl.b $vr0, %3, 0 \n\t" // load rgbconstants
2959
+ "vldrepl.b $vr1, %3, 1 \n\t" // load rgbconstants
2960
+ "vldrepl.b $vr2, %3, 2 \n\t" // load rgbconstants
2961
+ "vldrepl.h $vr3, %3, 4 \n\t" // load rgbconstants
2962
+ "vld $vr4, %4, 0 \n\t" // load shuff
2963
+ "vld $vr5, %4, 16 \n\t"
2964
+ "vld $vr6, %4, 32 \n\t"
2965
+ "vld $vr7, %4, 48 \n\t"
2966
+ "1: \n\t"
2967
+ "vld $vr8, %0, 0 \n\t"
2968
+ "vld $vr9, %0, 16 \n\t"
2969
+ "vld $vr10, %0, 32 \n\t" // load 16 pixels of
2970
+ // RGB
2971
+ "vor.v $vr12, $vr3, $vr3 \n\t"
2972
+ "vor.v $vr13, $vr3, $vr3 \n\t"
2973
+ "addi.d %2, %2, -16 \n\t" // 16 processed per
2974
+ // loop.
2975
+ "vshuf.b $vr14, $vr9, $vr8, $vr4 \n\t"
2976
+ "vshuf.b $vr15, $vr9, $vr10, $vr5 \n\t"
2977
+ "vshuf.b $vr16, $vr9, $vr8, $vr6 \n\t"
2978
+ "vshuf.b $vr17, $vr9, $vr10, $vr7 \n\t"
2979
+ "vmaddwev.h.bu $vr12, $vr16, $vr1 \n\t" // G
2980
+ "vmaddwev.h.bu $vr13, $vr17, $vr1 \n\t"
2981
+ "vmaddwev.h.bu $vr12, $vr14, $vr0 \n\t" // B
2982
+ "vmaddwev.h.bu $vr13, $vr15, $vr0 \n\t"
2983
+ "vmaddwod.h.bu $vr12, $vr14, $vr2 \n\t" // R
2984
+ "vmaddwod.h.bu $vr13, $vr15, $vr2 \n\t"
2985
+ "addi.d %0, %0, 48 \n\t"
2986
+ "vpickod.b $vr10, $vr13, $vr12 \n\t"
2987
+ "vst $vr10, %1, 0 \n\t"
2988
+ "addi.d %1, %1, 16 \n\t"
2989
+ "bnez %2, 1b \n\t"
2990
+ : "+&r"(src_rgba), // %0
2991
+ "+&r"(dst_y), // %1
2992
+ "+&r"(width) // %2
2993
+ : "r"(rgbconstants), // %3
2994
+ "r"(shuff) // %4
2995
+ : "memory");
2996
+ }
2997
+
2998
+ void RGB24ToYJRow_LSX(const uint8_t* src_rgb24, uint8_t* dst_yj, int width) {
2999
+ RGBToYMatrixRow_LSX(src_rgb24, dst_yj, width, &kRgb24JPEGConstants);
3000
+ }
3001
+
3002
+ void RAWToYJRow_LSX(const uint8_t* src_raw, uint8_t* dst_yj, int width) {
3003
+ RGBToYMatrixRow_LSX(src_raw, dst_yj, width, &kRawJPEGConstants);
3004
+ }
3005
+
3006
+ void RGB24ToYRow_LSX(const uint8_t* src_rgb24, uint8_t* dst_y, int width) {
3007
+ RGBToYMatrixRow_LSX(src_rgb24, dst_y, width, &kRgb24I601Constants);
3008
+ }
3009
+
3010
+ void RAWToYRow_LSX(const uint8_t* src_raw, uint8_t* dst_y, int width) {
3011
+ RGBToYMatrixRow_LSX(src_raw, dst_y, width, &kRawI601Constants);
3012
+ }
3013
+
3014
+ // undef for unified sources build
3015
+ #undef YUVTORGB_SETUP
3016
+ #undef READYUV422_D
3017
+ #undef READYUV422
3018
+ #undef YUVTORGB_D
3019
+ #undef YUVTORGB
3020
+ #undef I444TORGB
3021
+ #undef STOREARGB_D
3022
+ #undef STOREARGB
3023
+ #undef RGBTOUV
3024
+
3025
+ #ifdef __cplusplus
3026
+ } // extern "C"
3027
+ } // namespace libyuv
3028
+ #endif
3029
+
3030
+ #endif // !defined(LIBYUV_DISABLE_LSX) && defined(__loongarch_sx)