react-native-vision-camera-spoof-detector 1.0.21 → 1.0.23

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 (197) hide show
  1. package/.gitattributes +2 -0
  2. package/.gitignore +27 -0
  3. package/CHANGELOG.md +2 -2
  4. package/CONTRIBUTING.md +2 -2
  5. package/README.md +442 -443
  6. package/android/build.gradle +12 -4
  7. package/android/src/main/cpp/CMakeLists.txt +101 -94
  8. package/android/src/main/cpp/libyuv/.clang-format +6 -6
  9. package/android/src/main/cpp/libyuv/.gn +40 -40
  10. package/android/src/main/cpp/libyuv/.vpython3 +410 -410
  11. package/android/src/main/cpp/libyuv/AUTHORS +7 -7
  12. package/android/src/main/cpp/libyuv/Android.bp +202 -202
  13. package/android/src/main/cpp/libyuv/Android.mk +106 -106
  14. package/android/src/main/cpp/libyuv/BUILD.gn +490 -490
  15. package/android/src/main/cpp/libyuv/CM_linux_packages.cmake +70 -70
  16. package/android/src/main/cpp/libyuv/CMakeLists.txt +259 -252
  17. package/android/src/main/cpp/libyuv/DEPS +935 -935
  18. package/android/src/main/cpp/libyuv/DIR_METADATA +3 -3
  19. package/android/src/main/cpp/libyuv/LICENSE +29 -29
  20. package/android/src/main/cpp/libyuv/OWNERS +11 -11
  21. package/android/src/main/cpp/libyuv/PATENTS +23 -23
  22. package/android/src/main/cpp/libyuv/PRESUBMIT.py +65 -65
  23. package/android/src/main/cpp/libyuv/README.chromium +11 -11
  24. package/android/src/main/cpp/libyuv/README.md +19 -19
  25. package/android/src/main/cpp/libyuv/build_overrides/build.gni +60 -60
  26. package/android/src/main/cpp/libyuv/build_overrides/gtest.gni +19 -19
  27. package/android/src/main/cpp/libyuv/build_overrides/partition_alloc.gni +17 -17
  28. package/android/src/main/cpp/libyuv/codereview.settings +5 -5
  29. package/android/src/main/cpp/libyuv/docs/deprecated_builds.md +409 -409
  30. package/android/src/main/cpp/libyuv/docs/environment_variables.md +64 -64
  31. package/android/src/main/cpp/libyuv/docs/feature_detection.md +108 -108
  32. package/android/src/main/cpp/libyuv/docs/filtering.md +196 -196
  33. package/android/src/main/cpp/libyuv/docs/formats.md +208 -208
  34. package/android/src/main/cpp/libyuv/docs/getting_started.md +296 -296
  35. package/android/src/main/cpp/libyuv/docs/rotation.md +107 -107
  36. package/android/src/main/cpp/libyuv/download_vs_toolchain.py +29 -29
  37. package/android/src/main/cpp/libyuv/include/libyuv/basic_types.h +68 -68
  38. package/android/src/main/cpp/libyuv/include/libyuv/compare.h +111 -111
  39. package/android/src/main/cpp/libyuv/include/libyuv/compare_row.h +112 -112
  40. package/android/src/main/cpp/libyuv/include/libyuv/convert.h +1117 -1117
  41. package/android/src/main/cpp/libyuv/include/libyuv/convert_argb.h +2335 -2335
  42. package/android/src/main/cpp/libyuv/include/libyuv/convert_from.h +203 -203
  43. package/android/src/main/cpp/libyuv/include/libyuv/convert_from_argb.h +394 -394
  44. package/android/src/main/cpp/libyuv/include/libyuv/cpu_id.h +147 -147
  45. package/android/src/main/cpp/libyuv/include/libyuv/cpu_support.h +99 -99
  46. package/android/src/main/cpp/libyuv/include/libyuv/loongson_intrinsics.h +1949 -1949
  47. package/android/src/main/cpp/libyuv/include/libyuv/mjpeg_decoder.h +195 -195
  48. package/android/src/main/cpp/libyuv/include/libyuv/planar_functions.h +1131 -1131
  49. package/android/src/main/cpp/libyuv/include/libyuv/rotate.h +296 -296
  50. package/android/src/main/cpp/libyuv/include/libyuv/rotate_argb.h +37 -37
  51. package/android/src/main/cpp/libyuv/include/libyuv/rotate_row.h +265 -265
  52. package/android/src/main/cpp/libyuv/include/libyuv/row.h +6738 -6738
  53. package/android/src/main/cpp/libyuv/include/libyuv/row_sve.h +2154 -2154
  54. package/android/src/main/cpp/libyuv/include/libyuv/scale.h +336 -336
  55. package/android/src/main/cpp/libyuv/include/libyuv/scale_argb.h +76 -76
  56. package/android/src/main/cpp/libyuv/include/libyuv/scale_rgb.h +42 -42
  57. package/android/src/main/cpp/libyuv/include/libyuv/scale_row.h +1726 -1726
  58. package/android/src/main/cpp/libyuv/include/libyuv/scale_uv.h +51 -51
  59. package/android/src/main/cpp/libyuv/include/libyuv/version.h +16 -16
  60. package/android/src/main/cpp/libyuv/include/libyuv/video_common.h +222 -222
  61. package/android/src/main/cpp/libyuv/include/libyuv.h +33 -33
  62. package/android/src/main/cpp/libyuv/infra/config/OWNERS +3 -3
  63. package/android/src/main/cpp/libyuv/infra/config/PRESUBMIT.py +17 -17
  64. package/android/src/main/cpp/libyuv/infra/config/README.md +2 -2
  65. package/android/src/main/cpp/libyuv/infra/config/codereview.settings +6 -6
  66. package/android/src/main/cpp/libyuv/infra/config/commit-queue.cfg +144 -144
  67. package/android/src/main/cpp/libyuv/infra/config/cr-buildbucket.cfg +1185 -1185
  68. package/android/src/main/cpp/libyuv/infra/config/luci-logdog.cfg +9 -9
  69. package/android/src/main/cpp/libyuv/infra/config/luci-milo.cfg +246 -246
  70. package/android/src/main/cpp/libyuv/infra/config/luci-scheduler.cfg +385 -385
  71. package/android/src/main/cpp/libyuv/infra/config/main.star +402 -402
  72. package/android/src/main/cpp/libyuv/infra/config/project.cfg +16 -16
  73. package/android/src/main/cpp/libyuv/infra/config/realms.cfg +111 -111
  74. package/android/src/main/cpp/libyuv/libyuv.gni +34 -34
  75. package/android/src/main/cpp/libyuv/libyuv.gyp +149 -149
  76. package/android/src/main/cpp/libyuv/libyuv.gypi +87 -87
  77. package/android/src/main/cpp/libyuv/linux.mk +96 -96
  78. package/android/src/main/cpp/libyuv/public.mk +13 -13
  79. package/android/src/main/cpp/libyuv/pylintrc +49 -49
  80. package/android/src/main/cpp/libyuv/riscv_script/prepare_toolchain_qemu.sh +74 -74
  81. package/android/src/main/cpp/libyuv/riscv_script/riscv-clang.cmake +56 -56
  82. package/android/src/main/cpp/libyuv/riscv_script/run_qemu.sh +15 -15
  83. package/android/src/main/cpp/libyuv/source/compare.cc +435 -435
  84. package/android/src/main/cpp/libyuv/source/compare_common.cc +74 -74
  85. package/android/src/main/cpp/libyuv/source/compare_gcc.cc +362 -362
  86. package/android/src/main/cpp/libyuv/source/compare_neon.cc +96 -96
  87. package/android/src/main/cpp/libyuv/source/compare_neon64.cc +223 -223
  88. package/android/src/main/cpp/libyuv/source/compare_win.cc +241 -241
  89. package/android/src/main/cpp/libyuv/source/convert.cc +4746 -4746
  90. package/android/src/main/cpp/libyuv/source/convert_argb.cc +9179 -9179
  91. package/android/src/main/cpp/libyuv/source/convert_from.cc +866 -866
  92. package/android/src/main/cpp/libyuv/source/convert_from_argb.cc +3671 -3671
  93. package/android/src/main/cpp/libyuv/source/convert_jpeg.cc +602 -602
  94. package/android/src/main/cpp/libyuv/source/convert_to_argb.cc +391 -391
  95. package/android/src/main/cpp/libyuv/source/convert_to_i420.cc +288 -288
  96. package/android/src/main/cpp/libyuv/source/cpu_id.cc +496 -496
  97. package/android/src/main/cpp/libyuv/source/mjpeg_decoder.cc +580 -580
  98. package/android/src/main/cpp/libyuv/source/mjpeg_validate.cc +71 -71
  99. package/android/src/main/cpp/libyuv/source/planar_functions.cc +5663 -5663
  100. package/android/src/main/cpp/libyuv/source/rotate.cc +1241 -1241
  101. package/android/src/main/cpp/libyuv/source/rotate_any.cc +76 -76
  102. package/android/src/main/cpp/libyuv/source/rotate_argb.cc +259 -259
  103. package/android/src/main/cpp/libyuv/source/rotate_common.cc +208 -208
  104. package/android/src/main/cpp/libyuv/source/rotate_gcc.cc +505 -505
  105. package/android/src/main/cpp/libyuv/source/rotate_lsx.cc +233 -233
  106. package/android/src/main/cpp/libyuv/source/rotate_neon.cc +219 -219
  107. package/android/src/main/cpp/libyuv/source/rotate_neon64.cc +273 -273
  108. package/android/src/main/cpp/libyuv/source/rotate_sme.cc +174 -174
  109. package/android/src/main/cpp/libyuv/source/rotate_win.cc +253 -253
  110. package/android/src/main/cpp/libyuv/source/row_any.cc +2519 -2519
  111. package/android/src/main/cpp/libyuv/source/row_common.cc +4461 -4461
  112. package/android/src/main/cpp/libyuv/source/row_gcc.cc +9570 -9570
  113. package/android/src/main/cpp/libyuv/source/row_lasx.cc +2343 -2343
  114. package/android/src/main/cpp/libyuv/source/row_lsx.cc +3030 -3030
  115. package/android/src/main/cpp/libyuv/source/row_neon.cc +4026 -4026
  116. package/android/src/main/cpp/libyuv/source/row_neon64.cc +5617 -5617
  117. package/android/src/main/cpp/libyuv/source/row_rvv.cc +2599 -2599
  118. package/android/src/main/cpp/libyuv/source/row_sme.cc +1183 -1183
  119. package/android/src/main/cpp/libyuv/source/row_sve.cc +1088 -1088
  120. package/android/src/main/cpp/libyuv/source/row_win.cc +6453 -6453
  121. package/android/src/main/cpp/libyuv/source/scale.cc +2710 -2710
  122. package/android/src/main/cpp/libyuv/source/scale_any.cc +991 -991
  123. package/android/src/main/cpp/libyuv/source/scale_argb.cc +1158 -1158
  124. package/android/src/main/cpp/libyuv/source/scale_common.cc +1977 -1977
  125. package/android/src/main/cpp/libyuv/source/scale_gcc.cc +2947 -2947
  126. package/android/src/main/cpp/libyuv/source/scale_lsx.cc +739 -739
  127. package/android/src/main/cpp/libyuv/source/scale_neon.cc +1449 -1449
  128. package/android/src/main/cpp/libyuv/source/scale_neon64.cc +1552 -1552
  129. package/android/src/main/cpp/libyuv/source/scale_rgb.cc +82 -82
  130. package/android/src/main/cpp/libyuv/source/scale_rvv.cc +1971 -1971
  131. package/android/src/main/cpp/libyuv/source/scale_sme.cc +555 -555
  132. package/android/src/main/cpp/libyuv/source/scale_uv.cc +1159 -1159
  133. package/android/src/main/cpp/libyuv/source/scale_win.cc +1392 -1392
  134. package/android/src/main/cpp/libyuv/source/test.sh +35 -35
  135. package/android/src/main/cpp/libyuv/source/video_common.cc +62 -62
  136. package/android/src/main/cpp/libyuv/tools_libyuv/OWNERS +4 -4
  137. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/roll_deps.py +931 -931
  138. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/roll_deps_test.py +164 -164
  139. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS +21 -21
  140. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.new +13 -13
  141. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old +13 -13
  142. package/android/src/main/cpp/libyuv/tools_libyuv/get_landmines.py +38 -38
  143. package/android/src/main/cpp/libyuv/tools_libyuv/msan/OWNERS +3 -3
  144. package/android/src/main/cpp/libyuv/tools_libyuv/msan/blacklist.txt +9 -9
  145. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/OWNERS +3 -3
  146. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/blacklist.txt +15 -15
  147. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/vptr_blacklist.txt +25 -25
  148. package/android/src/main/cpp/libyuv/unit_test/basictypes_test.cc +43 -43
  149. package/android/src/main/cpp/libyuv/unit_test/color_test.cc +848 -848
  150. package/android/src/main/cpp/libyuv/unit_test/compare_test.cc +739 -739
  151. package/android/src/main/cpp/libyuv/unit_test/convert_argb_test.cc +2867 -2867
  152. package/android/src/main/cpp/libyuv/unit_test/convert_test.cc +2133 -2133
  153. package/android/src/main/cpp/libyuv/unit_test/cpu_test.cc +427 -427
  154. package/android/src/main/cpp/libyuv/unit_test/cpu_thread_test.cc +63 -63
  155. package/android/src/main/cpp/libyuv/unit_test/math_test.cc +160 -160
  156. package/android/src/main/cpp/libyuv/unit_test/planar_test.cc +4731 -4731
  157. package/android/src/main/cpp/libyuv/unit_test/rotate_argb_test.cc +334 -334
  158. package/android/src/main/cpp/libyuv/unit_test/rotate_test.cc +962 -962
  159. package/android/src/main/cpp/libyuv/unit_test/scale_argb_test.cc +590 -590
  160. package/android/src/main/cpp/libyuv/unit_test/scale_plane_test.cc +465 -465
  161. package/android/src/main/cpp/libyuv/unit_test/scale_rgb_test.cc +280 -280
  162. package/android/src/main/cpp/libyuv/unit_test/scale_test.cc +1135 -1135
  163. package/android/src/main/cpp/libyuv/unit_test/scale_uv_test.cc +249 -249
  164. package/android/src/main/cpp/libyuv/unit_test/testdata/arm_v7.txt +12 -12
  165. package/android/src/main/cpp/libyuv/unit_test/testdata/mips.txt +7 -7
  166. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson2k.txt +5 -5
  167. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson3.txt +10 -10
  168. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson_mmi.txt +7 -7
  169. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64.txt +3 -3
  170. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv.txt +3 -3
  171. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv_zvfh.txt +3 -3
  172. package/android/src/main/cpp/libyuv/unit_test/testdata/tegra3.txt +23 -23
  173. package/android/src/main/cpp/libyuv/unit_test/unit_test.cc +581 -581
  174. package/android/src/main/cpp/libyuv/unit_test/unit_test.h +232 -232
  175. package/android/src/main/cpp/libyuv/unit_test/video_common_test.cc +112 -112
  176. package/android/src/main/cpp/libyuv/util/Makefile +9 -9
  177. package/android/src/main/cpp/libyuv/util/color.cc +120 -120
  178. package/android/src/main/cpp/libyuv/util/compare.cc +67 -67
  179. package/android/src/main/cpp/libyuv/util/cpuid.c +211 -211
  180. package/android/src/main/cpp/libyuv/util/i444tonv12_eg.cc +27 -27
  181. package/android/src/main/cpp/libyuv/util/psnr.cc +291 -291
  182. package/android/src/main/cpp/libyuv/util/psnr.h +47 -47
  183. package/android/src/main/cpp/libyuv/util/psnr_main.cc +620 -620
  184. package/android/src/main/cpp/libyuv/util/ssim.cc +364 -364
  185. package/android/src/main/cpp/libyuv/util/ssim.h +38 -38
  186. package/android/src/main/cpp/libyuv/util/yuvconstants.c +114 -114
  187. package/android/src/main/cpp/libyuv/util/yuvconvert.cc +367 -367
  188. package/android/src/main/cpp/libyuv/winarm.mk +47 -47
  189. package/package.json +86 -84
  190. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  191. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  192. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  193. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  194. package/android/.gradle/8.9/gc.properties +0 -0
  195. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  196. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  197. package/android/.gradle/vcs-1/gc.properties +0 -0
@@ -1,253 +1,253 @@
1
- /*
2
- * Copyright 2013 The LibYuv Project Authors. All rights reserved.
3
- *
4
- * Use of this source code is governed by a BSD-style license
5
- * that can be found in the LICENSE file in the root of the source
6
- * tree. An additional intellectual property rights grant can be found
7
- * in the file PATENTS. All contributing project authors may
8
- * be found in the AUTHORS file in the root of the source tree.
9
- */
10
-
11
- #include "libyuv/rotate_row.h"
12
- #include "libyuv/row.h"
13
-
14
- #ifdef __cplusplus
15
- namespace libyuv {
16
- extern "C" {
17
- #endif
18
-
19
- // This module is for 32 bit Visual C x86
20
- #if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_IX86) && \
21
- (!defined(__clang__) || defined(LIBYUV_ENABLE_ROWWIN))
22
-
23
- __declspec(naked) void TransposeWx8_SSSE3(const uint8_t* src,
24
- int src_stride,
25
- uint8_t* dst,
26
- int dst_stride,
27
- int width) {
28
- __asm {
29
- push edi
30
- push esi
31
- push ebp
32
- mov eax, [esp + 12 + 4] // src
33
- mov edi, [esp + 12 + 8] // src_stride
34
- mov edx, [esp + 12 + 12] // dst
35
- mov esi, [esp + 12 + 16] // dst_stride
36
- mov ecx, [esp + 12 + 20] // width
37
-
38
- // Read in the data from the source pointer.
39
- // First round of bit swap.
40
- align 4
41
- convertloop:
42
- movq xmm0, qword ptr [eax]
43
- lea ebp, [eax + 8]
44
- movq xmm1, qword ptr [eax + edi]
45
- lea eax, [eax + 2 * edi]
46
- punpcklbw xmm0, xmm1
47
- movq xmm2, qword ptr [eax]
48
- movdqa xmm1, xmm0
49
- palignr xmm1, xmm1, 8
50
- movq xmm3, qword ptr [eax + edi]
51
- lea eax, [eax + 2 * edi]
52
- punpcklbw xmm2, xmm3
53
- movdqa xmm3, xmm2
54
- movq xmm4, qword ptr [eax]
55
- palignr xmm3, xmm3, 8
56
- movq xmm5, qword ptr [eax + edi]
57
- punpcklbw xmm4, xmm5
58
- lea eax, [eax + 2 * edi]
59
- movdqa xmm5, xmm4
60
- movq xmm6, qword ptr [eax]
61
- palignr xmm5, xmm5, 8
62
- movq xmm7, qword ptr [eax + edi]
63
- punpcklbw xmm6, xmm7
64
- mov eax, ebp
65
- movdqa xmm7, xmm6
66
- palignr xmm7, xmm7, 8
67
- // Second round of bit swap.
68
- punpcklwd xmm0, xmm2
69
- punpcklwd xmm1, xmm3
70
- movdqa xmm2, xmm0
71
- movdqa xmm3, xmm1
72
- palignr xmm2, xmm2, 8
73
- palignr xmm3, xmm3, 8
74
- punpcklwd xmm4, xmm6
75
- punpcklwd xmm5, xmm7
76
- movdqa xmm6, xmm4
77
- movdqa xmm7, xmm5
78
- palignr xmm6, xmm6, 8
79
- palignr xmm7, xmm7, 8
80
- // Third round of bit swap.
81
- // Write to the destination pointer.
82
- punpckldq xmm0, xmm4
83
- movq qword ptr [edx], xmm0
84
- movdqa xmm4, xmm0
85
- palignr xmm4, xmm4, 8
86
- movq qword ptr [edx + esi], xmm4
87
- lea edx, [edx + 2 * esi]
88
- punpckldq xmm2, xmm6
89
- movdqa xmm6, xmm2
90
- palignr xmm6, xmm6, 8
91
- movq qword ptr [edx], xmm2
92
- punpckldq xmm1, xmm5
93
- movq qword ptr [edx + esi], xmm6
94
- lea edx, [edx + 2 * esi]
95
- movdqa xmm5, xmm1
96
- movq qword ptr [edx], xmm1
97
- palignr xmm5, xmm5, 8
98
- punpckldq xmm3, xmm7
99
- movq qword ptr [edx + esi], xmm5
100
- lea edx, [edx + 2 * esi]
101
- movq qword ptr [edx], xmm3
102
- movdqa xmm7, xmm3
103
- palignr xmm7, xmm7, 8
104
- sub ecx, 8
105
- movq qword ptr [edx + esi], xmm7
106
- lea edx, [edx + 2 * esi]
107
- jg convertloop
108
-
109
- pop ebp
110
- pop esi
111
- pop edi
112
- ret
113
- }
114
- }
115
-
116
- __declspec(naked) void TransposeUVWx8_SSE2(const uint8_t* src,
117
- int src_stride,
118
- uint8_t* dst_a,
119
- int dst_stride_a,
120
- uint8_t* dst_b,
121
- int dst_stride_b,
122
- int w) {
123
- __asm {
124
- push ebx
125
- push esi
126
- push edi
127
- push ebp
128
- mov eax, [esp + 16 + 4] // src
129
- mov edi, [esp + 16 + 8] // src_stride
130
- mov edx, [esp + 16 + 12] // dst_a
131
- mov esi, [esp + 16 + 16] // dst_stride_a
132
- mov ebx, [esp + 16 + 20] // dst_b
133
- mov ebp, [esp + 16 + 24] // dst_stride_b
134
- mov ecx, esp
135
- sub esp, 4 + 16
136
- and esp, ~15
137
- mov [esp + 16], ecx
138
- mov ecx, [ecx + 16 + 28] // w
139
-
140
- align 4
141
- // Read in the data from the source pointer.
142
- // First round of bit swap.
143
- convertloop:
144
- movdqu xmm0, [eax]
145
- movdqu xmm1, [eax + edi]
146
- lea eax, [eax + 2 * edi]
147
- movdqa xmm7, xmm0 // use xmm7 as temp register.
148
- punpcklbw xmm0, xmm1
149
- punpckhbw xmm7, xmm1
150
- movdqa xmm1, xmm7
151
- movdqu xmm2, [eax]
152
- movdqu xmm3, [eax + edi]
153
- lea eax, [eax + 2 * edi]
154
- movdqa xmm7, xmm2
155
- punpcklbw xmm2, xmm3
156
- punpckhbw xmm7, xmm3
157
- movdqa xmm3, xmm7
158
- movdqu xmm4, [eax]
159
- movdqu xmm5, [eax + edi]
160
- lea eax, [eax + 2 * edi]
161
- movdqa xmm7, xmm4
162
- punpcklbw xmm4, xmm5
163
- punpckhbw xmm7, xmm5
164
- movdqa xmm5, xmm7
165
- movdqu xmm6, [eax]
166
- movdqu xmm7, [eax + edi]
167
- lea eax, [eax + 2 * edi]
168
- movdqu [esp], xmm5 // backup xmm5
169
- neg edi
170
- movdqa xmm5, xmm6 // use xmm5 as temp register.
171
- punpcklbw xmm6, xmm7
172
- punpckhbw xmm5, xmm7
173
- movdqa xmm7, xmm5
174
- lea eax, [eax + 8 * edi + 16]
175
- neg edi
176
- // Second round of bit swap.
177
- movdqa xmm5, xmm0
178
- punpcklwd xmm0, xmm2
179
- punpckhwd xmm5, xmm2
180
- movdqa xmm2, xmm5
181
- movdqa xmm5, xmm1
182
- punpcklwd xmm1, xmm3
183
- punpckhwd xmm5, xmm3
184
- movdqa xmm3, xmm5
185
- movdqa xmm5, xmm4
186
- punpcklwd xmm4, xmm6
187
- punpckhwd xmm5, xmm6
188
- movdqa xmm6, xmm5
189
- movdqu xmm5, [esp] // restore xmm5
190
- movdqu [esp], xmm6 // backup xmm6
191
- movdqa xmm6, xmm5 // use xmm6 as temp register.
192
- punpcklwd xmm5, xmm7
193
- punpckhwd xmm6, xmm7
194
- movdqa xmm7, xmm6
195
-
196
- // Third round of bit swap.
197
- // Write to the destination pointer.
198
- movdqa xmm6, xmm0
199
- punpckldq xmm0, xmm4
200
- punpckhdq xmm6, xmm4
201
- movdqa xmm4, xmm6
202
- movdqu xmm6, [esp] // restore xmm6
203
- movlpd qword ptr [edx], xmm0
204
- movhpd qword ptr [ebx], xmm0
205
- movlpd qword ptr [edx + esi], xmm4
206
- lea edx, [edx + 2 * esi]
207
- movhpd qword ptr [ebx + ebp], xmm4
208
- lea ebx, [ebx + 2 * ebp]
209
- movdqa xmm0, xmm2 // use xmm0 as the temp register.
210
- punpckldq xmm2, xmm6
211
- movlpd qword ptr [edx], xmm2
212
- movhpd qword ptr [ebx], xmm2
213
- punpckhdq xmm0, xmm6
214
- movlpd qword ptr [edx + esi], xmm0
215
- lea edx, [edx + 2 * esi]
216
- movhpd qword ptr [ebx + ebp], xmm0
217
- lea ebx, [ebx + 2 * ebp]
218
- movdqa xmm0, xmm1 // use xmm0 as the temp register.
219
- punpckldq xmm1, xmm5
220
- movlpd qword ptr [edx], xmm1
221
- movhpd qword ptr [ebx], xmm1
222
- punpckhdq xmm0, xmm5
223
- movlpd qword ptr [edx + esi], xmm0
224
- lea edx, [edx + 2 * esi]
225
- movhpd qword ptr [ebx + ebp], xmm0
226
- lea ebx, [ebx + 2 * ebp]
227
- movdqa xmm0, xmm3 // use xmm0 as the temp register.
228
- punpckldq xmm3, xmm7
229
- movlpd qword ptr [edx], xmm3
230
- movhpd qword ptr [ebx], xmm3
231
- punpckhdq xmm0, xmm7
232
- sub ecx, 8
233
- movlpd qword ptr [edx + esi], xmm0
234
- lea edx, [edx + 2 * esi]
235
- movhpd qword ptr [ebx + ebp], xmm0
236
- lea ebx, [ebx + 2 * ebp]
237
- jg convertloop
238
-
239
- mov esp, [esp + 16]
240
- pop ebp
241
- pop edi
242
- pop esi
243
- pop ebx
244
- ret
245
- }
246
- }
247
-
248
- #endif // !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86)
249
-
250
- #ifdef __cplusplus
251
- } // extern "C"
252
- } // namespace libyuv
253
- #endif
1
+ /*
2
+ * Copyright 2013 The LibYuv Project Authors. All rights reserved.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license
5
+ * that can be found in the LICENSE file in the root of the source
6
+ * tree. An additional intellectual property rights grant can be found
7
+ * in the file PATENTS. All contributing project authors may
8
+ * be found in the AUTHORS file in the root of the source tree.
9
+ */
10
+
11
+ #include "libyuv/rotate_row.h"
12
+ #include "libyuv/row.h"
13
+
14
+ #ifdef __cplusplus
15
+ namespace libyuv {
16
+ extern "C" {
17
+ #endif
18
+
19
+ // This module is for 32 bit Visual C x86
20
+ #if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_IX86) && \
21
+ (!defined(__clang__) || defined(LIBYUV_ENABLE_ROWWIN))
22
+
23
+ __declspec(naked) void TransposeWx8_SSSE3(const uint8_t* src,
24
+ int src_stride,
25
+ uint8_t* dst,
26
+ int dst_stride,
27
+ int width) {
28
+ __asm {
29
+ push edi
30
+ push esi
31
+ push ebp
32
+ mov eax, [esp + 12 + 4] // src
33
+ mov edi, [esp + 12 + 8] // src_stride
34
+ mov edx, [esp + 12 + 12] // dst
35
+ mov esi, [esp + 12 + 16] // dst_stride
36
+ mov ecx, [esp + 12 + 20] // width
37
+
38
+ // Read in the data from the source pointer.
39
+ // First round of bit swap.
40
+ align 4
41
+ convertloop:
42
+ movq xmm0, qword ptr [eax]
43
+ lea ebp, [eax + 8]
44
+ movq xmm1, qword ptr [eax + edi]
45
+ lea eax, [eax + 2 * edi]
46
+ punpcklbw xmm0, xmm1
47
+ movq xmm2, qword ptr [eax]
48
+ movdqa xmm1, xmm0
49
+ palignr xmm1, xmm1, 8
50
+ movq xmm3, qword ptr [eax + edi]
51
+ lea eax, [eax + 2 * edi]
52
+ punpcklbw xmm2, xmm3
53
+ movdqa xmm3, xmm2
54
+ movq xmm4, qword ptr [eax]
55
+ palignr xmm3, xmm3, 8
56
+ movq xmm5, qword ptr [eax + edi]
57
+ punpcklbw xmm4, xmm5
58
+ lea eax, [eax + 2 * edi]
59
+ movdqa xmm5, xmm4
60
+ movq xmm6, qword ptr [eax]
61
+ palignr xmm5, xmm5, 8
62
+ movq xmm7, qword ptr [eax + edi]
63
+ punpcklbw xmm6, xmm7
64
+ mov eax, ebp
65
+ movdqa xmm7, xmm6
66
+ palignr xmm7, xmm7, 8
67
+ // Second round of bit swap.
68
+ punpcklwd xmm0, xmm2
69
+ punpcklwd xmm1, xmm3
70
+ movdqa xmm2, xmm0
71
+ movdqa xmm3, xmm1
72
+ palignr xmm2, xmm2, 8
73
+ palignr xmm3, xmm3, 8
74
+ punpcklwd xmm4, xmm6
75
+ punpcklwd xmm5, xmm7
76
+ movdqa xmm6, xmm4
77
+ movdqa xmm7, xmm5
78
+ palignr xmm6, xmm6, 8
79
+ palignr xmm7, xmm7, 8
80
+ // Third round of bit swap.
81
+ // Write to the destination pointer.
82
+ punpckldq xmm0, xmm4
83
+ movq qword ptr [edx], xmm0
84
+ movdqa xmm4, xmm0
85
+ palignr xmm4, xmm4, 8
86
+ movq qword ptr [edx + esi], xmm4
87
+ lea edx, [edx + 2 * esi]
88
+ punpckldq xmm2, xmm6
89
+ movdqa xmm6, xmm2
90
+ palignr xmm6, xmm6, 8
91
+ movq qword ptr [edx], xmm2
92
+ punpckldq xmm1, xmm5
93
+ movq qword ptr [edx + esi], xmm6
94
+ lea edx, [edx + 2 * esi]
95
+ movdqa xmm5, xmm1
96
+ movq qword ptr [edx], xmm1
97
+ palignr xmm5, xmm5, 8
98
+ punpckldq xmm3, xmm7
99
+ movq qword ptr [edx + esi], xmm5
100
+ lea edx, [edx + 2 * esi]
101
+ movq qword ptr [edx], xmm3
102
+ movdqa xmm7, xmm3
103
+ palignr xmm7, xmm7, 8
104
+ sub ecx, 8
105
+ movq qword ptr [edx + esi], xmm7
106
+ lea edx, [edx + 2 * esi]
107
+ jg convertloop
108
+
109
+ pop ebp
110
+ pop esi
111
+ pop edi
112
+ ret
113
+ }
114
+ }
115
+
116
+ __declspec(naked) void TransposeUVWx8_SSE2(const uint8_t* src,
117
+ int src_stride,
118
+ uint8_t* dst_a,
119
+ int dst_stride_a,
120
+ uint8_t* dst_b,
121
+ int dst_stride_b,
122
+ int w) {
123
+ __asm {
124
+ push ebx
125
+ push esi
126
+ push edi
127
+ push ebp
128
+ mov eax, [esp + 16 + 4] // src
129
+ mov edi, [esp + 16 + 8] // src_stride
130
+ mov edx, [esp + 16 + 12] // dst_a
131
+ mov esi, [esp + 16 + 16] // dst_stride_a
132
+ mov ebx, [esp + 16 + 20] // dst_b
133
+ mov ebp, [esp + 16 + 24] // dst_stride_b
134
+ mov ecx, esp
135
+ sub esp, 4 + 16
136
+ and esp, ~15
137
+ mov [esp + 16], ecx
138
+ mov ecx, [ecx + 16 + 28] // w
139
+
140
+ align 4
141
+ // Read in the data from the source pointer.
142
+ // First round of bit swap.
143
+ convertloop:
144
+ movdqu xmm0, [eax]
145
+ movdqu xmm1, [eax + edi]
146
+ lea eax, [eax + 2 * edi]
147
+ movdqa xmm7, xmm0 // use xmm7 as temp register.
148
+ punpcklbw xmm0, xmm1
149
+ punpckhbw xmm7, xmm1
150
+ movdqa xmm1, xmm7
151
+ movdqu xmm2, [eax]
152
+ movdqu xmm3, [eax + edi]
153
+ lea eax, [eax + 2 * edi]
154
+ movdqa xmm7, xmm2
155
+ punpcklbw xmm2, xmm3
156
+ punpckhbw xmm7, xmm3
157
+ movdqa xmm3, xmm7
158
+ movdqu xmm4, [eax]
159
+ movdqu xmm5, [eax + edi]
160
+ lea eax, [eax + 2 * edi]
161
+ movdqa xmm7, xmm4
162
+ punpcklbw xmm4, xmm5
163
+ punpckhbw xmm7, xmm5
164
+ movdqa xmm5, xmm7
165
+ movdqu xmm6, [eax]
166
+ movdqu xmm7, [eax + edi]
167
+ lea eax, [eax + 2 * edi]
168
+ movdqu [esp], xmm5 // backup xmm5
169
+ neg edi
170
+ movdqa xmm5, xmm6 // use xmm5 as temp register.
171
+ punpcklbw xmm6, xmm7
172
+ punpckhbw xmm5, xmm7
173
+ movdqa xmm7, xmm5
174
+ lea eax, [eax + 8 * edi + 16]
175
+ neg edi
176
+ // Second round of bit swap.
177
+ movdqa xmm5, xmm0
178
+ punpcklwd xmm0, xmm2
179
+ punpckhwd xmm5, xmm2
180
+ movdqa xmm2, xmm5
181
+ movdqa xmm5, xmm1
182
+ punpcklwd xmm1, xmm3
183
+ punpckhwd xmm5, xmm3
184
+ movdqa xmm3, xmm5
185
+ movdqa xmm5, xmm4
186
+ punpcklwd xmm4, xmm6
187
+ punpckhwd xmm5, xmm6
188
+ movdqa xmm6, xmm5
189
+ movdqu xmm5, [esp] // restore xmm5
190
+ movdqu [esp], xmm6 // backup xmm6
191
+ movdqa xmm6, xmm5 // use xmm6 as temp register.
192
+ punpcklwd xmm5, xmm7
193
+ punpckhwd xmm6, xmm7
194
+ movdqa xmm7, xmm6
195
+
196
+ // Third round of bit swap.
197
+ // Write to the destination pointer.
198
+ movdqa xmm6, xmm0
199
+ punpckldq xmm0, xmm4
200
+ punpckhdq xmm6, xmm4
201
+ movdqa xmm4, xmm6
202
+ movdqu xmm6, [esp] // restore xmm6
203
+ movlpd qword ptr [edx], xmm0
204
+ movhpd qword ptr [ebx], xmm0
205
+ movlpd qword ptr [edx + esi], xmm4
206
+ lea edx, [edx + 2 * esi]
207
+ movhpd qword ptr [ebx + ebp], xmm4
208
+ lea ebx, [ebx + 2 * ebp]
209
+ movdqa xmm0, xmm2 // use xmm0 as the temp register.
210
+ punpckldq xmm2, xmm6
211
+ movlpd qword ptr [edx], xmm2
212
+ movhpd qword ptr [ebx], xmm2
213
+ punpckhdq xmm0, xmm6
214
+ movlpd qword ptr [edx + esi], xmm0
215
+ lea edx, [edx + 2 * esi]
216
+ movhpd qword ptr [ebx + ebp], xmm0
217
+ lea ebx, [ebx + 2 * ebp]
218
+ movdqa xmm0, xmm1 // use xmm0 as the temp register.
219
+ punpckldq xmm1, xmm5
220
+ movlpd qword ptr [edx], xmm1
221
+ movhpd qword ptr [ebx], xmm1
222
+ punpckhdq xmm0, xmm5
223
+ movlpd qword ptr [edx + esi], xmm0
224
+ lea edx, [edx + 2 * esi]
225
+ movhpd qword ptr [ebx + ebp], xmm0
226
+ lea ebx, [ebx + 2 * ebp]
227
+ movdqa xmm0, xmm3 // use xmm0 as the temp register.
228
+ punpckldq xmm3, xmm7
229
+ movlpd qword ptr [edx], xmm3
230
+ movhpd qword ptr [ebx], xmm3
231
+ punpckhdq xmm0, xmm7
232
+ sub ecx, 8
233
+ movlpd qword ptr [edx + esi], xmm0
234
+ lea edx, [edx + 2 * esi]
235
+ movhpd qword ptr [ebx + ebp], xmm0
236
+ lea ebx, [ebx + 2 * ebp]
237
+ jg convertloop
238
+
239
+ mov esp, [esp + 16]
240
+ pop ebp
241
+ pop edi
242
+ pop esi
243
+ pop ebx
244
+ ret
245
+ }
246
+ }
247
+
248
+ #endif // !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86)
249
+
250
+ #ifdef __cplusplus
251
+ } // extern "C"
252
+ } // namespace libyuv
253
+ #endif