react-native-vision-camera-spoof-detector 1.0.22 → 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 (193) hide show
  1. package/README.md +442 -442
  2. package/android/build.gradle +12 -4
  3. package/android/src/main/cpp/CMakeLists.txt +101 -94
  4. package/android/src/main/cpp/libyuv/.clang-format +6 -6
  5. package/android/src/main/cpp/libyuv/.gn +40 -40
  6. package/android/src/main/cpp/libyuv/.vpython3 +410 -410
  7. package/android/src/main/cpp/libyuv/AUTHORS +7 -7
  8. package/android/src/main/cpp/libyuv/Android.bp +202 -202
  9. package/android/src/main/cpp/libyuv/Android.mk +106 -106
  10. package/android/src/main/cpp/libyuv/BUILD.gn +490 -490
  11. package/android/src/main/cpp/libyuv/CM_linux_packages.cmake +70 -70
  12. package/android/src/main/cpp/libyuv/CMakeLists.txt +259 -252
  13. package/android/src/main/cpp/libyuv/DEPS +935 -935
  14. package/android/src/main/cpp/libyuv/DIR_METADATA +3 -3
  15. package/android/src/main/cpp/libyuv/LICENSE +29 -29
  16. package/android/src/main/cpp/libyuv/OWNERS +11 -11
  17. package/android/src/main/cpp/libyuv/PATENTS +23 -23
  18. package/android/src/main/cpp/libyuv/PRESUBMIT.py +65 -65
  19. package/android/src/main/cpp/libyuv/README.chromium +11 -11
  20. package/android/src/main/cpp/libyuv/README.md +19 -19
  21. package/android/src/main/cpp/libyuv/build_overrides/build.gni +60 -60
  22. package/android/src/main/cpp/libyuv/build_overrides/gtest.gni +19 -19
  23. package/android/src/main/cpp/libyuv/build_overrides/partition_alloc.gni +17 -17
  24. package/android/src/main/cpp/libyuv/codereview.settings +5 -5
  25. package/android/src/main/cpp/libyuv/docs/deprecated_builds.md +409 -409
  26. package/android/src/main/cpp/libyuv/docs/environment_variables.md +64 -64
  27. package/android/src/main/cpp/libyuv/docs/feature_detection.md +108 -108
  28. package/android/src/main/cpp/libyuv/docs/filtering.md +196 -196
  29. package/android/src/main/cpp/libyuv/docs/formats.md +208 -208
  30. package/android/src/main/cpp/libyuv/docs/getting_started.md +296 -296
  31. package/android/src/main/cpp/libyuv/docs/rotation.md +107 -107
  32. package/android/src/main/cpp/libyuv/download_vs_toolchain.py +29 -29
  33. package/android/src/main/cpp/libyuv/include/libyuv/basic_types.h +68 -68
  34. package/android/src/main/cpp/libyuv/include/libyuv/compare.h +111 -111
  35. package/android/src/main/cpp/libyuv/include/libyuv/compare_row.h +112 -112
  36. package/android/src/main/cpp/libyuv/include/libyuv/convert.h +1117 -1117
  37. package/android/src/main/cpp/libyuv/include/libyuv/convert_argb.h +2335 -2335
  38. package/android/src/main/cpp/libyuv/include/libyuv/convert_from.h +203 -203
  39. package/android/src/main/cpp/libyuv/include/libyuv/convert_from_argb.h +394 -394
  40. package/android/src/main/cpp/libyuv/include/libyuv/cpu_id.h +147 -147
  41. package/android/src/main/cpp/libyuv/include/libyuv/cpu_support.h +99 -99
  42. package/android/src/main/cpp/libyuv/include/libyuv/loongson_intrinsics.h +1949 -1949
  43. package/android/src/main/cpp/libyuv/include/libyuv/mjpeg_decoder.h +195 -195
  44. package/android/src/main/cpp/libyuv/include/libyuv/planar_functions.h +1131 -1131
  45. package/android/src/main/cpp/libyuv/include/libyuv/rotate.h +296 -296
  46. package/android/src/main/cpp/libyuv/include/libyuv/rotate_argb.h +37 -37
  47. package/android/src/main/cpp/libyuv/include/libyuv/rotate_row.h +265 -265
  48. package/android/src/main/cpp/libyuv/include/libyuv/row.h +6738 -6738
  49. package/android/src/main/cpp/libyuv/include/libyuv/row_sve.h +2154 -2154
  50. package/android/src/main/cpp/libyuv/include/libyuv/scale.h +336 -336
  51. package/android/src/main/cpp/libyuv/include/libyuv/scale_argb.h +76 -76
  52. package/android/src/main/cpp/libyuv/include/libyuv/scale_rgb.h +42 -42
  53. package/android/src/main/cpp/libyuv/include/libyuv/scale_row.h +1726 -1726
  54. package/android/src/main/cpp/libyuv/include/libyuv/scale_uv.h +51 -51
  55. package/android/src/main/cpp/libyuv/include/libyuv/version.h +16 -16
  56. package/android/src/main/cpp/libyuv/include/libyuv/video_common.h +222 -222
  57. package/android/src/main/cpp/libyuv/include/libyuv.h +33 -33
  58. package/android/src/main/cpp/libyuv/infra/config/OWNERS +3 -3
  59. package/android/src/main/cpp/libyuv/infra/config/PRESUBMIT.py +17 -17
  60. package/android/src/main/cpp/libyuv/infra/config/README.md +2 -2
  61. package/android/src/main/cpp/libyuv/infra/config/codereview.settings +6 -6
  62. package/android/src/main/cpp/libyuv/infra/config/commit-queue.cfg +144 -144
  63. package/android/src/main/cpp/libyuv/infra/config/cr-buildbucket.cfg +1185 -1185
  64. package/android/src/main/cpp/libyuv/infra/config/luci-logdog.cfg +9 -9
  65. package/android/src/main/cpp/libyuv/infra/config/luci-milo.cfg +246 -246
  66. package/android/src/main/cpp/libyuv/infra/config/luci-scheduler.cfg +385 -385
  67. package/android/src/main/cpp/libyuv/infra/config/main.star +402 -402
  68. package/android/src/main/cpp/libyuv/infra/config/project.cfg +16 -16
  69. package/android/src/main/cpp/libyuv/infra/config/realms.cfg +111 -111
  70. package/android/src/main/cpp/libyuv/libyuv.gni +34 -34
  71. package/android/src/main/cpp/libyuv/libyuv.gyp +149 -149
  72. package/android/src/main/cpp/libyuv/libyuv.gypi +87 -87
  73. package/android/src/main/cpp/libyuv/linux.mk +96 -96
  74. package/android/src/main/cpp/libyuv/public.mk +13 -13
  75. package/android/src/main/cpp/libyuv/pylintrc +49 -49
  76. package/android/src/main/cpp/libyuv/riscv_script/prepare_toolchain_qemu.sh +74 -74
  77. package/android/src/main/cpp/libyuv/riscv_script/riscv-clang.cmake +56 -56
  78. package/android/src/main/cpp/libyuv/riscv_script/run_qemu.sh +15 -15
  79. package/android/src/main/cpp/libyuv/source/compare.cc +435 -435
  80. package/android/src/main/cpp/libyuv/source/compare_common.cc +74 -74
  81. package/android/src/main/cpp/libyuv/source/compare_gcc.cc +362 -362
  82. package/android/src/main/cpp/libyuv/source/compare_neon.cc +96 -96
  83. package/android/src/main/cpp/libyuv/source/compare_neon64.cc +223 -223
  84. package/android/src/main/cpp/libyuv/source/compare_win.cc +241 -241
  85. package/android/src/main/cpp/libyuv/source/convert.cc +4746 -4746
  86. package/android/src/main/cpp/libyuv/source/convert_argb.cc +9179 -9179
  87. package/android/src/main/cpp/libyuv/source/convert_from.cc +866 -866
  88. package/android/src/main/cpp/libyuv/source/convert_from_argb.cc +3671 -3671
  89. package/android/src/main/cpp/libyuv/source/convert_jpeg.cc +602 -602
  90. package/android/src/main/cpp/libyuv/source/convert_to_argb.cc +391 -391
  91. package/android/src/main/cpp/libyuv/source/convert_to_i420.cc +288 -288
  92. package/android/src/main/cpp/libyuv/source/cpu_id.cc +496 -496
  93. package/android/src/main/cpp/libyuv/source/mjpeg_decoder.cc +580 -580
  94. package/android/src/main/cpp/libyuv/source/mjpeg_validate.cc +71 -71
  95. package/android/src/main/cpp/libyuv/source/planar_functions.cc +5663 -5663
  96. package/android/src/main/cpp/libyuv/source/rotate.cc +1241 -1241
  97. package/android/src/main/cpp/libyuv/source/rotate_any.cc +76 -76
  98. package/android/src/main/cpp/libyuv/source/rotate_argb.cc +259 -259
  99. package/android/src/main/cpp/libyuv/source/rotate_common.cc +208 -208
  100. package/android/src/main/cpp/libyuv/source/rotate_gcc.cc +505 -505
  101. package/android/src/main/cpp/libyuv/source/rotate_lsx.cc +233 -233
  102. package/android/src/main/cpp/libyuv/source/rotate_neon.cc +219 -219
  103. package/android/src/main/cpp/libyuv/source/rotate_neon64.cc +273 -273
  104. package/android/src/main/cpp/libyuv/source/rotate_sme.cc +174 -174
  105. package/android/src/main/cpp/libyuv/source/rotate_win.cc +253 -253
  106. package/android/src/main/cpp/libyuv/source/row_any.cc +2519 -2519
  107. package/android/src/main/cpp/libyuv/source/row_common.cc +4461 -4461
  108. package/android/src/main/cpp/libyuv/source/row_gcc.cc +9570 -9570
  109. package/android/src/main/cpp/libyuv/source/row_lasx.cc +2343 -2343
  110. package/android/src/main/cpp/libyuv/source/row_lsx.cc +3030 -3030
  111. package/android/src/main/cpp/libyuv/source/row_neon.cc +4026 -4026
  112. package/android/src/main/cpp/libyuv/source/row_neon64.cc +5617 -5617
  113. package/android/src/main/cpp/libyuv/source/row_rvv.cc +2599 -2599
  114. package/android/src/main/cpp/libyuv/source/row_sme.cc +1183 -1183
  115. package/android/src/main/cpp/libyuv/source/row_sve.cc +1088 -1088
  116. package/android/src/main/cpp/libyuv/source/row_win.cc +6453 -6453
  117. package/android/src/main/cpp/libyuv/source/scale.cc +2710 -2710
  118. package/android/src/main/cpp/libyuv/source/scale_any.cc +991 -991
  119. package/android/src/main/cpp/libyuv/source/scale_argb.cc +1158 -1158
  120. package/android/src/main/cpp/libyuv/source/scale_common.cc +1977 -1977
  121. package/android/src/main/cpp/libyuv/source/scale_gcc.cc +2947 -2947
  122. package/android/src/main/cpp/libyuv/source/scale_lsx.cc +739 -739
  123. package/android/src/main/cpp/libyuv/source/scale_neon.cc +1449 -1449
  124. package/android/src/main/cpp/libyuv/source/scale_neon64.cc +1552 -1552
  125. package/android/src/main/cpp/libyuv/source/scale_rgb.cc +82 -82
  126. package/android/src/main/cpp/libyuv/source/scale_rvv.cc +1971 -1971
  127. package/android/src/main/cpp/libyuv/source/scale_sme.cc +555 -555
  128. package/android/src/main/cpp/libyuv/source/scale_uv.cc +1159 -1159
  129. package/android/src/main/cpp/libyuv/source/scale_win.cc +1392 -1392
  130. package/android/src/main/cpp/libyuv/source/test.sh +35 -35
  131. package/android/src/main/cpp/libyuv/source/video_common.cc +62 -62
  132. package/android/src/main/cpp/libyuv/tools_libyuv/OWNERS +4 -4
  133. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/roll_deps.py +931 -931
  134. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/roll_deps_test.py +164 -164
  135. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS +21 -21
  136. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.new +13 -13
  137. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old +13 -13
  138. package/android/src/main/cpp/libyuv/tools_libyuv/get_landmines.py +38 -38
  139. package/android/src/main/cpp/libyuv/tools_libyuv/msan/OWNERS +3 -3
  140. package/android/src/main/cpp/libyuv/tools_libyuv/msan/blacklist.txt +9 -9
  141. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/OWNERS +3 -3
  142. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/blacklist.txt +15 -15
  143. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/vptr_blacklist.txt +25 -25
  144. package/android/src/main/cpp/libyuv/unit_test/basictypes_test.cc +43 -43
  145. package/android/src/main/cpp/libyuv/unit_test/color_test.cc +848 -848
  146. package/android/src/main/cpp/libyuv/unit_test/compare_test.cc +739 -739
  147. package/android/src/main/cpp/libyuv/unit_test/convert_argb_test.cc +2867 -2867
  148. package/android/src/main/cpp/libyuv/unit_test/convert_test.cc +2133 -2133
  149. package/android/src/main/cpp/libyuv/unit_test/cpu_test.cc +427 -427
  150. package/android/src/main/cpp/libyuv/unit_test/cpu_thread_test.cc +63 -63
  151. package/android/src/main/cpp/libyuv/unit_test/math_test.cc +160 -160
  152. package/android/src/main/cpp/libyuv/unit_test/planar_test.cc +4731 -4731
  153. package/android/src/main/cpp/libyuv/unit_test/rotate_argb_test.cc +334 -334
  154. package/android/src/main/cpp/libyuv/unit_test/rotate_test.cc +962 -962
  155. package/android/src/main/cpp/libyuv/unit_test/scale_argb_test.cc +590 -590
  156. package/android/src/main/cpp/libyuv/unit_test/scale_plane_test.cc +465 -465
  157. package/android/src/main/cpp/libyuv/unit_test/scale_rgb_test.cc +280 -280
  158. package/android/src/main/cpp/libyuv/unit_test/scale_test.cc +1135 -1135
  159. package/android/src/main/cpp/libyuv/unit_test/scale_uv_test.cc +249 -249
  160. package/android/src/main/cpp/libyuv/unit_test/testdata/arm_v7.txt +12 -12
  161. package/android/src/main/cpp/libyuv/unit_test/testdata/mips.txt +7 -7
  162. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson2k.txt +5 -5
  163. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson3.txt +10 -10
  164. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson_mmi.txt +7 -7
  165. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64.txt +3 -3
  166. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv.txt +3 -3
  167. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv_zvfh.txt +3 -3
  168. package/android/src/main/cpp/libyuv/unit_test/testdata/tegra3.txt +23 -23
  169. package/android/src/main/cpp/libyuv/unit_test/unit_test.cc +581 -581
  170. package/android/src/main/cpp/libyuv/unit_test/unit_test.h +232 -232
  171. package/android/src/main/cpp/libyuv/unit_test/video_common_test.cc +112 -112
  172. package/android/src/main/cpp/libyuv/util/Makefile +9 -9
  173. package/android/src/main/cpp/libyuv/util/color.cc +120 -120
  174. package/android/src/main/cpp/libyuv/util/compare.cc +67 -67
  175. package/android/src/main/cpp/libyuv/util/cpuid.c +211 -211
  176. package/android/src/main/cpp/libyuv/util/i444tonv12_eg.cc +27 -27
  177. package/android/src/main/cpp/libyuv/util/psnr.cc +291 -291
  178. package/android/src/main/cpp/libyuv/util/psnr.h +47 -47
  179. package/android/src/main/cpp/libyuv/util/psnr_main.cc +620 -620
  180. package/android/src/main/cpp/libyuv/util/ssim.cc +364 -364
  181. package/android/src/main/cpp/libyuv/util/ssim.h +38 -38
  182. package/android/src/main/cpp/libyuv/util/yuvconstants.c +114 -114
  183. package/android/src/main/cpp/libyuv/util/yuvconvert.cc +367 -367
  184. package/android/src/main/cpp/libyuv/winarm.mk +47 -47
  185. package/package.json +86 -86
  186. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  187. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  188. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  189. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  190. package/android/.gradle/8.9/gc.properties +0 -0
  191. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  192. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  193. 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