react-native-vision-camera-spoof-detector 1.0.22 → 1.0.24

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 (206) hide show
  1. package/README.md +442 -442
  2. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  3. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  4. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  6. package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
  7. package/android/build/reports/problems/problems-report.html +659 -0
  8. package/android/build.gradle +12 -4
  9. package/android/src/main/cpp/CMakeLists.txt +101 -94
  10. package/android/src/main/cpp/libyuv/.clang-format +6 -6
  11. package/android/src/main/cpp/libyuv/.gn +40 -40
  12. package/android/src/main/cpp/libyuv/.vpython3 +410 -410
  13. package/android/src/main/cpp/libyuv/AUTHORS +7 -7
  14. package/android/src/main/cpp/libyuv/Android.bp +202 -202
  15. package/android/src/main/cpp/libyuv/Android.mk +106 -106
  16. package/android/src/main/cpp/libyuv/BUILD.gn +490 -490
  17. package/android/src/main/cpp/libyuv/CM_linux_packages.cmake +70 -70
  18. package/android/src/main/cpp/libyuv/CMakeLists.txt +259 -252
  19. package/android/src/main/cpp/libyuv/DEPS +935 -935
  20. package/android/src/main/cpp/libyuv/DIR_METADATA +3 -3
  21. package/android/src/main/cpp/libyuv/LICENSE +29 -29
  22. package/android/src/main/cpp/libyuv/OWNERS +11 -11
  23. package/android/src/main/cpp/libyuv/PATENTS +23 -23
  24. package/android/src/main/cpp/libyuv/PRESUBMIT.py +65 -65
  25. package/android/src/main/cpp/libyuv/README.chromium +11 -11
  26. package/android/src/main/cpp/libyuv/README.md +19 -19
  27. package/android/src/main/cpp/libyuv/build_overrides/build.gni +60 -60
  28. package/android/src/main/cpp/libyuv/build_overrides/gtest.gni +19 -19
  29. package/android/src/main/cpp/libyuv/build_overrides/partition_alloc.gni +17 -17
  30. package/android/src/main/cpp/libyuv/codereview.settings +5 -5
  31. package/android/src/main/cpp/libyuv/docs/deprecated_builds.md +409 -409
  32. package/android/src/main/cpp/libyuv/docs/environment_variables.md +64 -64
  33. package/android/src/main/cpp/libyuv/docs/feature_detection.md +108 -108
  34. package/android/src/main/cpp/libyuv/docs/filtering.md +196 -196
  35. package/android/src/main/cpp/libyuv/docs/formats.md +208 -208
  36. package/android/src/main/cpp/libyuv/docs/getting_started.md +296 -296
  37. package/android/src/main/cpp/libyuv/docs/rotation.md +107 -107
  38. package/android/src/main/cpp/libyuv/download_vs_toolchain.py +29 -29
  39. package/android/src/main/cpp/libyuv/include/libyuv/basic_types.h +68 -68
  40. package/android/src/main/cpp/libyuv/include/libyuv/compare.h +111 -111
  41. package/android/src/main/cpp/libyuv/include/libyuv/compare_row.h +112 -112
  42. package/android/src/main/cpp/libyuv/include/libyuv/convert.h +1117 -1117
  43. package/android/src/main/cpp/libyuv/include/libyuv/convert_argb.h +2335 -2335
  44. package/android/src/main/cpp/libyuv/include/libyuv/convert_from.h +203 -203
  45. package/android/src/main/cpp/libyuv/include/libyuv/convert_from_argb.h +394 -394
  46. package/android/src/main/cpp/libyuv/include/libyuv/cpu_id.h +147 -147
  47. package/android/src/main/cpp/libyuv/include/libyuv/cpu_support.h +99 -99
  48. package/android/src/main/cpp/libyuv/include/libyuv/loongson_intrinsics.h +1949 -1949
  49. package/android/src/main/cpp/libyuv/include/libyuv/mjpeg_decoder.h +195 -195
  50. package/android/src/main/cpp/libyuv/include/libyuv/planar_functions.h +1131 -1131
  51. package/android/src/main/cpp/libyuv/include/libyuv/rotate.h +296 -296
  52. package/android/src/main/cpp/libyuv/include/libyuv/rotate_argb.h +37 -37
  53. package/android/src/main/cpp/libyuv/include/libyuv/rotate_row.h +265 -265
  54. package/android/src/main/cpp/libyuv/include/libyuv/row.h +6738 -6738
  55. package/android/src/main/cpp/libyuv/include/libyuv/row_sve.h +2154 -2154
  56. package/android/src/main/cpp/libyuv/include/libyuv/scale.h +336 -336
  57. package/android/src/main/cpp/libyuv/include/libyuv/scale_argb.h +76 -76
  58. package/android/src/main/cpp/libyuv/include/libyuv/scale_rgb.h +42 -42
  59. package/android/src/main/cpp/libyuv/include/libyuv/scale_row.h +1726 -1726
  60. package/android/src/main/cpp/libyuv/include/libyuv/scale_uv.h +51 -51
  61. package/android/src/main/cpp/libyuv/include/libyuv/version.h +16 -16
  62. package/android/src/main/cpp/libyuv/include/libyuv/video_common.h +222 -222
  63. package/android/src/main/cpp/libyuv/include/libyuv.h +33 -33
  64. package/android/src/main/cpp/libyuv/infra/config/OWNERS +3 -3
  65. package/android/src/main/cpp/libyuv/infra/config/PRESUBMIT.py +17 -17
  66. package/android/src/main/cpp/libyuv/infra/config/README.md +2 -2
  67. package/android/src/main/cpp/libyuv/infra/config/codereview.settings +6 -6
  68. package/android/src/main/cpp/libyuv/infra/config/commit-queue.cfg +144 -144
  69. package/android/src/main/cpp/libyuv/infra/config/cr-buildbucket.cfg +1185 -1185
  70. package/android/src/main/cpp/libyuv/infra/config/luci-logdog.cfg +9 -9
  71. package/android/src/main/cpp/libyuv/infra/config/luci-milo.cfg +246 -246
  72. package/android/src/main/cpp/libyuv/infra/config/luci-scheduler.cfg +385 -385
  73. package/android/src/main/cpp/libyuv/infra/config/main.star +402 -402
  74. package/android/src/main/cpp/libyuv/infra/config/project.cfg +16 -16
  75. package/android/src/main/cpp/libyuv/infra/config/realms.cfg +111 -111
  76. package/android/src/main/cpp/libyuv/libyuv.gni +34 -34
  77. package/android/src/main/cpp/libyuv/libyuv.gyp +149 -149
  78. package/android/src/main/cpp/libyuv/libyuv.gypi +87 -87
  79. package/android/src/main/cpp/libyuv/linux.mk +96 -96
  80. package/android/src/main/cpp/libyuv/public.mk +13 -13
  81. package/android/src/main/cpp/libyuv/pylintrc +49 -49
  82. package/android/src/main/cpp/libyuv/riscv_script/prepare_toolchain_qemu.sh +74 -74
  83. package/android/src/main/cpp/libyuv/riscv_script/riscv-clang.cmake +56 -56
  84. package/android/src/main/cpp/libyuv/riscv_script/run_qemu.sh +15 -15
  85. package/android/src/main/cpp/libyuv/source/compare.cc +435 -435
  86. package/android/src/main/cpp/libyuv/source/compare_common.cc +74 -74
  87. package/android/src/main/cpp/libyuv/source/compare_gcc.cc +362 -362
  88. package/android/src/main/cpp/libyuv/source/compare_neon.cc +96 -96
  89. package/android/src/main/cpp/libyuv/source/compare_neon64.cc +223 -223
  90. package/android/src/main/cpp/libyuv/source/compare_win.cc +241 -241
  91. package/android/src/main/cpp/libyuv/source/convert.cc +4746 -4746
  92. package/android/src/main/cpp/libyuv/source/convert_argb.cc +9179 -9179
  93. package/android/src/main/cpp/libyuv/source/convert_from.cc +866 -866
  94. package/android/src/main/cpp/libyuv/source/convert_from_argb.cc +3671 -3671
  95. package/android/src/main/cpp/libyuv/source/convert_jpeg.cc +602 -602
  96. package/android/src/main/cpp/libyuv/source/convert_to_argb.cc +391 -391
  97. package/android/src/main/cpp/libyuv/source/convert_to_i420.cc +288 -288
  98. package/android/src/main/cpp/libyuv/source/cpu_id.cc +496 -496
  99. package/android/src/main/cpp/libyuv/source/mjpeg_decoder.cc +580 -580
  100. package/android/src/main/cpp/libyuv/source/mjpeg_validate.cc +71 -71
  101. package/android/src/main/cpp/libyuv/source/planar_functions.cc +5663 -5663
  102. package/android/src/main/cpp/libyuv/source/rotate.cc +1241 -1241
  103. package/android/src/main/cpp/libyuv/source/rotate_any.cc +76 -76
  104. package/android/src/main/cpp/libyuv/source/rotate_argb.cc +259 -259
  105. package/android/src/main/cpp/libyuv/source/rotate_common.cc +208 -208
  106. package/android/src/main/cpp/libyuv/source/rotate_gcc.cc +505 -505
  107. package/android/src/main/cpp/libyuv/source/rotate_lsx.cc +233 -233
  108. package/android/src/main/cpp/libyuv/source/rotate_neon.cc +219 -219
  109. package/android/src/main/cpp/libyuv/source/rotate_neon64.cc +273 -273
  110. package/android/src/main/cpp/libyuv/source/rotate_sme.cc +174 -174
  111. package/android/src/main/cpp/libyuv/source/rotate_win.cc +253 -253
  112. package/android/src/main/cpp/libyuv/source/row_any.cc +2519 -2519
  113. package/android/src/main/cpp/libyuv/source/row_common.cc +4461 -4461
  114. package/android/src/main/cpp/libyuv/source/row_gcc.cc +9570 -9570
  115. package/android/src/main/cpp/libyuv/source/row_lasx.cc +2343 -2343
  116. package/android/src/main/cpp/libyuv/source/row_lsx.cc +3030 -3030
  117. package/android/src/main/cpp/libyuv/source/row_neon.cc +4026 -4026
  118. package/android/src/main/cpp/libyuv/source/row_neon64.cc +5617 -5617
  119. package/android/src/main/cpp/libyuv/source/row_rvv.cc +2599 -2599
  120. package/android/src/main/cpp/libyuv/source/row_sme.cc +1183 -1183
  121. package/android/src/main/cpp/libyuv/source/row_sve.cc +1088 -1088
  122. package/android/src/main/cpp/libyuv/source/row_win.cc +6453 -6453
  123. package/android/src/main/cpp/libyuv/source/scale.cc +2710 -2710
  124. package/android/src/main/cpp/libyuv/source/scale_any.cc +991 -991
  125. package/android/src/main/cpp/libyuv/source/scale_argb.cc +1158 -1158
  126. package/android/src/main/cpp/libyuv/source/scale_common.cc +1977 -1977
  127. package/android/src/main/cpp/libyuv/source/scale_gcc.cc +2947 -2947
  128. package/android/src/main/cpp/libyuv/source/scale_lsx.cc +739 -739
  129. package/android/src/main/cpp/libyuv/source/scale_neon.cc +1449 -1449
  130. package/android/src/main/cpp/libyuv/source/scale_neon64.cc +1552 -1552
  131. package/android/src/main/cpp/libyuv/source/scale_rgb.cc +82 -82
  132. package/android/src/main/cpp/libyuv/source/scale_rvv.cc +1971 -1971
  133. package/android/src/main/cpp/libyuv/source/scale_sme.cc +555 -555
  134. package/android/src/main/cpp/libyuv/source/scale_uv.cc +1159 -1159
  135. package/android/src/main/cpp/libyuv/source/scale_win.cc +1392 -1392
  136. package/android/src/main/cpp/libyuv/source/test.sh +35 -35
  137. package/android/src/main/cpp/libyuv/source/video_common.cc +62 -62
  138. package/android/src/main/cpp/libyuv/tools_libyuv/OWNERS +4 -4
  139. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/roll_deps.py +931 -931
  140. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/roll_deps_test.py +164 -164
  141. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS +21 -21
  142. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.new +13 -13
  143. package/android/src/main/cpp/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old +13 -13
  144. package/android/src/main/cpp/libyuv/tools_libyuv/get_landmines.py +38 -38
  145. package/android/src/main/cpp/libyuv/tools_libyuv/msan/OWNERS +3 -3
  146. package/android/src/main/cpp/libyuv/tools_libyuv/msan/blacklist.txt +9 -9
  147. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/OWNERS +3 -3
  148. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/blacklist.txt +15 -15
  149. package/android/src/main/cpp/libyuv/tools_libyuv/ubsan/vptr_blacklist.txt +25 -25
  150. package/android/src/main/cpp/libyuv/unit_test/basictypes_test.cc +43 -43
  151. package/android/src/main/cpp/libyuv/unit_test/color_test.cc +848 -848
  152. package/android/src/main/cpp/libyuv/unit_test/compare_test.cc +739 -739
  153. package/android/src/main/cpp/libyuv/unit_test/convert_argb_test.cc +2867 -2867
  154. package/android/src/main/cpp/libyuv/unit_test/convert_test.cc +2133 -2133
  155. package/android/src/main/cpp/libyuv/unit_test/cpu_test.cc +427 -427
  156. package/android/src/main/cpp/libyuv/unit_test/cpu_thread_test.cc +63 -63
  157. package/android/src/main/cpp/libyuv/unit_test/math_test.cc +160 -160
  158. package/android/src/main/cpp/libyuv/unit_test/planar_test.cc +4731 -4731
  159. package/android/src/main/cpp/libyuv/unit_test/rotate_argb_test.cc +334 -334
  160. package/android/src/main/cpp/libyuv/unit_test/rotate_test.cc +962 -962
  161. package/android/src/main/cpp/libyuv/unit_test/scale_argb_test.cc +590 -590
  162. package/android/src/main/cpp/libyuv/unit_test/scale_plane_test.cc +465 -465
  163. package/android/src/main/cpp/libyuv/unit_test/scale_rgb_test.cc +280 -280
  164. package/android/src/main/cpp/libyuv/unit_test/scale_test.cc +1135 -1135
  165. package/android/src/main/cpp/libyuv/unit_test/scale_uv_test.cc +249 -249
  166. package/android/src/main/cpp/libyuv/unit_test/testdata/arm_v7.txt +12 -12
  167. package/android/src/main/cpp/libyuv/unit_test/testdata/mips.txt +7 -7
  168. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson2k.txt +5 -5
  169. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson3.txt +10 -10
  170. package/android/src/main/cpp/libyuv/unit_test/testdata/mips_loongson_mmi.txt +7 -7
  171. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64.txt +3 -3
  172. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv.txt +3 -3
  173. package/android/src/main/cpp/libyuv/unit_test/testdata/riscv64_rvv_zvfh.txt +3 -3
  174. package/android/src/main/cpp/libyuv/unit_test/testdata/tegra3.txt +23 -23
  175. package/android/src/main/cpp/libyuv/unit_test/unit_test.cc +581 -581
  176. package/android/src/main/cpp/libyuv/unit_test/unit_test.h +232 -232
  177. package/android/src/main/cpp/libyuv/unit_test/video_common_test.cc +112 -112
  178. package/android/src/main/cpp/libyuv/util/Makefile +9 -9
  179. package/android/src/main/cpp/libyuv/util/color.cc +120 -120
  180. package/android/src/main/cpp/libyuv/util/compare.cc +67 -67
  181. package/android/src/main/cpp/libyuv/util/cpuid.c +211 -211
  182. package/android/src/main/cpp/libyuv/util/i444tonv12_eg.cc +27 -27
  183. package/android/src/main/cpp/libyuv/util/psnr.cc +291 -291
  184. package/android/src/main/cpp/libyuv/util/psnr.h +47 -47
  185. package/android/src/main/cpp/libyuv/util/psnr_main.cc +620 -620
  186. package/android/src/main/cpp/libyuv/util/ssim.cc +364 -364
  187. package/android/src/main/cpp/libyuv/util/ssim.h +38 -38
  188. package/android/src/main/cpp/libyuv/util/yuvconstants.c +114 -114
  189. package/android/src/main/cpp/libyuv/util/yuvconvert.cc +367 -367
  190. package/android/src/main/cpp/libyuv/winarm.mk +47 -47
  191. package/index.js +17 -1
  192. package/ios/FaceAntiSpoofFrameProcessor.swift +283 -0
  193. package/ios/FaceAntiSpoofJSI.h +12 -0
  194. package/ios/FaceAntiSpoofJSI.mm +92 -0
  195. package/ios/FaceAntiSpoofManager.swift +63 -0
  196. package/ios/FaceAntiSpoofModule.m +191 -0
  197. package/ios/FaceAntiSpoofPluginRegister.m +42 -0
  198. package/ios/models/FaceAntiSpoofing.tflite +0 -0
  199. package/ios/models/model_spec.json +16 -0
  200. package/package.json +87 -86
  201. package/.gitignore +0 -27
  202. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  203. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  204. package/android/.gradle/8.9/gc.properties +0 -0
  205. /package/android/.gradle/{8.9 → 9.2.0}/fileChanges/last-build.bin +0 -0
  206. /package/android/.gradle/{8.9/dependencies-accessors → 9.2.0}/gc.properties +0 -0
@@ -1,1726 +1,1726 @@
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
- #ifndef INCLUDE_LIBYUV_SCALE_ROW_H_
12
- #define INCLUDE_LIBYUV_SCALE_ROW_H_
13
-
14
- #include "libyuv/basic_types.h"
15
- #include "libyuv/cpu_support.h"
16
- #include "libyuv/scale.h"
17
-
18
- #ifdef __cplusplus
19
- namespace libyuv {
20
- extern "C" {
21
- #endif
22
-
23
- // The following are available on all x86 platforms:
24
- #if !defined(LIBYUV_DISABLE_X86) && \
25
- (defined(_M_IX86) || \
26
- (defined(__x86_64__) && !defined(LIBYUV_ENABLE_ROWWIN)) || \
27
- defined(__i386__))
28
- #define HAS_FIXEDDIV1_X86
29
- #define HAS_FIXEDDIV_X86
30
- #define HAS_SCALEADDROW_SSE2
31
- #define HAS_SCALEARGBCOLS_SSE2
32
- #define HAS_SCALEARGBCOLSUP2_SSE2
33
- #define HAS_SCALEARGBFILTERCOLS_SSSE3
34
- #define HAS_SCALEARGBROWDOWN2_SSE2
35
- #define HAS_SCALEARGBROWDOWNEVEN_SSE2
36
- #define HAS_SCALECOLSUP2_SSE2
37
- #define HAS_SCALEFILTERCOLS_SSSE3
38
- #define HAS_SCALEROWDOWN2_SSSE3
39
- #define HAS_SCALEROWDOWN34_SSSE3
40
- #define HAS_SCALEROWDOWN38_SSSE3
41
- #define HAS_SCALEROWDOWN4_SSSE3
42
- #endif
43
-
44
- // The following are available for gcc/clang x86 platforms:
45
- // TODO(fbarchard): Port to Visual C
46
- #if !defined(LIBYUV_DISABLE_X86) && \
47
- (defined(__x86_64__) || defined(__i386__)) && \
48
- !defined(LIBYUV_ENABLE_ROWWIN)
49
- #define HAS_SCALEUVROWDOWN2BOX_SSSE3
50
- #define HAS_SCALEROWUP2_LINEAR_SSE2
51
- #define HAS_SCALEROWUP2_LINEAR_SSSE3
52
- #define HAS_SCALEROWUP2_BILINEAR_SSE2
53
- #define HAS_SCALEROWUP2_BILINEAR_SSSE3
54
- #define HAS_SCALEROWUP2_LINEAR_12_SSSE3
55
- #define HAS_SCALEROWUP2_BILINEAR_12_SSSE3
56
- #define HAS_SCALEROWUP2_LINEAR_16_SSE2
57
- #define HAS_SCALEROWUP2_BILINEAR_16_SSE2
58
- #define HAS_SCALEUVROWUP2_LINEAR_SSSE3
59
- #define HAS_SCALEUVROWUP2_BILINEAR_SSSE3
60
- #define HAS_SCALEUVROWUP2_LINEAR_16_SSE41
61
- #define HAS_SCALEUVROWUP2_BILINEAR_16_SSE41
62
- #endif
63
-
64
- // The following are available for gcc/clang x86 platforms, but
65
- // require clang 3.4 or gcc 4.7.
66
- // TODO(fbarchard): Port to Visual C
67
- #if !defined(LIBYUV_DISABLE_X86) && \
68
- (defined(__x86_64__) || defined(__i386__)) && \
69
- (defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2))
70
- #define HAS_SCALEUVROWDOWN2BOX_AVX2
71
- #define HAS_SCALEROWUP2_LINEAR_AVX2
72
- #define HAS_SCALEROWUP2_BILINEAR_AVX2
73
- #define HAS_SCALEROWUP2_LINEAR_12_AVX2
74
- #define HAS_SCALEROWUP2_BILINEAR_12_AVX2
75
- #define HAS_SCALEROWUP2_LINEAR_16_AVX2
76
- #define HAS_SCALEROWUP2_BILINEAR_16_AVX2
77
- #define HAS_SCALEUVROWUP2_LINEAR_AVX2
78
- #define HAS_SCALEUVROWUP2_BILINEAR_AVX2
79
- #define HAS_SCALEUVROWUP2_LINEAR_16_AVX2
80
- #define HAS_SCALEUVROWUP2_BILINEAR_16_AVX2
81
- #endif
82
-
83
- // The following are available on all x86 platforms, but
84
- // require VS2012, clang 3.4 or gcc 4.7.
85
- // The code supports NaCL but requires a new compiler and validator.
86
- #if !defined(LIBYUV_DISABLE_X86) && \
87
- (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2) || \
88
- defined(GCC_HAS_AVX2))
89
- #define HAS_SCALEADDROW_AVX2
90
- #define HAS_SCALEROWDOWN2_AVX2
91
- #define HAS_SCALEROWDOWN4_AVX2
92
- #endif
93
-
94
- // The following are available on Neon platforms:
95
- #if !defined(LIBYUV_DISABLE_NEON) && \
96
- (defined(__ARM_NEON__) || defined(LIBYUV_NEON) || defined(__aarch64__))
97
- #define HAS_SCALEADDROW_NEON
98
- #define HAS_SCALEARGBCOLS_NEON
99
- #define HAS_SCALEARGBFILTERCOLS_NEON
100
- #define HAS_SCALEARGBROWDOWN2_NEON
101
- #define HAS_SCALEARGBROWDOWNEVEN_NEON
102
- #define HAS_SCALEFILTERCOLS_NEON
103
- #define HAS_SCALEROWDOWN2_NEON
104
- #define HAS_SCALEROWDOWN34_NEON
105
- #define HAS_SCALEROWDOWN38_NEON
106
- #define HAS_SCALEROWDOWN4_NEON
107
- #define HAS_SCALEUVROWDOWN2_NEON
108
- #define HAS_SCALEUVROWDOWN2LINEAR_NEON
109
- #define HAS_SCALEUVROWDOWN2BOX_NEON
110
- #define HAS_SCALEUVROWDOWNEVEN_NEON
111
- #define HAS_SCALEROWUP2_LINEAR_NEON
112
- #define HAS_SCALEROWUP2_BILINEAR_NEON
113
- #define HAS_SCALEROWUP2_LINEAR_12_NEON
114
- #define HAS_SCALEROWUP2_BILINEAR_12_NEON
115
- #define HAS_SCALEROWUP2_LINEAR_16_NEON
116
- #define HAS_SCALEROWUP2_BILINEAR_16_NEON
117
- #define HAS_SCALEUVROWUP2_LINEAR_NEON
118
- #define HAS_SCALEUVROWUP2_BILINEAR_NEON
119
- #define HAS_SCALEUVROWUP2_LINEAR_16_NEON
120
- #define HAS_SCALEUVROWUP2_BILINEAR_16_NEON
121
- #endif
122
-
123
- // The following are available on AArch64 Neon platforms:
124
- #if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__)
125
- #define HAS_SCALEROWDOWN2_16_NEON
126
- #endif
127
-
128
- // The following are available on AArch64 SME platforms:
129
- #if !defined(LIBYUV_DISABLE_SME) && defined(CLANG_HAS_SME) && \
130
- defined(__aarch64__)
131
- #define HAS_SCALEARGBROWDOWN2_SME
132
- #define HAS_SCALEROWDOWN2_16_SME
133
- #define HAS_SCALEROWDOWN2_SME
134
- #define HAS_SCALEUVROWDOWN2BOX_SME
135
- #define HAS_SCALEUVROWDOWN2LINEAR_SME
136
- #define HAS_SCALEUVROWDOWN2_SME
137
- #endif
138
-
139
- #if !defined(LIBYUV_DISABLE_LSX) && defined(__loongarch_sx)
140
- #define HAS_SCALEARGBROWDOWN2_LSX
141
- #define HAS_SCALEARGBROWDOWNEVEN_LSX
142
- #define HAS_SCALEROWDOWN2_LSX
143
- #define HAS_SCALEROWDOWN4_LSX
144
- #define HAS_SCALEROWDOWN38_LSX
145
- #define HAS_SCALEFILTERCOLS_LSX
146
- #define HAS_SCALEADDROW_LSX
147
- #define HAS_SCALEARGBCOLS_LSX
148
- #define HAS_SCALEARGBFILTERCOLS_LSX
149
- #define HAS_SCALEROWDOWN34_LSX
150
- #endif
151
-
152
- // The following are available on RVV with 64 bit elements
153
- // TODO: Update compiler to support 64 bit
154
- #if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
155
- defined(__riscv_zve64x)
156
- #define HAS_SCALEUVROWDOWN4_RVV
157
- #define HAS_SCALEARGBROWDOWN2_RVV
158
- #endif
159
-
160
- #if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
161
- defined(__riscv_v_intrinsic)
162
- // The following are available on RVV v0.11 and RVV v1.0
163
- // TODO: Port to RVV v0.12
164
- #if __riscv_v_intrinsic == 11000 || __riscv_v_intrinsic >= 100000
165
- #define HAS_SCALEROWDOWN34_0_BOX_RVV
166
- #define HAS_SCALEROWDOWN34_1_BOX_RVV
167
- #define HAS_SCALEROWDOWN38_2_BOX_RVV
168
- #define HAS_SCALEROWDOWN38_3_BOX_RVV
169
- #define HAS_SCALEUVROWUP2_BILINEAR_RVV
170
- #define HAS_SCALEUVROWUP2_LINEAR_RVV
171
- #define HAS_SCALEROWDOWN34_RVV
172
- #define HAS_SCALEROWDOWN38_RVV
173
- #define HAS_SCALEROWUP2_BILINEAR_RVV
174
- #define HAS_SCALEROWUP2_LINEAR_RVV
175
-
176
- #define HAS_SCALEARGBROWDOWN2BOX_RVV
177
- #define HAS_SCALEARGBROWDOWN2LINEAR_RVV
178
- #define HAS_SCALEARGBROWDOWNEVENBOX_RVV
179
- #define HAS_SCALEROWDOWN2BOX_RVV
180
- #define HAS_SCALEADDROW_RVV
181
- // TODO: Test ScaleARGBRowDownEven_RVV and enable it
182
- // #define HAS_SCALEARGBROWDOWNEVEN_RVV
183
- #define HAS_SCALEUVROWDOWNEVEN_RVV
184
- #define HAS_SCALEROWDOWN2_RVV
185
- #define HAS_SCALEROWDOWN2LINEAR_RVV
186
- #define HAS_SCALEROWDOWN4_RVV
187
- #define HAS_SCALEROWDOWN4BOX_RVV
188
- #define HAS_SCALEUVROWDOWN2_RVV
189
- #define HAS_SCALEUVROWDOWN2BOX_RVV
190
- #define HAS_SCALEUVROWDOWN2LINEAR_RVV
191
- #endif
192
-
193
- // The following are available on RVV v0.11
194
- #if __riscv_v_intrinsic == 11000
195
- #define HAS_SCALEARGBFILTERCOLS_RVV
196
- #endif
197
- #endif
198
-
199
- // Scale ARGB vertically with bilinear interpolation.
200
- void ScalePlaneVertical(int src_height,
201
- int dst_width,
202
- int dst_height,
203
- int src_stride,
204
- int dst_stride,
205
- const uint8_t* src_argb,
206
- uint8_t* dst_argb,
207
- int x,
208
- int y,
209
- int dy,
210
- int bpp,
211
- enum FilterMode filtering);
212
-
213
- void ScalePlaneVertical_16(int src_height,
214
- int dst_width,
215
- int dst_height,
216
- int src_stride,
217
- int dst_stride,
218
- const uint16_t* src_argb,
219
- uint16_t* dst_argb,
220
- int x,
221
- int y,
222
- int dy,
223
- int wpp,
224
- enum FilterMode filtering);
225
-
226
- void ScalePlaneVertical_16To8(int src_height,
227
- int dst_width,
228
- int dst_height,
229
- int src_stride,
230
- int dst_stride,
231
- const uint16_t* src_argb,
232
- uint8_t* dst_argb,
233
- int x,
234
- int y,
235
- int dy,
236
- int wpp,
237
- int scale,
238
- enum FilterMode filtering);
239
-
240
- void ScalePlaneDown2_16To8(int src_width,
241
- int src_height,
242
- int dst_width,
243
- int dst_height,
244
- int src_stride,
245
- int dst_stride,
246
- const uint16_t* src_ptr,
247
- uint8_t* dst_ptr,
248
- int scale,
249
- enum FilterMode filtering);
250
-
251
- // Simplify the filtering based on scale factors.
252
- enum FilterMode ScaleFilterReduce(int src_width,
253
- int src_height,
254
- int dst_width,
255
- int dst_height,
256
- enum FilterMode filtering);
257
-
258
- // Divide num by div and return as 16.16 fixed point result.
259
- int FixedDiv_C(int num, int div);
260
- int FixedDiv_X86(int num, int div);
261
- // Divide num - 1 by div - 1 and return as 16.16 fixed point result.
262
- int FixedDiv1_C(int num, int div);
263
- int FixedDiv1_X86(int num, int div);
264
- #ifdef HAS_FIXEDDIV_X86
265
- #define FixedDiv FixedDiv_X86
266
- #define FixedDiv1 FixedDiv1_X86
267
- #else
268
- #define FixedDiv FixedDiv_C
269
- #define FixedDiv1 FixedDiv1_C
270
- #endif
271
-
272
- // Compute slope values for stepping.
273
- void ScaleSlope(int src_width,
274
- int src_height,
275
- int dst_width,
276
- int dst_height,
277
- enum FilterMode filtering,
278
- int* x,
279
- int* y,
280
- int* dx,
281
- int* dy);
282
-
283
- void ScaleRowDown2_C(const uint8_t* src_ptr,
284
- ptrdiff_t src_stride,
285
- uint8_t* dst,
286
- int dst_width);
287
- void ScaleRowDown2_16_C(const uint16_t* src_ptr,
288
- ptrdiff_t src_stride,
289
- uint16_t* dst,
290
- int dst_width);
291
- void ScaleRowDown2_16To8_C(const uint16_t* src_ptr,
292
- ptrdiff_t src_stride,
293
- uint8_t* dst,
294
- int dst_width,
295
- int scale);
296
- void ScaleRowDown2_16To8_Odd_C(const uint16_t* src_ptr,
297
- ptrdiff_t src_stride,
298
- uint8_t* dst,
299
- int dst_width,
300
- int scale);
301
- void ScaleRowDown2Linear_C(const uint8_t* src_ptr,
302
- ptrdiff_t src_stride,
303
- uint8_t* dst,
304
- int dst_width);
305
- void ScaleRowDown2Linear_16_C(const uint16_t* src_ptr,
306
- ptrdiff_t src_stride,
307
- uint16_t* dst,
308
- int dst_width);
309
- void ScaleRowDown2Linear_16To8_C(const uint16_t* src_ptr,
310
- ptrdiff_t src_stride,
311
- uint8_t* dst,
312
- int dst_width,
313
- int scale);
314
- void ScaleRowDown2Linear_16To8_Odd_C(const uint16_t* src_ptr,
315
- ptrdiff_t src_stride,
316
- uint8_t* dst,
317
- int dst_width,
318
- int scale);
319
- void ScaleRowDown2Box_C(const uint8_t* src_ptr,
320
- ptrdiff_t src_stride,
321
- uint8_t* dst,
322
- int dst_width);
323
- void ScaleRowDown2Box_Odd_C(const uint8_t* src_ptr,
324
- ptrdiff_t src_stride,
325
- uint8_t* dst,
326
- int dst_width);
327
- void ScaleRowDown2Box_16_C(const uint16_t* src_ptr,
328
- ptrdiff_t src_stride,
329
- uint16_t* dst,
330
- int dst_width);
331
- void ScaleRowDown2Box_16To8_C(const uint16_t* src_ptr,
332
- ptrdiff_t src_stride,
333
- uint8_t* dst,
334
- int dst_width,
335
- int scale);
336
- void ScaleRowDown2Box_16To8_Odd_C(const uint16_t* src_ptr,
337
- ptrdiff_t src_stride,
338
- uint8_t* dst,
339
- int dst_width,
340
- int scale);
341
- void ScaleRowDown4_C(const uint8_t* src_ptr,
342
- ptrdiff_t src_stride,
343
- uint8_t* dst,
344
- int dst_width);
345
- void ScaleRowDown4_16_C(const uint16_t* src_ptr,
346
- ptrdiff_t src_stride,
347
- uint16_t* dst,
348
- int dst_width);
349
- void ScaleRowDown4Box_C(const uint8_t* src_ptr,
350
- ptrdiff_t src_stride,
351
- uint8_t* dst,
352
- int dst_width);
353
- void ScaleRowDown4Box_16_C(const uint16_t* src_ptr,
354
- ptrdiff_t src_stride,
355
- uint16_t* dst,
356
- int dst_width);
357
- void ScaleRowDown34_C(const uint8_t* src_ptr,
358
- ptrdiff_t src_stride,
359
- uint8_t* dst,
360
- int dst_width);
361
- void ScaleRowDown34_16_C(const uint16_t* src_ptr,
362
- ptrdiff_t src_stride,
363
- uint16_t* dst,
364
- int dst_width);
365
- void ScaleRowDown34_0_Box_C(const uint8_t* src_ptr,
366
- ptrdiff_t src_stride,
367
- uint8_t* d,
368
- int dst_width);
369
- void ScaleRowDown34_0_Box_16_C(const uint16_t* src_ptr,
370
- ptrdiff_t src_stride,
371
- uint16_t* d,
372
- int dst_width);
373
- void ScaleRowDown34_1_Box_C(const uint8_t* src_ptr,
374
- ptrdiff_t src_stride,
375
- uint8_t* d,
376
- int dst_width);
377
- void ScaleRowDown34_1_Box_16_C(const uint16_t* src_ptr,
378
- ptrdiff_t src_stride,
379
- uint16_t* d,
380
- int dst_width);
381
-
382
- void ScaleRowUp2_Linear_C(const uint8_t* src_ptr,
383
- uint8_t* dst_ptr,
384
- int dst_width);
385
- void ScaleRowUp2_Bilinear_C(const uint8_t* src_ptr,
386
- ptrdiff_t src_stride,
387
- uint8_t* dst_ptr,
388
- ptrdiff_t dst_stride,
389
- int dst_width);
390
- void ScaleRowUp2_Linear_16_C(const uint16_t* src_ptr,
391
- uint16_t* dst_ptr,
392
- int dst_width);
393
- void ScaleRowUp2_Bilinear_16_C(const uint16_t* src_ptr,
394
- ptrdiff_t src_stride,
395
- uint16_t* dst_ptr,
396
- ptrdiff_t dst_stride,
397
- int dst_width);
398
- void ScaleRowUp2_Linear_Any_C(const uint8_t* src_ptr,
399
- uint8_t* dst_ptr,
400
- int dst_width);
401
- void ScaleRowUp2_Bilinear_Any_C(const uint8_t* src_ptr,
402
- ptrdiff_t src_stride,
403
- uint8_t* dst_ptr,
404
- ptrdiff_t dst_stride,
405
- int dst_width);
406
- void ScaleRowUp2_Linear_16_Any_C(const uint16_t* src_ptr,
407
- uint16_t* dst_ptr,
408
- int dst_width);
409
- void ScaleRowUp2_Bilinear_16_Any_C(const uint16_t* src_ptr,
410
- ptrdiff_t src_stride,
411
- uint16_t* dst_ptr,
412
- ptrdiff_t dst_stride,
413
- int dst_width);
414
-
415
- void ScaleCols_C(uint8_t* dst_ptr,
416
- const uint8_t* src_ptr,
417
- int dst_width,
418
- int x,
419
- int dx);
420
- void ScaleCols_16_C(uint16_t* dst_ptr,
421
- const uint16_t* src_ptr,
422
- int dst_width,
423
- int x,
424
- int dx);
425
- void ScaleColsUp2_C(uint8_t* dst_ptr,
426
- const uint8_t* src_ptr,
427
- int dst_width,
428
- int,
429
- int);
430
- void ScaleColsUp2_16_C(uint16_t* dst_ptr,
431
- const uint16_t* src_ptr,
432
- int dst_width,
433
- int,
434
- int);
435
- void ScaleFilterCols_C(uint8_t* dst_ptr,
436
- const uint8_t* src_ptr,
437
- int dst_width,
438
- int x,
439
- int dx);
440
- void ScaleFilterCols_16_C(uint16_t* dst_ptr,
441
- const uint16_t* src_ptr,
442
- int dst_width,
443
- int x,
444
- int dx);
445
- void ScaleFilterCols64_C(uint8_t* dst_ptr,
446
- const uint8_t* src_ptr,
447
- int dst_width,
448
- int x32,
449
- int dx);
450
- void ScaleFilterCols64_16_C(uint16_t* dst_ptr,
451
- const uint16_t* src_ptr,
452
- int dst_width,
453
- int x32,
454
- int dx);
455
- void ScaleRowDown38_C(const uint8_t* src_ptr,
456
- ptrdiff_t src_stride,
457
- uint8_t* dst,
458
- int dst_width);
459
- void ScaleRowDown38_16_C(const uint16_t* src_ptr,
460
- ptrdiff_t src_stride,
461
- uint16_t* dst,
462
- int dst_width);
463
- void ScaleRowDown38_3_Box_C(const uint8_t* src_ptr,
464
- ptrdiff_t src_stride,
465
- uint8_t* dst_ptr,
466
- int dst_width);
467
- void ScaleRowDown38_3_Box_16_C(const uint16_t* src_ptr,
468
- ptrdiff_t src_stride,
469
- uint16_t* dst_ptr,
470
- int dst_width);
471
- void ScaleRowDown38_2_Box_C(const uint8_t* src_ptr,
472
- ptrdiff_t src_stride,
473
- uint8_t* dst_ptr,
474
- int dst_width);
475
- void ScaleRowDown38_2_Box_16_C(const uint16_t* src_ptr,
476
- ptrdiff_t src_stride,
477
- uint16_t* dst_ptr,
478
- int dst_width);
479
- void ScaleAddRow_C(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
480
- void ScaleAddRow_16_C(const uint16_t* src_ptr,
481
- uint32_t* dst_ptr,
482
- int src_width);
483
- void ScaleARGBRowDown2_C(const uint8_t* src_argb,
484
- ptrdiff_t src_stride,
485
- uint8_t* dst_argb,
486
- int dst_width);
487
- void ScaleARGBRowDown2Linear_C(const uint8_t* src_argb,
488
- ptrdiff_t src_stride,
489
- uint8_t* dst_argb,
490
- int dst_width);
491
- void ScaleARGBRowDown2Box_C(const uint8_t* src_argb,
492
- ptrdiff_t src_stride,
493
- uint8_t* dst_argb,
494
- int dst_width);
495
- void ScaleARGBRowDownEven_C(const uint8_t* src_argb,
496
- ptrdiff_t src_stride,
497
- int src_stepx,
498
- uint8_t* dst_argb,
499
- int dst_width);
500
- void ScaleARGBRowDownEvenBox_C(const uint8_t* src_argb,
501
- ptrdiff_t src_stride,
502
- int src_stepx,
503
- uint8_t* dst_argb,
504
- int dst_width);
505
- void ScaleARGBCols_C(uint8_t* dst_argb,
506
- const uint8_t* src_argb,
507
- int dst_width,
508
- int x,
509
- int dx);
510
- void ScaleARGBCols64_C(uint8_t* dst_argb,
511
- const uint8_t* src_argb,
512
- int dst_width,
513
- int x32,
514
- int dx);
515
- void ScaleARGBColsUp2_C(uint8_t* dst_argb,
516
- const uint8_t* src_argb,
517
- int dst_width,
518
- int,
519
- int);
520
- void ScaleARGBFilterCols_C(uint8_t* dst_argb,
521
- const uint8_t* src_argb,
522
- int dst_width,
523
- int x,
524
- int dx);
525
- void ScaleARGBFilterCols64_C(uint8_t* dst_argb,
526
- const uint8_t* src_argb,
527
- int dst_width,
528
- int x32,
529
- int dx);
530
- void ScaleUVRowDown2_C(const uint8_t* src_uv,
531
- ptrdiff_t src_stride,
532
- uint8_t* dst_uv,
533
- int dst_width);
534
- void ScaleUVRowDown2Linear_C(const uint8_t* src_uv,
535
- ptrdiff_t src_stride,
536
- uint8_t* dst_uv,
537
- int dst_width);
538
- void ScaleUVRowDown2Box_C(const uint8_t* src_uv,
539
- ptrdiff_t src_stride,
540
- uint8_t* dst_uv,
541
- int dst_width);
542
- void ScaleUVRowDownEven_C(const uint8_t* src_uv,
543
- ptrdiff_t src_stride,
544
- int src_stepx,
545
- uint8_t* dst_uv,
546
- int dst_width);
547
- void ScaleUVRowDownEvenBox_C(const uint8_t* src_uv,
548
- ptrdiff_t src_stride,
549
- int src_stepx,
550
- uint8_t* dst_uv,
551
- int dst_width);
552
-
553
- void ScaleUVRowUp2_Linear_C(const uint8_t* src_ptr,
554
- uint8_t* dst_ptr,
555
- int dst_width);
556
- void ScaleUVRowUp2_Bilinear_C(const uint8_t* src_ptr,
557
- ptrdiff_t src_stride,
558
- uint8_t* dst_ptr,
559
- ptrdiff_t dst_stride,
560
- int dst_width);
561
- void ScaleUVRowUp2_Linear_Any_C(const uint8_t* src_ptr,
562
- uint8_t* dst_ptr,
563
- int dst_width);
564
- void ScaleUVRowUp2_Bilinear_Any_C(const uint8_t* src_ptr,
565
- ptrdiff_t src_stride,
566
- uint8_t* dst_ptr,
567
- ptrdiff_t dst_stride,
568
- int dst_width);
569
- void ScaleUVRowUp2_Linear_16_C(const uint16_t* src_ptr,
570
- uint16_t* dst_ptr,
571
- int dst_width);
572
- void ScaleUVRowUp2_Bilinear_16_C(const uint16_t* src_ptr,
573
- ptrdiff_t src_stride,
574
- uint16_t* dst_ptr,
575
- ptrdiff_t dst_stride,
576
- int dst_width);
577
- void ScaleUVRowUp2_Linear_16_Any_C(const uint16_t* src_ptr,
578
- uint16_t* dst_ptr,
579
- int dst_width);
580
- void ScaleUVRowUp2_Bilinear_16_Any_C(const uint16_t* src_ptr,
581
- ptrdiff_t src_stride,
582
- uint16_t* dst_ptr,
583
- ptrdiff_t dst_stride,
584
- int dst_width);
585
-
586
- void ScaleUVCols_C(uint8_t* dst_uv,
587
- const uint8_t* src_uv,
588
- int dst_width,
589
- int x,
590
- int dx);
591
- void ScaleUVCols64_C(uint8_t* dst_uv,
592
- const uint8_t* src_uv,
593
- int dst_width,
594
- int x32,
595
- int dx);
596
- void ScaleUVColsUp2_C(uint8_t* dst_uv,
597
- const uint8_t* src_uv,
598
- int dst_width,
599
- int,
600
- int);
601
- void ScaleUVFilterCols_C(uint8_t* dst_uv,
602
- const uint8_t* src_uv,
603
- int dst_width,
604
- int x,
605
- int dx);
606
- void ScaleUVFilterCols64_C(uint8_t* dst_uv,
607
- const uint8_t* src_uv,
608
- int dst_width,
609
- int x32,
610
- int dx);
611
-
612
- // Specialized scalers for x86.
613
- void ScaleRowDown2_SSSE3(const uint8_t* src_ptr,
614
- ptrdiff_t src_stride,
615
- uint8_t* dst_ptr,
616
- int dst_width);
617
- void ScaleRowDown2Linear_SSSE3(const uint8_t* src_ptr,
618
- ptrdiff_t src_stride,
619
- uint8_t* dst_ptr,
620
- int dst_width);
621
- void ScaleRowDown2Box_SSSE3(const uint8_t* src_ptr,
622
- ptrdiff_t src_stride,
623
- uint8_t* dst_ptr,
624
- int dst_width);
625
- void ScaleRowDown2_AVX2(const uint8_t* src_ptr,
626
- ptrdiff_t src_stride,
627
- uint8_t* dst_ptr,
628
- int dst_width);
629
- void ScaleRowDown2Linear_AVX2(const uint8_t* src_ptr,
630
- ptrdiff_t src_stride,
631
- uint8_t* dst_ptr,
632
- int dst_width);
633
- void ScaleRowDown2Box_AVX2(const uint8_t* src_ptr,
634
- ptrdiff_t src_stride,
635
- uint8_t* dst_ptr,
636
- int dst_width);
637
- void ScaleRowDown4_SSSE3(const uint8_t* src_ptr,
638
- ptrdiff_t src_stride,
639
- uint8_t* dst_ptr,
640
- int dst_width);
641
- void ScaleRowDown4Box_SSSE3(const uint8_t* src_ptr,
642
- ptrdiff_t src_stride,
643
- uint8_t* dst_ptr,
644
- int dst_width);
645
- void ScaleRowDown4_AVX2(const uint8_t* src_ptr,
646
- ptrdiff_t src_stride,
647
- uint8_t* dst_ptr,
648
- int dst_width);
649
- void ScaleRowDown4Box_AVX2(const uint8_t* src_ptr,
650
- ptrdiff_t src_stride,
651
- uint8_t* dst_ptr,
652
- int dst_width);
653
-
654
- void ScaleRowDown34_SSSE3(const uint8_t* src_ptr,
655
- ptrdiff_t src_stride,
656
- uint8_t* dst_ptr,
657
- int dst_width);
658
- void ScaleRowDown34_1_Box_SSSE3(const uint8_t* src_ptr,
659
- ptrdiff_t src_stride,
660
- uint8_t* dst_ptr,
661
- int dst_width);
662
- void ScaleRowDown34_0_Box_SSSE3(const uint8_t* src_ptr,
663
- ptrdiff_t src_stride,
664
- uint8_t* dst_ptr,
665
- int dst_width);
666
- void ScaleRowDown38_SSSE3(const uint8_t* src_ptr,
667
- ptrdiff_t src_stride,
668
- uint8_t* dst_ptr,
669
- int dst_width);
670
- void ScaleRowDown38_3_Box_SSSE3(const uint8_t* src_ptr,
671
- ptrdiff_t src_stride,
672
- uint8_t* dst_ptr,
673
- int dst_width);
674
- void ScaleRowDown38_2_Box_SSSE3(const uint8_t* src_ptr,
675
- ptrdiff_t src_stride,
676
- uint8_t* dst_ptr,
677
- int dst_width);
678
-
679
- void ScaleRowUp2_Linear_SSE2(const uint8_t* src_ptr,
680
- uint8_t* dst_ptr,
681
- int dst_width);
682
- void ScaleRowUp2_Bilinear_SSE2(const uint8_t* src_ptr,
683
- ptrdiff_t src_stride,
684
- uint8_t* dst_ptr,
685
- ptrdiff_t dst_stride,
686
- int dst_width);
687
- void ScaleRowUp2_Linear_12_SSSE3(const uint16_t* src_ptr,
688
- uint16_t* dst_ptr,
689
- int dst_width);
690
- void ScaleRowUp2_Bilinear_12_SSSE3(const uint16_t* src_ptr,
691
- ptrdiff_t src_stride,
692
- uint16_t* dst_ptr,
693
- ptrdiff_t dst_stride,
694
- int dst_width);
695
- void ScaleRowUp2_Linear_16_SSE2(const uint16_t* src_ptr,
696
- uint16_t* dst_ptr,
697
- int dst_width);
698
- void ScaleRowUp2_Bilinear_16_SSE2(const uint16_t* src_ptr,
699
- ptrdiff_t src_stride,
700
- uint16_t* dst_ptr,
701
- ptrdiff_t dst_stride,
702
- int dst_width);
703
- void ScaleRowUp2_Linear_SSSE3(const uint8_t* src_ptr,
704
- uint8_t* dst_ptr,
705
- int dst_width);
706
- void ScaleRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
707
- ptrdiff_t src_stride,
708
- uint8_t* dst_ptr,
709
- ptrdiff_t dst_stride,
710
- int dst_width);
711
- void ScaleRowUp2_Linear_AVX2(const uint8_t* src_ptr,
712
- uint8_t* dst_ptr,
713
- int dst_width);
714
- void ScaleRowUp2_Bilinear_AVX2(const uint8_t* src_ptr,
715
- ptrdiff_t src_stride,
716
- uint8_t* dst_ptr,
717
- ptrdiff_t dst_stride,
718
- int dst_width);
719
- void ScaleRowUp2_Linear_12_AVX2(const uint16_t* src_ptr,
720
- uint16_t* dst_ptr,
721
- int dst_width);
722
- void ScaleRowUp2_Bilinear_12_AVX2(const uint16_t* src_ptr,
723
- ptrdiff_t src_stride,
724
- uint16_t* dst_ptr,
725
- ptrdiff_t dst_stride,
726
- int dst_width);
727
- void ScaleRowUp2_Linear_16_AVX2(const uint16_t* src_ptr,
728
- uint16_t* dst_ptr,
729
- int dst_width);
730
- void ScaleRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
731
- ptrdiff_t src_stride,
732
- uint16_t* dst_ptr,
733
- ptrdiff_t dst_stride,
734
- int dst_width);
735
- void ScaleRowUp2_Linear_Any_SSE2(const uint8_t* src_ptr,
736
- uint8_t* dst_ptr,
737
- int dst_width);
738
- void ScaleRowUp2_Bilinear_Any_SSE2(const uint8_t* src_ptr,
739
- ptrdiff_t src_stride,
740
- uint8_t* dst_ptr,
741
- ptrdiff_t dst_stride,
742
- int dst_width);
743
- void ScaleRowUp2_Linear_12_Any_SSSE3(const uint16_t* src_ptr,
744
- uint16_t* dst_ptr,
745
- int dst_width);
746
- void ScaleRowUp2_Bilinear_12_Any_SSSE3(const uint16_t* src_ptr,
747
- ptrdiff_t src_stride,
748
- uint16_t* dst_ptr,
749
- ptrdiff_t dst_stride,
750
- int dst_width);
751
- void ScaleRowUp2_Linear_16_Any_SSE2(const uint16_t* src_ptr,
752
- uint16_t* dst_ptr,
753
- int dst_width);
754
- void ScaleRowUp2_Bilinear_16_Any_SSE2(const uint16_t* src_ptr,
755
- ptrdiff_t src_stride,
756
- uint16_t* dst_ptr,
757
- ptrdiff_t dst_stride,
758
- int dst_width);
759
- void ScaleRowUp2_Linear_Any_SSSE3(const uint8_t* src_ptr,
760
- uint8_t* dst_ptr,
761
- int dst_width);
762
- void ScaleRowUp2_Bilinear_Any_SSSE3(const uint8_t* src_ptr,
763
- ptrdiff_t src_stride,
764
- uint8_t* dst_ptr,
765
- ptrdiff_t dst_stride,
766
- int dst_width);
767
- void ScaleRowUp2_Linear_Any_AVX2(const uint8_t* src_ptr,
768
- uint8_t* dst_ptr,
769
- int dst_width);
770
- void ScaleRowUp2_Bilinear_Any_AVX2(const uint8_t* src_ptr,
771
- ptrdiff_t src_stride,
772
- uint8_t* dst_ptr,
773
- ptrdiff_t dst_stride,
774
- int dst_width);
775
- void ScaleRowUp2_Linear_12_Any_AVX2(const uint16_t* src_ptr,
776
- uint16_t* dst_ptr,
777
- int dst_width);
778
- void ScaleRowUp2_Bilinear_12_Any_AVX2(const uint16_t* src_ptr,
779
- ptrdiff_t src_stride,
780
- uint16_t* dst_ptr,
781
- ptrdiff_t dst_stride,
782
- int dst_width);
783
- void ScaleRowUp2_Linear_16_Any_AVX2(const uint16_t* src_ptr,
784
- uint16_t* dst_ptr,
785
- int dst_width);
786
- void ScaleRowUp2_Bilinear_16_Any_AVX2(const uint16_t* src_ptr,
787
- ptrdiff_t src_stride,
788
- uint16_t* dst_ptr,
789
- ptrdiff_t dst_stride,
790
- int dst_width);
791
-
792
- void ScaleRowDown2_Any_SSSE3(const uint8_t* src_ptr,
793
- ptrdiff_t src_stride,
794
- uint8_t* dst_ptr,
795
- int dst_width);
796
- void ScaleRowDown2Linear_Any_SSSE3(const uint8_t* src_ptr,
797
- ptrdiff_t src_stride,
798
- uint8_t* dst_ptr,
799
- int dst_width);
800
- void ScaleRowDown2Box_Any_SSSE3(const uint8_t* src_ptr,
801
- ptrdiff_t src_stride,
802
- uint8_t* dst_ptr,
803
- int dst_width);
804
- void ScaleRowDown2Box_Odd_SSSE3(const uint8_t* src_ptr,
805
- ptrdiff_t src_stride,
806
- uint8_t* dst_ptr,
807
- int dst_width);
808
- void ScaleRowDown2_Any_AVX2(const uint8_t* src_ptr,
809
- ptrdiff_t src_stride,
810
- uint8_t* dst_ptr,
811
- int dst_width);
812
- void ScaleRowDown2Linear_Any_AVX2(const uint8_t* src_ptr,
813
- ptrdiff_t src_stride,
814
- uint8_t* dst_ptr,
815
- int dst_width);
816
- void ScaleRowDown2Box_Any_AVX2(const uint8_t* src_ptr,
817
- ptrdiff_t src_stride,
818
- uint8_t* dst_ptr,
819
- int dst_width);
820
- void ScaleRowDown2Box_Odd_AVX2(const uint8_t* src_ptr,
821
- ptrdiff_t src_stride,
822
- uint8_t* dst_ptr,
823
- int dst_width);
824
- void ScaleRowDown4_Any_SSSE3(const uint8_t* src_ptr,
825
- ptrdiff_t src_stride,
826
- uint8_t* dst_ptr,
827
- int dst_width);
828
- void ScaleRowDown4Box_Any_SSSE3(const uint8_t* src_ptr,
829
- ptrdiff_t src_stride,
830
- uint8_t* dst_ptr,
831
- int dst_width);
832
- void ScaleRowDown4_Any_AVX2(const uint8_t* src_ptr,
833
- ptrdiff_t src_stride,
834
- uint8_t* dst_ptr,
835
- int dst_width);
836
- void ScaleRowDown4Box_Any_AVX2(const uint8_t* src_ptr,
837
- ptrdiff_t src_stride,
838
- uint8_t* dst_ptr,
839
- int dst_width);
840
-
841
- void ScaleRowDown34_Any_SSSE3(const uint8_t* src_ptr,
842
- ptrdiff_t src_stride,
843
- uint8_t* dst_ptr,
844
- int dst_width);
845
- void ScaleRowDown34_1_Box_Any_SSSE3(const uint8_t* src_ptr,
846
- ptrdiff_t src_stride,
847
- uint8_t* dst_ptr,
848
- int dst_width);
849
- void ScaleRowDown34_0_Box_Any_SSSE3(const uint8_t* src_ptr,
850
- ptrdiff_t src_stride,
851
- uint8_t* dst_ptr,
852
- int dst_width);
853
- void ScaleRowDown38_Any_SSSE3(const uint8_t* src_ptr,
854
- ptrdiff_t src_stride,
855
- uint8_t* dst_ptr,
856
- int dst_width);
857
- void ScaleRowDown38_3_Box_Any_SSSE3(const uint8_t* src_ptr,
858
- ptrdiff_t src_stride,
859
- uint8_t* dst_ptr,
860
- int dst_width);
861
- void ScaleRowDown38_2_Box_Any_SSSE3(const uint8_t* src_ptr,
862
- ptrdiff_t src_stride,
863
- uint8_t* dst_ptr,
864
- int dst_width);
865
-
866
- void ScaleAddRow_SSE2(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
867
- void ScaleAddRow_AVX2(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
868
- void ScaleAddRow_Any_SSE2(const uint8_t* src_ptr,
869
- uint16_t* dst_ptr,
870
- int src_width);
871
- void ScaleAddRow_Any_AVX2(const uint8_t* src_ptr,
872
- uint16_t* dst_ptr,
873
- int src_width);
874
-
875
- void ScaleFilterCols_SSSE3(uint8_t* dst_ptr,
876
- const uint8_t* src_ptr,
877
- int dst_width,
878
- int x,
879
- int dx);
880
- void ScaleColsUp2_SSE2(uint8_t* dst_ptr,
881
- const uint8_t* src_ptr,
882
- int dst_width,
883
- int x,
884
- int dx);
885
-
886
- // ARGB Column functions
887
- void ScaleARGBCols_SSE2(uint8_t* dst_argb,
888
- const uint8_t* src_argb,
889
- int dst_width,
890
- int x,
891
- int dx);
892
- void ScaleARGBFilterCols_SSSE3(uint8_t* dst_argb,
893
- const uint8_t* src_argb,
894
- int dst_width,
895
- int x,
896
- int dx);
897
- void ScaleARGBColsUp2_SSE2(uint8_t* dst_argb,
898
- const uint8_t* src_argb,
899
- int dst_width,
900
- int x,
901
- int dx);
902
- void ScaleARGBFilterCols_NEON(uint8_t* dst_argb,
903
- const uint8_t* src_argb,
904
- int dst_width,
905
- int x,
906
- int dx);
907
- void ScaleARGBCols_NEON(uint8_t* dst_argb,
908
- const uint8_t* src_argb,
909
- int dst_width,
910
- int x,
911
- int dx);
912
- void ScaleARGBFilterCols_Any_NEON(uint8_t* dst_ptr,
913
- const uint8_t* src_ptr,
914
- int dst_width,
915
- int x,
916
- int dx);
917
- void ScaleARGBCols_Any_NEON(uint8_t* dst_ptr,
918
- const uint8_t* src_ptr,
919
- int dst_width,
920
- int x,
921
- int dx);
922
- void ScaleARGBFilterCols_RVV(uint8_t* dst_argb,
923
- const uint8_t* src_argb,
924
- int dst_width,
925
- int x,
926
- int dx);
927
-
928
- // ARGB Row functions
929
- void ScaleARGBRowDown2_SSE2(const uint8_t* src_argb,
930
- ptrdiff_t src_stride,
931
- uint8_t* dst_argb,
932
- int dst_width);
933
- void ScaleARGBRowDown2Linear_SSE2(const uint8_t* src_argb,
934
- ptrdiff_t src_stride,
935
- uint8_t* dst_argb,
936
- int dst_width);
937
- void ScaleARGBRowDown2Box_SSE2(const uint8_t* src_argb,
938
- ptrdiff_t src_stride,
939
- uint8_t* dst_argb,
940
- int dst_width);
941
- void ScaleARGBRowDown2_NEON(const uint8_t* src_ptr,
942
- ptrdiff_t src_stride,
943
- uint8_t* dst,
944
- int dst_width);
945
- void ScaleARGBRowDown2_SME(const uint8_t* src_ptr,
946
- ptrdiff_t src_stride,
947
- uint8_t* dst,
948
- int dst_width);
949
- void ScaleARGBRowDown2Linear_NEON(const uint8_t* src_argb,
950
- ptrdiff_t src_stride,
951
- uint8_t* dst_argb,
952
- int dst_width);
953
- void ScaleARGBRowDown2Linear_SME(const uint8_t* src_argb,
954
- ptrdiff_t src_stride,
955
- uint8_t* dst_argb,
956
- int dst_width);
957
- void ScaleARGBRowDown2Box_NEON(const uint8_t* src_ptr,
958
- ptrdiff_t src_stride,
959
- uint8_t* dst,
960
- int dst_width);
961
- void ScaleARGBRowDown2Box_SME(const uint8_t* src_ptr,
962
- ptrdiff_t src_stride,
963
- uint8_t* dst,
964
- int dst_width);
965
- void ScaleARGBRowDown2_RVV(const uint8_t* src_argb,
966
- ptrdiff_t src_stride,
967
- uint8_t* dst_argb,
968
- int dst_width);
969
- void ScaleARGBRowDown2Linear_RVV(const uint8_t* src_argb,
970
- ptrdiff_t src_stride,
971
- uint8_t* dst_argb,
972
- int dst_width);
973
- void ScaleARGBRowDown2Box_RVV(const uint8_t* src_argb,
974
- ptrdiff_t src_stride,
975
- uint8_t* dst_argb,
976
- int dst_width);
977
- void ScaleARGBRowDown2_LSX(const uint8_t* src_argb,
978
- ptrdiff_t src_stride,
979
- uint8_t* dst_argb,
980
- int dst_width);
981
- void ScaleARGBRowDown2Linear_LSX(const uint8_t* src_argb,
982
- ptrdiff_t src_stride,
983
- uint8_t* dst_argb,
984
- int dst_width);
985
- void ScaleARGBRowDown2Box_LSX(const uint8_t* src_argb,
986
- ptrdiff_t src_stride,
987
- uint8_t* dst_argb,
988
- int dst_width);
989
- void ScaleARGBRowDown2_Any_SSE2(const uint8_t* src_ptr,
990
- ptrdiff_t src_stride,
991
- uint8_t* dst_ptr,
992
- int dst_width);
993
- void ScaleARGBRowDown2Linear_Any_SSE2(const uint8_t* src_ptr,
994
- ptrdiff_t src_stride,
995
- uint8_t* dst_ptr,
996
- int dst_width);
997
- void ScaleARGBRowDown2Box_Any_SSE2(const uint8_t* src_ptr,
998
- ptrdiff_t src_stride,
999
- uint8_t* dst_ptr,
1000
- int dst_width);
1001
- void ScaleARGBRowDown2_Any_NEON(const uint8_t* src_ptr,
1002
- ptrdiff_t src_stride,
1003
- uint8_t* dst_ptr,
1004
- int dst_width);
1005
- void ScaleARGBRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
1006
- ptrdiff_t src_stride,
1007
- uint8_t* dst_ptr,
1008
- int dst_width);
1009
- void ScaleARGBRowDown2Box_Any_NEON(const uint8_t* src_ptr,
1010
- ptrdiff_t src_stride,
1011
- uint8_t* dst_ptr,
1012
- int dst_width);
1013
- void ScaleARGBRowDown2_Any_LSX(const uint8_t* src_ptr,
1014
- ptrdiff_t src_stride,
1015
- uint8_t* dst_ptr,
1016
- int dst_width);
1017
- void ScaleARGBRowDown2Linear_Any_LSX(const uint8_t* src_ptr,
1018
- ptrdiff_t src_stride,
1019
- uint8_t* dst_ptr,
1020
- int dst_width);
1021
- void ScaleARGBRowDown2Box_Any_LSX(const uint8_t* src_ptr,
1022
- ptrdiff_t src_stride,
1023
- uint8_t* dst_ptr,
1024
- int dst_width);
1025
- void ScaleARGBRowDownEven_SSE2(const uint8_t* src_argb,
1026
- ptrdiff_t src_stride,
1027
- int src_stepx,
1028
- uint8_t* dst_argb,
1029
- int dst_width);
1030
- void ScaleARGBRowDownEvenBox_SSE2(const uint8_t* src_argb,
1031
- ptrdiff_t src_stride,
1032
- int src_stepx,
1033
- uint8_t* dst_argb,
1034
- int dst_width);
1035
- void ScaleARGBRowDownEven_NEON(const uint8_t* src_argb,
1036
- ptrdiff_t src_stride,
1037
- int src_stepx,
1038
- uint8_t* dst_argb,
1039
- int dst_width);
1040
- void ScaleARGBRowDownEvenBox_NEON(const uint8_t* src_argb,
1041
- ptrdiff_t src_stride,
1042
- int src_stepx,
1043
- uint8_t* dst_argb,
1044
- int dst_width);
1045
- void ScaleARGBRowDownEven_LSX(const uint8_t* src_argb,
1046
- ptrdiff_t src_stride,
1047
- int32_t src_stepx,
1048
- uint8_t* dst_argb,
1049
- int dst_width);
1050
- void ScaleARGBRowDownEvenBox_LSX(const uint8_t* src_argb,
1051
- ptrdiff_t src_stride,
1052
- int src_stepx,
1053
- uint8_t* dst_argb,
1054
- int dst_width);
1055
- void ScaleARGBRowDownEven_RVV(const uint8_t* src_argb,
1056
- ptrdiff_t src_stride,
1057
- int32_t src_stepx,
1058
- uint8_t* dst_argb,
1059
- int dst_width);
1060
- void ScaleARGBRowDownEvenBox_RVV(const uint8_t* src_argb,
1061
- ptrdiff_t src_stride,
1062
- int src_stepx,
1063
- uint8_t* dst_argb,
1064
- int dst_width);
1065
- void ScaleARGBRowDownEven_Any_SSE2(const uint8_t* src_ptr,
1066
- ptrdiff_t src_stride,
1067
- int src_stepx,
1068
- uint8_t* dst_ptr,
1069
- int dst_width);
1070
- void ScaleARGBRowDownEvenBox_Any_SSE2(const uint8_t* src_ptr,
1071
- ptrdiff_t src_stride,
1072
- int src_stepx,
1073
- uint8_t* dst_ptr,
1074
- int dst_width);
1075
- void ScaleARGBRowDownEven_Any_NEON(const uint8_t* src_ptr,
1076
- ptrdiff_t src_stride,
1077
- int src_stepx,
1078
- uint8_t* dst_ptr,
1079
- int dst_width);
1080
- void ScaleARGBRowDownEvenBox_Any_NEON(const uint8_t* src_ptr,
1081
- ptrdiff_t src_stride,
1082
- int src_stepx,
1083
- uint8_t* dst_ptr,
1084
- int dst_width);
1085
- void ScaleARGBRowDownEven_Any_LSX(const uint8_t* src_ptr,
1086
- ptrdiff_t src_stride,
1087
- int32_t src_stepx,
1088
- uint8_t* dst_ptr,
1089
- int dst_width);
1090
- void ScaleARGBRowDownEvenBox_Any_LSX(const uint8_t* src_ptr,
1091
- ptrdiff_t src_stride,
1092
- int src_stepx,
1093
- uint8_t* dst_ptr,
1094
- int dst_width);
1095
-
1096
- // UV Row functions
1097
- void ScaleUVRowDown2_SSSE3(const uint8_t* src_ptr,
1098
- ptrdiff_t src_stride,
1099
- uint8_t* dst_uv,
1100
- int dst_width);
1101
- void ScaleUVRowDown2Linear_SSSE3(const uint8_t* src_ptr,
1102
- ptrdiff_t src_stride,
1103
- uint8_t* dst_uv,
1104
- int dst_width);
1105
- void ScaleUVRowDown2Box_SSSE3(const uint8_t* src_ptr,
1106
- ptrdiff_t src_stride,
1107
- uint8_t* dst_uv,
1108
- int dst_width);
1109
- void ScaleUVRowDown2Box_AVX2(const uint8_t* src_ptr,
1110
- ptrdiff_t src_stride,
1111
- uint8_t* dst_uv,
1112
- int dst_width);
1113
- void ScaleUVRowDown2_NEON(const uint8_t* src_ptr,
1114
- ptrdiff_t src_stride,
1115
- uint8_t* dst,
1116
- int dst_width);
1117
- void ScaleUVRowDown2_SME(const uint8_t* src_ptr,
1118
- ptrdiff_t src_stride,
1119
- uint8_t* dst,
1120
- int dst_width);
1121
- void ScaleUVRowDown2Linear_NEON(const uint8_t* src_ptr,
1122
- ptrdiff_t src_stride,
1123
- uint8_t* dst_uv,
1124
- int dst_width);
1125
- void ScaleUVRowDown2Linear_SME(const uint8_t* src_ptr,
1126
- ptrdiff_t src_stride,
1127
- uint8_t* dst_uv,
1128
- int dst_width);
1129
- void ScaleUVRowDown2Box_NEON(const uint8_t* src_ptr,
1130
- ptrdiff_t src_stride,
1131
- uint8_t* dst,
1132
- int dst_width);
1133
- void ScaleUVRowDown2Box_SME(const uint8_t* src_ptr,
1134
- ptrdiff_t src_stride,
1135
- uint8_t* dst,
1136
- int dst_width);
1137
- void ScaleUVRowDown2_RVV(const uint8_t* src_ptr,
1138
- ptrdiff_t src_stride,
1139
- uint8_t* dst_uv,
1140
- int dst_width);
1141
- void ScaleUVRowDown2Linear_RVV(const uint8_t* src_ptr,
1142
- ptrdiff_t src_stride,
1143
- uint8_t* dst_uv,
1144
- int dst_width);
1145
- void ScaleUVRowDown2Box_RVV(const uint8_t* src_ptr,
1146
- ptrdiff_t src_stride,
1147
- uint8_t* dst,
1148
- int dst_width);
1149
- void ScaleUVRowDown2_Any_SSSE3(const uint8_t* src_ptr,
1150
- ptrdiff_t src_stride,
1151
- uint8_t* dst_ptr,
1152
- int dst_width);
1153
- void ScaleUVRowDown2Linear_Any_SSSE3(const uint8_t* src_ptr,
1154
- ptrdiff_t src_stride,
1155
- uint8_t* dst_ptr,
1156
- int dst_width);
1157
- void ScaleUVRowDown2Box_Any_SSSE3(const uint8_t* src_ptr,
1158
- ptrdiff_t src_stride,
1159
- uint8_t* dst_ptr,
1160
- int dst_width);
1161
- void ScaleUVRowDown2Box_Any_AVX2(const uint8_t* src_ptr,
1162
- ptrdiff_t src_stride,
1163
- uint8_t* dst_ptr,
1164
- int dst_width);
1165
- void ScaleUVRowDown2_Any_NEON(const uint8_t* src_ptr,
1166
- ptrdiff_t src_stride,
1167
- uint8_t* dst_ptr,
1168
- int dst_width);
1169
- void ScaleUVRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
1170
- ptrdiff_t src_stride,
1171
- uint8_t* dst_ptr,
1172
- int dst_width);
1173
- void ScaleUVRowDown2Box_Any_NEON(const uint8_t* src_ptr,
1174
- ptrdiff_t src_stride,
1175
- uint8_t* dst_ptr,
1176
- int dst_width);
1177
- void ScaleUVRowDownEven_SSSE3(const uint8_t* src_ptr,
1178
- ptrdiff_t src_stride,
1179
- int src_stepx,
1180
- uint8_t* dst_uv,
1181
- int dst_width);
1182
- void ScaleUVRowDownEvenBox_SSSE3(const uint8_t* src_ptr,
1183
- ptrdiff_t src_stride,
1184
- int src_stepx,
1185
- uint8_t* dst_uv,
1186
- int dst_width);
1187
- void ScaleUVRowDownEven_NEON(const uint8_t* src_ptr,
1188
- ptrdiff_t src_stride,
1189
- int src_stepx,
1190
- uint8_t* dst_uv,
1191
- int dst_width);
1192
- void ScaleUVRowDownEvenBox_NEON(const uint8_t* src_ptr,
1193
- ptrdiff_t src_stride,
1194
- int src_stepx,
1195
- uint8_t* dst_uv,
1196
- int dst_width);
1197
- void ScaleUVRowDown4_RVV(const uint8_t* src_ptr,
1198
- ptrdiff_t src_stride,
1199
- int32_t src_stepx,
1200
- uint8_t* dst_uv,
1201
- int dst_width);
1202
- void ScaleUVRowDownEven_RVV(const uint8_t* src_ptr,
1203
- ptrdiff_t src_stride,
1204
- int32_t src_stepx,
1205
- uint8_t* dst_uv,
1206
- int dst_width);
1207
- void ScaleUVRowDownEven_Any_SSSE3(const uint8_t* src_ptr,
1208
- ptrdiff_t src_stride,
1209
- int src_stepx,
1210
- uint8_t* dst_ptr,
1211
- int dst_width);
1212
- void ScaleUVRowDownEvenBox_Any_SSSE3(const uint8_t* src_ptr,
1213
- ptrdiff_t src_stride,
1214
- int src_stepx,
1215
- uint8_t* dst_ptr,
1216
- int dst_width);
1217
- void ScaleUVRowDownEven_Any_NEON(const uint8_t* src_ptr,
1218
- ptrdiff_t src_stride,
1219
- int src_stepx,
1220
- uint8_t* dst_ptr,
1221
- int dst_width);
1222
- void ScaleUVRowDownEvenBox_Any_NEON(const uint8_t* src_ptr,
1223
- ptrdiff_t src_stride,
1224
- int src_stepx,
1225
- uint8_t* dst_ptr,
1226
- int dst_width);
1227
-
1228
- void ScaleUVRowUp2_Linear_SSSE3(const uint8_t* src_ptr,
1229
- uint8_t* dst_ptr,
1230
- int dst_width);
1231
- void ScaleUVRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
1232
- ptrdiff_t src_stride,
1233
- uint8_t* dst_ptr,
1234
- ptrdiff_t dst_stride,
1235
- int dst_width);
1236
- void ScaleUVRowUp2_Linear_Any_SSSE3(const uint8_t* src_ptr,
1237
- uint8_t* dst_ptr,
1238
- int dst_width);
1239
- void ScaleUVRowUp2_Bilinear_Any_SSSE3(const uint8_t* src_ptr,
1240
- ptrdiff_t src_stride,
1241
- uint8_t* dst_ptr,
1242
- ptrdiff_t dst_stride,
1243
- int dst_width);
1244
- void ScaleUVRowUp2_Linear_AVX2(const uint8_t* src_ptr,
1245
- uint8_t* dst_ptr,
1246
- int dst_width);
1247
- void ScaleUVRowUp2_Bilinear_AVX2(const uint8_t* src_ptr,
1248
- ptrdiff_t src_stride,
1249
- uint8_t* dst_ptr,
1250
- ptrdiff_t dst_stride,
1251
- int dst_width);
1252
- void ScaleUVRowUp2_Linear_Any_AVX2(const uint8_t* src_ptr,
1253
- uint8_t* dst_ptr,
1254
- int dst_width);
1255
- void ScaleUVRowUp2_Bilinear_Any_AVX2(const uint8_t* src_ptr,
1256
- ptrdiff_t src_stride,
1257
- uint8_t* dst_ptr,
1258
- ptrdiff_t dst_stride,
1259
- int dst_width);
1260
- void ScaleUVRowUp2_Linear_NEON(const uint8_t* src_ptr,
1261
- uint8_t* dst_ptr,
1262
- int dst_width);
1263
- void ScaleUVRowUp2_Bilinear_NEON(const uint8_t* src_ptr,
1264
- ptrdiff_t src_stride,
1265
- uint8_t* dst_ptr,
1266
- ptrdiff_t dst_stride,
1267
- int dst_width);
1268
- void ScaleUVRowUp2_Linear_Any_NEON(const uint8_t* src_ptr,
1269
- uint8_t* dst_ptr,
1270
- int dst_width);
1271
- void ScaleUVRowUp2_Bilinear_Any_NEON(const uint8_t* src_ptr,
1272
- ptrdiff_t src_stride,
1273
- uint8_t* dst_ptr,
1274
- ptrdiff_t dst_stride,
1275
- int dst_width);
1276
- void ScaleUVRowUp2_Linear_RVV(const uint8_t* src_ptr,
1277
- uint8_t* dst_ptr,
1278
- int dst_width);
1279
- void ScaleUVRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
1280
- ptrdiff_t src_stride,
1281
- uint8_t* dst_ptr,
1282
- ptrdiff_t dst_stride,
1283
- int dst_width);
1284
- void ScaleUVRowUp2_Linear_16_SSE41(const uint16_t* src_ptr,
1285
- uint16_t* dst_ptr,
1286
- int dst_width);
1287
- void ScaleUVRowUp2_Bilinear_16_SSE41(const uint16_t* src_ptr,
1288
- ptrdiff_t src_stride,
1289
- uint16_t* dst_ptr,
1290
- ptrdiff_t dst_stride,
1291
- int dst_width);
1292
- void ScaleUVRowUp2_Linear_16_Any_SSE41(const uint16_t* src_ptr,
1293
- uint16_t* dst_ptr,
1294
- int dst_width);
1295
- void ScaleUVRowUp2_Bilinear_16_Any_SSE41(const uint16_t* src_ptr,
1296
- ptrdiff_t src_stride,
1297
- uint16_t* dst_ptr,
1298
- ptrdiff_t dst_stride,
1299
- int dst_width);
1300
- void ScaleUVRowUp2_Linear_16_AVX2(const uint16_t* src_ptr,
1301
- uint16_t* dst_ptr,
1302
- int dst_width);
1303
- void ScaleUVRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
1304
- ptrdiff_t src_stride,
1305
- uint16_t* dst_ptr,
1306
- ptrdiff_t dst_stride,
1307
- int dst_width);
1308
- void ScaleUVRowUp2_Linear_16_Any_AVX2(const uint16_t* src_ptr,
1309
- uint16_t* dst_ptr,
1310
- int dst_width);
1311
- void ScaleUVRowUp2_Bilinear_16_Any_AVX2(const uint16_t* src_ptr,
1312
- ptrdiff_t src_stride,
1313
- uint16_t* dst_ptr,
1314
- ptrdiff_t dst_stride,
1315
- int dst_width);
1316
- void ScaleUVRowUp2_Linear_16_NEON(const uint16_t* src_ptr,
1317
- uint16_t* dst_ptr,
1318
- int dst_width);
1319
- void ScaleUVRowUp2_Bilinear_16_NEON(const uint16_t* src_ptr,
1320
- ptrdiff_t src_stride,
1321
- uint16_t* dst_ptr,
1322
- ptrdiff_t dst_stride,
1323
- int dst_width);
1324
- void ScaleUVRowUp2_Linear_16_Any_NEON(const uint16_t* src_ptr,
1325
- uint16_t* dst_ptr,
1326
- int dst_width);
1327
- void ScaleUVRowUp2_Bilinear_16_Any_NEON(const uint16_t* src_ptr,
1328
- ptrdiff_t src_stride,
1329
- uint16_t* dst_ptr,
1330
- ptrdiff_t dst_stride,
1331
- int dst_width);
1332
-
1333
- // ScaleRowDown2Box also used by planar functions
1334
- // NEON/SME downscalers with interpolation.
1335
- void ScaleRowDown2_NEON(const uint8_t* src_ptr,
1336
- ptrdiff_t src_stride,
1337
- uint8_t* dst,
1338
- int dst_width);
1339
- void ScaleRowDown2_SME(const uint8_t* src_ptr,
1340
- ptrdiff_t src_stride,
1341
- uint8_t* dst,
1342
- int dst_width);
1343
- void ScaleRowDown2_16_NEON(const uint16_t* src_ptr,
1344
- ptrdiff_t src_stride,
1345
- uint16_t* dst,
1346
- int dst_width);
1347
- void ScaleRowDown2_16_SME(const uint16_t* src_ptr,
1348
- ptrdiff_t src_stride,
1349
- uint16_t* dst,
1350
- int dst_width);
1351
- void ScaleRowDown2Linear_NEON(const uint8_t* src_ptr,
1352
- ptrdiff_t src_stride,
1353
- uint8_t* dst,
1354
- int dst_width);
1355
- void ScaleRowDown2Linear_SME(const uint8_t* src_ptr,
1356
- ptrdiff_t src_stride,
1357
- uint8_t* dst,
1358
- int dst_width);
1359
- void ScaleRowDown2Linear_16_NEON(const uint16_t* src_ptr,
1360
- ptrdiff_t src_stride,
1361
- uint16_t* dst,
1362
- int dst_width);
1363
- void ScaleRowDown2Linear_16_SME(const uint16_t* src_ptr,
1364
- ptrdiff_t src_stride,
1365
- uint16_t* dst,
1366
- int dst_width);
1367
- void ScaleRowDown2Box_NEON(const uint8_t* src_ptr,
1368
- ptrdiff_t src_stride,
1369
- uint8_t* dst,
1370
- int dst_width);
1371
- void ScaleRowDown2Box_SME(const uint8_t* src_ptr,
1372
- ptrdiff_t src_stride,
1373
- uint8_t* dst,
1374
- int dst_width);
1375
- void ScaleRowDown2Box_16_NEON(const uint16_t* src_ptr,
1376
- ptrdiff_t src_stride,
1377
- uint16_t* dst,
1378
- int dst_width);
1379
- void ScaleRowDown2Box_16_SME(const uint16_t* src_ptr,
1380
- ptrdiff_t src_stride,
1381
- uint16_t* dst,
1382
- int dst_width);
1383
-
1384
- void ScaleRowDown4_NEON(const uint8_t* src_ptr,
1385
- ptrdiff_t src_stride,
1386
- uint8_t* dst_ptr,
1387
- int dst_width);
1388
- void ScaleRowDown4Box_NEON(const uint8_t* src_ptr,
1389
- ptrdiff_t src_stride,
1390
- uint8_t* dst_ptr,
1391
- int dst_width);
1392
-
1393
- // Down scale from 4 to 3 pixels. Use the neon multilane read/write
1394
- // to load up the every 4th pixel into a 4 different registers.
1395
- // Point samples 32 pixels to 24 pixels.
1396
- void ScaleRowDown34_NEON(const uint8_t* src_ptr,
1397
- ptrdiff_t src_stride,
1398
- uint8_t* dst_ptr,
1399
- int dst_width);
1400
- void ScaleRowDown34_0_Box_NEON(const uint8_t* src_ptr,
1401
- ptrdiff_t src_stride,
1402
- uint8_t* dst_ptr,
1403
- int dst_width);
1404
- void ScaleRowDown34_1_Box_NEON(const uint8_t* src_ptr,
1405
- ptrdiff_t src_stride,
1406
- uint8_t* dst_ptr,
1407
- int dst_width);
1408
-
1409
- // 32 -> 12
1410
- void ScaleRowDown38_NEON(const uint8_t* src_ptr,
1411
- ptrdiff_t src_stride,
1412
- uint8_t* dst_ptr,
1413
- int dst_width);
1414
- // 32x3 -> 12x1
1415
- void ScaleRowDown38_3_Box_NEON(const uint8_t* src_ptr,
1416
- ptrdiff_t src_stride,
1417
- uint8_t* dst_ptr,
1418
- int dst_width);
1419
- // 32x2 -> 12x1
1420
- void ScaleRowDown38_2_Box_NEON(const uint8_t* src_ptr,
1421
- ptrdiff_t src_stride,
1422
- uint8_t* dst_ptr,
1423
- int dst_width);
1424
-
1425
- void ScaleRowDown2_Any_NEON(const uint8_t* src_ptr,
1426
- ptrdiff_t src_stride,
1427
- uint8_t* dst_ptr,
1428
- int dst_width);
1429
- void ScaleRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
1430
- ptrdiff_t src_stride,
1431
- uint8_t* dst_ptr,
1432
- int dst_width);
1433
- void ScaleRowDown2Box_Any_NEON(const uint8_t* src_ptr,
1434
- ptrdiff_t src_stride,
1435
- uint8_t* dst_ptr,
1436
- int dst_width);
1437
- void ScaleRowDown2Box_Odd_NEON(const uint8_t* src_ptr,
1438
- ptrdiff_t src_stride,
1439
- uint8_t* dst_ptr,
1440
- int dst_width);
1441
- void ScaleRowDown4_Any_NEON(const uint8_t* src_ptr,
1442
- ptrdiff_t src_stride,
1443
- uint8_t* dst_ptr,
1444
- int dst_width);
1445
- void ScaleRowDown4Box_Any_NEON(const uint8_t* src_ptr,
1446
- ptrdiff_t src_stride,
1447
- uint8_t* dst_ptr,
1448
- int dst_width);
1449
- void ScaleRowDown34_Any_NEON(const uint8_t* src_ptr,
1450
- ptrdiff_t src_stride,
1451
- uint8_t* dst_ptr,
1452
- int dst_width);
1453
- void ScaleRowDown34_0_Box_Any_NEON(const uint8_t* src_ptr,
1454
- ptrdiff_t src_stride,
1455
- uint8_t* dst_ptr,
1456
- int dst_width);
1457
- void ScaleRowDown34_1_Box_Any_NEON(const uint8_t* src_ptr,
1458
- ptrdiff_t src_stride,
1459
- uint8_t* dst_ptr,
1460
- int dst_width);
1461
- // 32 -> 12
1462
- void ScaleRowDown38_Any_NEON(const uint8_t* src_ptr,
1463
- ptrdiff_t src_stride,
1464
- uint8_t* dst_ptr,
1465
- int dst_width);
1466
- // 32x3 -> 12x1
1467
- void ScaleRowDown38_3_Box_Any_NEON(const uint8_t* src_ptr,
1468
- ptrdiff_t src_stride,
1469
- uint8_t* dst_ptr,
1470
- int dst_width);
1471
- // 32x2 -> 12x1
1472
- void ScaleRowDown38_2_Box_Any_NEON(const uint8_t* src_ptr,
1473
- ptrdiff_t src_stride,
1474
- uint8_t* dst_ptr,
1475
- int dst_width);
1476
-
1477
- void ScaleRowUp2_Linear_NEON(const uint8_t* src_ptr,
1478
- uint8_t* dst_ptr,
1479
- int dst_width);
1480
- void ScaleRowUp2_Bilinear_NEON(const uint8_t* src_ptr,
1481
- ptrdiff_t src_stride,
1482
- uint8_t* dst_ptr,
1483
- ptrdiff_t dst_stride,
1484
- int dst_width);
1485
- void ScaleRowUp2_Linear_12_NEON(const uint16_t* src_ptr,
1486
- uint16_t* dst_ptr,
1487
- int dst_width);
1488
- void ScaleRowUp2_Bilinear_12_NEON(const uint16_t* src_ptr,
1489
- ptrdiff_t src_stride,
1490
- uint16_t* dst_ptr,
1491
- ptrdiff_t dst_stride,
1492
- int dst_width);
1493
- void ScaleRowUp2_Linear_16_NEON(const uint16_t* src_ptr,
1494
- uint16_t* dst_ptr,
1495
- int dst_width);
1496
- void ScaleRowUp2_Bilinear_16_NEON(const uint16_t* src_ptr,
1497
- ptrdiff_t src_stride,
1498
- uint16_t* dst_ptr,
1499
- ptrdiff_t dst_stride,
1500
- int dst_width);
1501
- void ScaleRowUp2_Linear_Any_NEON(const uint8_t* src_ptr,
1502
- uint8_t* dst_ptr,
1503
- int dst_width);
1504
- void ScaleRowUp2_Bilinear_Any_NEON(const uint8_t* src_ptr,
1505
- ptrdiff_t src_stride,
1506
- uint8_t* dst_ptr,
1507
- ptrdiff_t dst_stride,
1508
- int dst_width);
1509
- void ScaleRowUp2_Linear_12_Any_NEON(const uint16_t* src_ptr,
1510
- uint16_t* dst_ptr,
1511
- int dst_width);
1512
- void ScaleRowUp2_Bilinear_12_Any_NEON(const uint16_t* src_ptr,
1513
- ptrdiff_t src_stride,
1514
- uint16_t* dst_ptr,
1515
- ptrdiff_t dst_stride,
1516
- int dst_width);
1517
- void ScaleRowUp2_Linear_16_Any_NEON(const uint16_t* src_ptr,
1518
- uint16_t* dst_ptr,
1519
- int dst_width);
1520
- void ScaleRowUp2_Bilinear_16_Any_NEON(const uint16_t* src_ptr,
1521
- ptrdiff_t src_stride,
1522
- uint16_t* dst_ptr,
1523
- ptrdiff_t dst_stride,
1524
- int dst_width);
1525
-
1526
- void ScaleAddRow_NEON(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
1527
- void ScaleAddRow_Any_NEON(const uint8_t* src_ptr,
1528
- uint16_t* dst_ptr,
1529
- int src_width);
1530
-
1531
- void ScaleFilterCols_NEON(uint8_t* dst_ptr,
1532
- const uint8_t* src_ptr,
1533
- int dst_width,
1534
- int x,
1535
- int dx);
1536
-
1537
- void ScaleFilterCols_Any_NEON(uint8_t* dst_ptr,
1538
- const uint8_t* src_ptr,
1539
- int dst_width,
1540
- int x,
1541
- int dx);
1542
-
1543
- void ScaleRowDown2_LSX(const uint8_t* src_ptr,
1544
- ptrdiff_t src_stride,
1545
- uint8_t* dst,
1546
- int dst_width);
1547
- void ScaleRowDown2Linear_LSX(const uint8_t* src_ptr,
1548
- ptrdiff_t src_stride,
1549
- uint8_t* dst,
1550
- int dst_width);
1551
- void ScaleRowDown2Box_LSX(const uint8_t* src_ptr,
1552
- ptrdiff_t src_stride,
1553
- uint8_t* dst,
1554
- int dst_width);
1555
- void ScaleRowDown4_LSX(const uint8_t* src_ptr,
1556
- ptrdiff_t src_stride,
1557
- uint8_t* dst,
1558
- int dst_width);
1559
- void ScaleRowDown4Box_LSX(const uint8_t* src_ptr,
1560
- ptrdiff_t src_stride,
1561
- uint8_t* dst,
1562
- int dst_width);
1563
- void ScaleRowDown38_LSX(const uint8_t* src_ptr,
1564
- ptrdiff_t src_stride,
1565
- uint8_t* dst,
1566
- int dst_width);
1567
- void ScaleRowDown38_2_Box_LSX(const uint8_t* src_ptr,
1568
- ptrdiff_t src_stride,
1569
- uint8_t* dst_ptr,
1570
- int dst_width);
1571
- void ScaleRowDown38_3_Box_LSX(const uint8_t* src_ptr,
1572
- ptrdiff_t src_stride,
1573
- uint8_t* dst_ptr,
1574
- int dst_width);
1575
- void ScaleAddRow_LSX(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
1576
- void ScaleFilterCols_LSX(uint8_t* dst_ptr,
1577
- const uint8_t* src_ptr,
1578
- int dst_width,
1579
- int x,
1580
- int dx);
1581
- void ScaleARGBFilterCols_LSX(uint8_t* dst_argb,
1582
- const uint8_t* src_argb,
1583
- int dst_width,
1584
- int x,
1585
- int dx);
1586
- void ScaleARGBCols_LSX(uint8_t* dst_argb,
1587
- const uint8_t* src_argb,
1588
- int dst_width,
1589
- int x,
1590
- int dx);
1591
- void ScaleRowDown34_LSX(const uint8_t* src_ptr,
1592
- ptrdiff_t src_stride,
1593
- uint8_t* dst,
1594
- int dst_width);
1595
- void ScaleRowDown34_0_Box_LSX(const uint8_t* src_ptr,
1596
- ptrdiff_t src_stride,
1597
- uint8_t* d,
1598
- int dst_width);
1599
- void ScaleRowDown34_1_Box_LSX(const uint8_t* src_ptr,
1600
- ptrdiff_t src_stride,
1601
- uint8_t* d,
1602
- int dst_width);
1603
- void ScaleRowDown2_Any_LSX(const uint8_t* src_ptr,
1604
- ptrdiff_t src_stride,
1605
- uint8_t* dst_ptr,
1606
- int dst_width);
1607
- void ScaleRowDown2Linear_Any_LSX(const uint8_t* src_ptr,
1608
- ptrdiff_t src_stride,
1609
- uint8_t* dst_ptr,
1610
- int dst_width);
1611
- void ScaleRowDown2Box_Any_LSX(const uint8_t* src_ptr,
1612
- ptrdiff_t src_stride,
1613
- uint8_t* dst_ptr,
1614
- int dst_width);
1615
- void ScaleRowDown4_Any_LSX(const uint8_t* src_ptr,
1616
- ptrdiff_t src_stride,
1617
- uint8_t* dst_ptr,
1618
- int dst_width);
1619
- void ScaleRowDown4Box_Any_LSX(const uint8_t* src_ptr,
1620
- ptrdiff_t src_stride,
1621
- uint8_t* dst_ptr,
1622
- int dst_width);
1623
- void ScaleRowDown38_Any_LSX(const uint8_t* src_ptr,
1624
- ptrdiff_t src_stride,
1625
- uint8_t* dst_ptr,
1626
- int dst_width);
1627
- void ScaleRowDown38_2_Box_Any_LSX(const uint8_t* src_ptr,
1628
- ptrdiff_t src_stride,
1629
- uint8_t* dst_ptr,
1630
- int dst_width);
1631
- void ScaleRowDown38_3_Box_Any_LSX(const uint8_t* src_ptr,
1632
- ptrdiff_t src_stride,
1633
- uint8_t* dst_ptr,
1634
- int dst_width);
1635
- void ScaleAddRow_Any_LSX(const uint8_t* src_ptr,
1636
- uint16_t* dst_ptr,
1637
- int src_width);
1638
- void ScaleFilterCols_Any_LSX(uint8_t* dst_ptr,
1639
- const uint8_t* src_ptr,
1640
- int dst_width,
1641
- int x,
1642
- int dx);
1643
- void ScaleARGBCols_Any_LSX(uint8_t* dst_ptr,
1644
- const uint8_t* src_ptr,
1645
- int dst_width,
1646
- int x,
1647
- int dx);
1648
- void ScaleARGBFilterCols_Any_LSX(uint8_t* dst_ptr,
1649
- const uint8_t* src_ptr,
1650
- int dst_width,
1651
- int x,
1652
- int dx);
1653
- void ScaleRowDown34_Any_LSX(const uint8_t* src_ptr,
1654
- ptrdiff_t src_stride,
1655
- uint8_t* dst_ptr,
1656
- int dst_width);
1657
- void ScaleRowDown34_0_Box_Any_LSX(const uint8_t* src_ptr,
1658
- ptrdiff_t src_stride,
1659
- uint8_t* dst_ptr,
1660
- int dst_width);
1661
- void ScaleRowDown34_1_Box_Any_LSX(const uint8_t* src_ptr,
1662
- ptrdiff_t src_stride,
1663
- uint8_t* dst_ptr,
1664
- int dst_width);
1665
-
1666
- void ScaleAddRow_RVV(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
1667
- void ScaleRowDown2_RVV(const uint8_t* src_ptr,
1668
- ptrdiff_t src_stride,
1669
- uint8_t* dst,
1670
- int dst_width);
1671
- void ScaleRowDown2Linear_RVV(const uint8_t* src_ptr,
1672
- ptrdiff_t src_stride,
1673
- uint8_t* dst,
1674
- int dst_width);
1675
- void ScaleRowDown2Box_RVV(const uint8_t* src_ptr,
1676
- ptrdiff_t src_stride,
1677
- uint8_t* dst,
1678
- int dst_width);
1679
-
1680
- void ScaleRowDown4_RVV(const uint8_t* src_ptr,
1681
- ptrdiff_t src_stride,
1682
- uint8_t* dst_ptr,
1683
- int dst_width);
1684
- void ScaleRowDown4Box_RVV(const uint8_t* src_ptr,
1685
- ptrdiff_t src_stride,
1686
- uint8_t* dst_ptr,
1687
- int dst_width);
1688
- void ScaleRowDown34_RVV(const uint8_t* src_ptr,
1689
- ptrdiff_t src_stride,
1690
- uint8_t* dst_ptr,
1691
- int dst_width);
1692
- void ScaleRowDown34_0_Box_RVV(const uint8_t* src_ptr,
1693
- ptrdiff_t src_stride,
1694
- uint8_t* dst_ptr,
1695
- int dst_width);
1696
- void ScaleRowDown34_1_Box_RVV(const uint8_t* src_ptr,
1697
- ptrdiff_t src_stride,
1698
- uint8_t* dst_ptr,
1699
- int dst_width);
1700
- void ScaleRowDown38_RVV(const uint8_t* src_ptr,
1701
- ptrdiff_t src_stride,
1702
- uint8_t* dst,
1703
- int dst_width);
1704
- void ScaleRowDown38_3_Box_RVV(const uint8_t* src_ptr,
1705
- ptrdiff_t src_stride,
1706
- uint8_t* dst_ptr,
1707
- int dst_width);
1708
- void ScaleRowDown38_2_Box_RVV(const uint8_t* src_ptr,
1709
- ptrdiff_t src_stride,
1710
- uint8_t* dst_ptr,
1711
- int dst_width);
1712
-
1713
- void ScaleRowUp2_Linear_RVV(const uint8_t* src_ptr,
1714
- uint8_t* dst_ptr,
1715
- int dst_width);
1716
- void ScaleRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
1717
- ptrdiff_t src_stride,
1718
- uint8_t* dst_ptr,
1719
- ptrdiff_t dst_stride,
1720
- int dst_width);
1721
- #ifdef __cplusplus
1722
- } // extern "C"
1723
- } // namespace libyuv
1724
- #endif
1725
-
1726
- #endif // INCLUDE_LIBYUV_SCALE_ROW_H_
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
+ #ifndef INCLUDE_LIBYUV_SCALE_ROW_H_
12
+ #define INCLUDE_LIBYUV_SCALE_ROW_H_
13
+
14
+ #include "libyuv/basic_types.h"
15
+ #include "libyuv/cpu_support.h"
16
+ #include "libyuv/scale.h"
17
+
18
+ #ifdef __cplusplus
19
+ namespace libyuv {
20
+ extern "C" {
21
+ #endif
22
+
23
+ // The following are available on all x86 platforms:
24
+ #if !defined(LIBYUV_DISABLE_X86) && \
25
+ (defined(_M_IX86) || \
26
+ (defined(__x86_64__) && !defined(LIBYUV_ENABLE_ROWWIN)) || \
27
+ defined(__i386__))
28
+ #define HAS_FIXEDDIV1_X86
29
+ #define HAS_FIXEDDIV_X86
30
+ #define HAS_SCALEADDROW_SSE2
31
+ #define HAS_SCALEARGBCOLS_SSE2
32
+ #define HAS_SCALEARGBCOLSUP2_SSE2
33
+ #define HAS_SCALEARGBFILTERCOLS_SSSE3
34
+ #define HAS_SCALEARGBROWDOWN2_SSE2
35
+ #define HAS_SCALEARGBROWDOWNEVEN_SSE2
36
+ #define HAS_SCALECOLSUP2_SSE2
37
+ #define HAS_SCALEFILTERCOLS_SSSE3
38
+ #define HAS_SCALEROWDOWN2_SSSE3
39
+ #define HAS_SCALEROWDOWN34_SSSE3
40
+ #define HAS_SCALEROWDOWN38_SSSE3
41
+ #define HAS_SCALEROWDOWN4_SSSE3
42
+ #endif
43
+
44
+ // The following are available for gcc/clang x86 platforms:
45
+ // TODO(fbarchard): Port to Visual C
46
+ #if !defined(LIBYUV_DISABLE_X86) && \
47
+ (defined(__x86_64__) || defined(__i386__)) && \
48
+ !defined(LIBYUV_ENABLE_ROWWIN)
49
+ #define HAS_SCALEUVROWDOWN2BOX_SSSE3
50
+ #define HAS_SCALEROWUP2_LINEAR_SSE2
51
+ #define HAS_SCALEROWUP2_LINEAR_SSSE3
52
+ #define HAS_SCALEROWUP2_BILINEAR_SSE2
53
+ #define HAS_SCALEROWUP2_BILINEAR_SSSE3
54
+ #define HAS_SCALEROWUP2_LINEAR_12_SSSE3
55
+ #define HAS_SCALEROWUP2_BILINEAR_12_SSSE3
56
+ #define HAS_SCALEROWUP2_LINEAR_16_SSE2
57
+ #define HAS_SCALEROWUP2_BILINEAR_16_SSE2
58
+ #define HAS_SCALEUVROWUP2_LINEAR_SSSE3
59
+ #define HAS_SCALEUVROWUP2_BILINEAR_SSSE3
60
+ #define HAS_SCALEUVROWUP2_LINEAR_16_SSE41
61
+ #define HAS_SCALEUVROWUP2_BILINEAR_16_SSE41
62
+ #endif
63
+
64
+ // The following are available for gcc/clang x86 platforms, but
65
+ // require clang 3.4 or gcc 4.7.
66
+ // TODO(fbarchard): Port to Visual C
67
+ #if !defined(LIBYUV_DISABLE_X86) && \
68
+ (defined(__x86_64__) || defined(__i386__)) && \
69
+ (defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2))
70
+ #define HAS_SCALEUVROWDOWN2BOX_AVX2
71
+ #define HAS_SCALEROWUP2_LINEAR_AVX2
72
+ #define HAS_SCALEROWUP2_BILINEAR_AVX2
73
+ #define HAS_SCALEROWUP2_LINEAR_12_AVX2
74
+ #define HAS_SCALEROWUP2_BILINEAR_12_AVX2
75
+ #define HAS_SCALEROWUP2_LINEAR_16_AVX2
76
+ #define HAS_SCALEROWUP2_BILINEAR_16_AVX2
77
+ #define HAS_SCALEUVROWUP2_LINEAR_AVX2
78
+ #define HAS_SCALEUVROWUP2_BILINEAR_AVX2
79
+ #define HAS_SCALEUVROWUP2_LINEAR_16_AVX2
80
+ #define HAS_SCALEUVROWUP2_BILINEAR_16_AVX2
81
+ #endif
82
+
83
+ // The following are available on all x86 platforms, but
84
+ // require VS2012, clang 3.4 or gcc 4.7.
85
+ // The code supports NaCL but requires a new compiler and validator.
86
+ #if !defined(LIBYUV_DISABLE_X86) && \
87
+ (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2) || \
88
+ defined(GCC_HAS_AVX2))
89
+ #define HAS_SCALEADDROW_AVX2
90
+ #define HAS_SCALEROWDOWN2_AVX2
91
+ #define HAS_SCALEROWDOWN4_AVX2
92
+ #endif
93
+
94
+ // The following are available on Neon platforms:
95
+ #if !defined(LIBYUV_DISABLE_NEON) && \
96
+ (defined(__ARM_NEON__) || defined(LIBYUV_NEON) || defined(__aarch64__))
97
+ #define HAS_SCALEADDROW_NEON
98
+ #define HAS_SCALEARGBCOLS_NEON
99
+ #define HAS_SCALEARGBFILTERCOLS_NEON
100
+ #define HAS_SCALEARGBROWDOWN2_NEON
101
+ #define HAS_SCALEARGBROWDOWNEVEN_NEON
102
+ #define HAS_SCALEFILTERCOLS_NEON
103
+ #define HAS_SCALEROWDOWN2_NEON
104
+ #define HAS_SCALEROWDOWN34_NEON
105
+ #define HAS_SCALEROWDOWN38_NEON
106
+ #define HAS_SCALEROWDOWN4_NEON
107
+ #define HAS_SCALEUVROWDOWN2_NEON
108
+ #define HAS_SCALEUVROWDOWN2LINEAR_NEON
109
+ #define HAS_SCALEUVROWDOWN2BOX_NEON
110
+ #define HAS_SCALEUVROWDOWNEVEN_NEON
111
+ #define HAS_SCALEROWUP2_LINEAR_NEON
112
+ #define HAS_SCALEROWUP2_BILINEAR_NEON
113
+ #define HAS_SCALEROWUP2_LINEAR_12_NEON
114
+ #define HAS_SCALEROWUP2_BILINEAR_12_NEON
115
+ #define HAS_SCALEROWUP2_LINEAR_16_NEON
116
+ #define HAS_SCALEROWUP2_BILINEAR_16_NEON
117
+ #define HAS_SCALEUVROWUP2_LINEAR_NEON
118
+ #define HAS_SCALEUVROWUP2_BILINEAR_NEON
119
+ #define HAS_SCALEUVROWUP2_LINEAR_16_NEON
120
+ #define HAS_SCALEUVROWUP2_BILINEAR_16_NEON
121
+ #endif
122
+
123
+ // The following are available on AArch64 Neon platforms:
124
+ #if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__)
125
+ #define HAS_SCALEROWDOWN2_16_NEON
126
+ #endif
127
+
128
+ // The following are available on AArch64 SME platforms:
129
+ #if !defined(LIBYUV_DISABLE_SME) && defined(CLANG_HAS_SME) && \
130
+ defined(__aarch64__)
131
+ #define HAS_SCALEARGBROWDOWN2_SME
132
+ #define HAS_SCALEROWDOWN2_16_SME
133
+ #define HAS_SCALEROWDOWN2_SME
134
+ #define HAS_SCALEUVROWDOWN2BOX_SME
135
+ #define HAS_SCALEUVROWDOWN2LINEAR_SME
136
+ #define HAS_SCALEUVROWDOWN2_SME
137
+ #endif
138
+
139
+ #if !defined(LIBYUV_DISABLE_LSX) && defined(__loongarch_sx)
140
+ #define HAS_SCALEARGBROWDOWN2_LSX
141
+ #define HAS_SCALEARGBROWDOWNEVEN_LSX
142
+ #define HAS_SCALEROWDOWN2_LSX
143
+ #define HAS_SCALEROWDOWN4_LSX
144
+ #define HAS_SCALEROWDOWN38_LSX
145
+ #define HAS_SCALEFILTERCOLS_LSX
146
+ #define HAS_SCALEADDROW_LSX
147
+ #define HAS_SCALEARGBCOLS_LSX
148
+ #define HAS_SCALEARGBFILTERCOLS_LSX
149
+ #define HAS_SCALEROWDOWN34_LSX
150
+ #endif
151
+
152
+ // The following are available on RVV with 64 bit elements
153
+ // TODO: Update compiler to support 64 bit
154
+ #if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
155
+ defined(__riscv_zve64x)
156
+ #define HAS_SCALEUVROWDOWN4_RVV
157
+ #define HAS_SCALEARGBROWDOWN2_RVV
158
+ #endif
159
+
160
+ #if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
161
+ defined(__riscv_v_intrinsic)
162
+ // The following are available on RVV v0.11 and RVV v1.0
163
+ // TODO: Port to RVV v0.12
164
+ #if __riscv_v_intrinsic == 11000 || __riscv_v_intrinsic >= 100000
165
+ #define HAS_SCALEROWDOWN34_0_BOX_RVV
166
+ #define HAS_SCALEROWDOWN34_1_BOX_RVV
167
+ #define HAS_SCALEROWDOWN38_2_BOX_RVV
168
+ #define HAS_SCALEROWDOWN38_3_BOX_RVV
169
+ #define HAS_SCALEUVROWUP2_BILINEAR_RVV
170
+ #define HAS_SCALEUVROWUP2_LINEAR_RVV
171
+ #define HAS_SCALEROWDOWN34_RVV
172
+ #define HAS_SCALEROWDOWN38_RVV
173
+ #define HAS_SCALEROWUP2_BILINEAR_RVV
174
+ #define HAS_SCALEROWUP2_LINEAR_RVV
175
+
176
+ #define HAS_SCALEARGBROWDOWN2BOX_RVV
177
+ #define HAS_SCALEARGBROWDOWN2LINEAR_RVV
178
+ #define HAS_SCALEARGBROWDOWNEVENBOX_RVV
179
+ #define HAS_SCALEROWDOWN2BOX_RVV
180
+ #define HAS_SCALEADDROW_RVV
181
+ // TODO: Test ScaleARGBRowDownEven_RVV and enable it
182
+ // #define HAS_SCALEARGBROWDOWNEVEN_RVV
183
+ #define HAS_SCALEUVROWDOWNEVEN_RVV
184
+ #define HAS_SCALEROWDOWN2_RVV
185
+ #define HAS_SCALEROWDOWN2LINEAR_RVV
186
+ #define HAS_SCALEROWDOWN4_RVV
187
+ #define HAS_SCALEROWDOWN4BOX_RVV
188
+ #define HAS_SCALEUVROWDOWN2_RVV
189
+ #define HAS_SCALEUVROWDOWN2BOX_RVV
190
+ #define HAS_SCALEUVROWDOWN2LINEAR_RVV
191
+ #endif
192
+
193
+ // The following are available on RVV v0.11
194
+ #if __riscv_v_intrinsic == 11000
195
+ #define HAS_SCALEARGBFILTERCOLS_RVV
196
+ #endif
197
+ #endif
198
+
199
+ // Scale ARGB vertically with bilinear interpolation.
200
+ void ScalePlaneVertical(int src_height,
201
+ int dst_width,
202
+ int dst_height,
203
+ int src_stride,
204
+ int dst_stride,
205
+ const uint8_t* src_argb,
206
+ uint8_t* dst_argb,
207
+ int x,
208
+ int y,
209
+ int dy,
210
+ int bpp,
211
+ enum FilterMode filtering);
212
+
213
+ void ScalePlaneVertical_16(int src_height,
214
+ int dst_width,
215
+ int dst_height,
216
+ int src_stride,
217
+ int dst_stride,
218
+ const uint16_t* src_argb,
219
+ uint16_t* dst_argb,
220
+ int x,
221
+ int y,
222
+ int dy,
223
+ int wpp,
224
+ enum FilterMode filtering);
225
+
226
+ void ScalePlaneVertical_16To8(int src_height,
227
+ int dst_width,
228
+ int dst_height,
229
+ int src_stride,
230
+ int dst_stride,
231
+ const uint16_t* src_argb,
232
+ uint8_t* dst_argb,
233
+ int x,
234
+ int y,
235
+ int dy,
236
+ int wpp,
237
+ int scale,
238
+ enum FilterMode filtering);
239
+
240
+ void ScalePlaneDown2_16To8(int src_width,
241
+ int src_height,
242
+ int dst_width,
243
+ int dst_height,
244
+ int src_stride,
245
+ int dst_stride,
246
+ const uint16_t* src_ptr,
247
+ uint8_t* dst_ptr,
248
+ int scale,
249
+ enum FilterMode filtering);
250
+
251
+ // Simplify the filtering based on scale factors.
252
+ enum FilterMode ScaleFilterReduce(int src_width,
253
+ int src_height,
254
+ int dst_width,
255
+ int dst_height,
256
+ enum FilterMode filtering);
257
+
258
+ // Divide num by div and return as 16.16 fixed point result.
259
+ int FixedDiv_C(int num, int div);
260
+ int FixedDiv_X86(int num, int div);
261
+ // Divide num - 1 by div - 1 and return as 16.16 fixed point result.
262
+ int FixedDiv1_C(int num, int div);
263
+ int FixedDiv1_X86(int num, int div);
264
+ #ifdef HAS_FIXEDDIV_X86
265
+ #define FixedDiv FixedDiv_X86
266
+ #define FixedDiv1 FixedDiv1_X86
267
+ #else
268
+ #define FixedDiv FixedDiv_C
269
+ #define FixedDiv1 FixedDiv1_C
270
+ #endif
271
+
272
+ // Compute slope values for stepping.
273
+ void ScaleSlope(int src_width,
274
+ int src_height,
275
+ int dst_width,
276
+ int dst_height,
277
+ enum FilterMode filtering,
278
+ int* x,
279
+ int* y,
280
+ int* dx,
281
+ int* dy);
282
+
283
+ void ScaleRowDown2_C(const uint8_t* src_ptr,
284
+ ptrdiff_t src_stride,
285
+ uint8_t* dst,
286
+ int dst_width);
287
+ void ScaleRowDown2_16_C(const uint16_t* src_ptr,
288
+ ptrdiff_t src_stride,
289
+ uint16_t* dst,
290
+ int dst_width);
291
+ void ScaleRowDown2_16To8_C(const uint16_t* src_ptr,
292
+ ptrdiff_t src_stride,
293
+ uint8_t* dst,
294
+ int dst_width,
295
+ int scale);
296
+ void ScaleRowDown2_16To8_Odd_C(const uint16_t* src_ptr,
297
+ ptrdiff_t src_stride,
298
+ uint8_t* dst,
299
+ int dst_width,
300
+ int scale);
301
+ void ScaleRowDown2Linear_C(const uint8_t* src_ptr,
302
+ ptrdiff_t src_stride,
303
+ uint8_t* dst,
304
+ int dst_width);
305
+ void ScaleRowDown2Linear_16_C(const uint16_t* src_ptr,
306
+ ptrdiff_t src_stride,
307
+ uint16_t* dst,
308
+ int dst_width);
309
+ void ScaleRowDown2Linear_16To8_C(const uint16_t* src_ptr,
310
+ ptrdiff_t src_stride,
311
+ uint8_t* dst,
312
+ int dst_width,
313
+ int scale);
314
+ void ScaleRowDown2Linear_16To8_Odd_C(const uint16_t* src_ptr,
315
+ ptrdiff_t src_stride,
316
+ uint8_t* dst,
317
+ int dst_width,
318
+ int scale);
319
+ void ScaleRowDown2Box_C(const uint8_t* src_ptr,
320
+ ptrdiff_t src_stride,
321
+ uint8_t* dst,
322
+ int dst_width);
323
+ void ScaleRowDown2Box_Odd_C(const uint8_t* src_ptr,
324
+ ptrdiff_t src_stride,
325
+ uint8_t* dst,
326
+ int dst_width);
327
+ void ScaleRowDown2Box_16_C(const uint16_t* src_ptr,
328
+ ptrdiff_t src_stride,
329
+ uint16_t* dst,
330
+ int dst_width);
331
+ void ScaleRowDown2Box_16To8_C(const uint16_t* src_ptr,
332
+ ptrdiff_t src_stride,
333
+ uint8_t* dst,
334
+ int dst_width,
335
+ int scale);
336
+ void ScaleRowDown2Box_16To8_Odd_C(const uint16_t* src_ptr,
337
+ ptrdiff_t src_stride,
338
+ uint8_t* dst,
339
+ int dst_width,
340
+ int scale);
341
+ void ScaleRowDown4_C(const uint8_t* src_ptr,
342
+ ptrdiff_t src_stride,
343
+ uint8_t* dst,
344
+ int dst_width);
345
+ void ScaleRowDown4_16_C(const uint16_t* src_ptr,
346
+ ptrdiff_t src_stride,
347
+ uint16_t* dst,
348
+ int dst_width);
349
+ void ScaleRowDown4Box_C(const uint8_t* src_ptr,
350
+ ptrdiff_t src_stride,
351
+ uint8_t* dst,
352
+ int dst_width);
353
+ void ScaleRowDown4Box_16_C(const uint16_t* src_ptr,
354
+ ptrdiff_t src_stride,
355
+ uint16_t* dst,
356
+ int dst_width);
357
+ void ScaleRowDown34_C(const uint8_t* src_ptr,
358
+ ptrdiff_t src_stride,
359
+ uint8_t* dst,
360
+ int dst_width);
361
+ void ScaleRowDown34_16_C(const uint16_t* src_ptr,
362
+ ptrdiff_t src_stride,
363
+ uint16_t* dst,
364
+ int dst_width);
365
+ void ScaleRowDown34_0_Box_C(const uint8_t* src_ptr,
366
+ ptrdiff_t src_stride,
367
+ uint8_t* d,
368
+ int dst_width);
369
+ void ScaleRowDown34_0_Box_16_C(const uint16_t* src_ptr,
370
+ ptrdiff_t src_stride,
371
+ uint16_t* d,
372
+ int dst_width);
373
+ void ScaleRowDown34_1_Box_C(const uint8_t* src_ptr,
374
+ ptrdiff_t src_stride,
375
+ uint8_t* d,
376
+ int dst_width);
377
+ void ScaleRowDown34_1_Box_16_C(const uint16_t* src_ptr,
378
+ ptrdiff_t src_stride,
379
+ uint16_t* d,
380
+ int dst_width);
381
+
382
+ void ScaleRowUp2_Linear_C(const uint8_t* src_ptr,
383
+ uint8_t* dst_ptr,
384
+ int dst_width);
385
+ void ScaleRowUp2_Bilinear_C(const uint8_t* src_ptr,
386
+ ptrdiff_t src_stride,
387
+ uint8_t* dst_ptr,
388
+ ptrdiff_t dst_stride,
389
+ int dst_width);
390
+ void ScaleRowUp2_Linear_16_C(const uint16_t* src_ptr,
391
+ uint16_t* dst_ptr,
392
+ int dst_width);
393
+ void ScaleRowUp2_Bilinear_16_C(const uint16_t* src_ptr,
394
+ ptrdiff_t src_stride,
395
+ uint16_t* dst_ptr,
396
+ ptrdiff_t dst_stride,
397
+ int dst_width);
398
+ void ScaleRowUp2_Linear_Any_C(const uint8_t* src_ptr,
399
+ uint8_t* dst_ptr,
400
+ int dst_width);
401
+ void ScaleRowUp2_Bilinear_Any_C(const uint8_t* src_ptr,
402
+ ptrdiff_t src_stride,
403
+ uint8_t* dst_ptr,
404
+ ptrdiff_t dst_stride,
405
+ int dst_width);
406
+ void ScaleRowUp2_Linear_16_Any_C(const uint16_t* src_ptr,
407
+ uint16_t* dst_ptr,
408
+ int dst_width);
409
+ void ScaleRowUp2_Bilinear_16_Any_C(const uint16_t* src_ptr,
410
+ ptrdiff_t src_stride,
411
+ uint16_t* dst_ptr,
412
+ ptrdiff_t dst_stride,
413
+ int dst_width);
414
+
415
+ void ScaleCols_C(uint8_t* dst_ptr,
416
+ const uint8_t* src_ptr,
417
+ int dst_width,
418
+ int x,
419
+ int dx);
420
+ void ScaleCols_16_C(uint16_t* dst_ptr,
421
+ const uint16_t* src_ptr,
422
+ int dst_width,
423
+ int x,
424
+ int dx);
425
+ void ScaleColsUp2_C(uint8_t* dst_ptr,
426
+ const uint8_t* src_ptr,
427
+ int dst_width,
428
+ int,
429
+ int);
430
+ void ScaleColsUp2_16_C(uint16_t* dst_ptr,
431
+ const uint16_t* src_ptr,
432
+ int dst_width,
433
+ int,
434
+ int);
435
+ void ScaleFilterCols_C(uint8_t* dst_ptr,
436
+ const uint8_t* src_ptr,
437
+ int dst_width,
438
+ int x,
439
+ int dx);
440
+ void ScaleFilterCols_16_C(uint16_t* dst_ptr,
441
+ const uint16_t* src_ptr,
442
+ int dst_width,
443
+ int x,
444
+ int dx);
445
+ void ScaleFilterCols64_C(uint8_t* dst_ptr,
446
+ const uint8_t* src_ptr,
447
+ int dst_width,
448
+ int x32,
449
+ int dx);
450
+ void ScaleFilterCols64_16_C(uint16_t* dst_ptr,
451
+ const uint16_t* src_ptr,
452
+ int dst_width,
453
+ int x32,
454
+ int dx);
455
+ void ScaleRowDown38_C(const uint8_t* src_ptr,
456
+ ptrdiff_t src_stride,
457
+ uint8_t* dst,
458
+ int dst_width);
459
+ void ScaleRowDown38_16_C(const uint16_t* src_ptr,
460
+ ptrdiff_t src_stride,
461
+ uint16_t* dst,
462
+ int dst_width);
463
+ void ScaleRowDown38_3_Box_C(const uint8_t* src_ptr,
464
+ ptrdiff_t src_stride,
465
+ uint8_t* dst_ptr,
466
+ int dst_width);
467
+ void ScaleRowDown38_3_Box_16_C(const uint16_t* src_ptr,
468
+ ptrdiff_t src_stride,
469
+ uint16_t* dst_ptr,
470
+ int dst_width);
471
+ void ScaleRowDown38_2_Box_C(const uint8_t* src_ptr,
472
+ ptrdiff_t src_stride,
473
+ uint8_t* dst_ptr,
474
+ int dst_width);
475
+ void ScaleRowDown38_2_Box_16_C(const uint16_t* src_ptr,
476
+ ptrdiff_t src_stride,
477
+ uint16_t* dst_ptr,
478
+ int dst_width);
479
+ void ScaleAddRow_C(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
480
+ void ScaleAddRow_16_C(const uint16_t* src_ptr,
481
+ uint32_t* dst_ptr,
482
+ int src_width);
483
+ void ScaleARGBRowDown2_C(const uint8_t* src_argb,
484
+ ptrdiff_t src_stride,
485
+ uint8_t* dst_argb,
486
+ int dst_width);
487
+ void ScaleARGBRowDown2Linear_C(const uint8_t* src_argb,
488
+ ptrdiff_t src_stride,
489
+ uint8_t* dst_argb,
490
+ int dst_width);
491
+ void ScaleARGBRowDown2Box_C(const uint8_t* src_argb,
492
+ ptrdiff_t src_stride,
493
+ uint8_t* dst_argb,
494
+ int dst_width);
495
+ void ScaleARGBRowDownEven_C(const uint8_t* src_argb,
496
+ ptrdiff_t src_stride,
497
+ int src_stepx,
498
+ uint8_t* dst_argb,
499
+ int dst_width);
500
+ void ScaleARGBRowDownEvenBox_C(const uint8_t* src_argb,
501
+ ptrdiff_t src_stride,
502
+ int src_stepx,
503
+ uint8_t* dst_argb,
504
+ int dst_width);
505
+ void ScaleARGBCols_C(uint8_t* dst_argb,
506
+ const uint8_t* src_argb,
507
+ int dst_width,
508
+ int x,
509
+ int dx);
510
+ void ScaleARGBCols64_C(uint8_t* dst_argb,
511
+ const uint8_t* src_argb,
512
+ int dst_width,
513
+ int x32,
514
+ int dx);
515
+ void ScaleARGBColsUp2_C(uint8_t* dst_argb,
516
+ const uint8_t* src_argb,
517
+ int dst_width,
518
+ int,
519
+ int);
520
+ void ScaleARGBFilterCols_C(uint8_t* dst_argb,
521
+ const uint8_t* src_argb,
522
+ int dst_width,
523
+ int x,
524
+ int dx);
525
+ void ScaleARGBFilterCols64_C(uint8_t* dst_argb,
526
+ const uint8_t* src_argb,
527
+ int dst_width,
528
+ int x32,
529
+ int dx);
530
+ void ScaleUVRowDown2_C(const uint8_t* src_uv,
531
+ ptrdiff_t src_stride,
532
+ uint8_t* dst_uv,
533
+ int dst_width);
534
+ void ScaleUVRowDown2Linear_C(const uint8_t* src_uv,
535
+ ptrdiff_t src_stride,
536
+ uint8_t* dst_uv,
537
+ int dst_width);
538
+ void ScaleUVRowDown2Box_C(const uint8_t* src_uv,
539
+ ptrdiff_t src_stride,
540
+ uint8_t* dst_uv,
541
+ int dst_width);
542
+ void ScaleUVRowDownEven_C(const uint8_t* src_uv,
543
+ ptrdiff_t src_stride,
544
+ int src_stepx,
545
+ uint8_t* dst_uv,
546
+ int dst_width);
547
+ void ScaleUVRowDownEvenBox_C(const uint8_t* src_uv,
548
+ ptrdiff_t src_stride,
549
+ int src_stepx,
550
+ uint8_t* dst_uv,
551
+ int dst_width);
552
+
553
+ void ScaleUVRowUp2_Linear_C(const uint8_t* src_ptr,
554
+ uint8_t* dst_ptr,
555
+ int dst_width);
556
+ void ScaleUVRowUp2_Bilinear_C(const uint8_t* src_ptr,
557
+ ptrdiff_t src_stride,
558
+ uint8_t* dst_ptr,
559
+ ptrdiff_t dst_stride,
560
+ int dst_width);
561
+ void ScaleUVRowUp2_Linear_Any_C(const uint8_t* src_ptr,
562
+ uint8_t* dst_ptr,
563
+ int dst_width);
564
+ void ScaleUVRowUp2_Bilinear_Any_C(const uint8_t* src_ptr,
565
+ ptrdiff_t src_stride,
566
+ uint8_t* dst_ptr,
567
+ ptrdiff_t dst_stride,
568
+ int dst_width);
569
+ void ScaleUVRowUp2_Linear_16_C(const uint16_t* src_ptr,
570
+ uint16_t* dst_ptr,
571
+ int dst_width);
572
+ void ScaleUVRowUp2_Bilinear_16_C(const uint16_t* src_ptr,
573
+ ptrdiff_t src_stride,
574
+ uint16_t* dst_ptr,
575
+ ptrdiff_t dst_stride,
576
+ int dst_width);
577
+ void ScaleUVRowUp2_Linear_16_Any_C(const uint16_t* src_ptr,
578
+ uint16_t* dst_ptr,
579
+ int dst_width);
580
+ void ScaleUVRowUp2_Bilinear_16_Any_C(const uint16_t* src_ptr,
581
+ ptrdiff_t src_stride,
582
+ uint16_t* dst_ptr,
583
+ ptrdiff_t dst_stride,
584
+ int dst_width);
585
+
586
+ void ScaleUVCols_C(uint8_t* dst_uv,
587
+ const uint8_t* src_uv,
588
+ int dst_width,
589
+ int x,
590
+ int dx);
591
+ void ScaleUVCols64_C(uint8_t* dst_uv,
592
+ const uint8_t* src_uv,
593
+ int dst_width,
594
+ int x32,
595
+ int dx);
596
+ void ScaleUVColsUp2_C(uint8_t* dst_uv,
597
+ const uint8_t* src_uv,
598
+ int dst_width,
599
+ int,
600
+ int);
601
+ void ScaleUVFilterCols_C(uint8_t* dst_uv,
602
+ const uint8_t* src_uv,
603
+ int dst_width,
604
+ int x,
605
+ int dx);
606
+ void ScaleUVFilterCols64_C(uint8_t* dst_uv,
607
+ const uint8_t* src_uv,
608
+ int dst_width,
609
+ int x32,
610
+ int dx);
611
+
612
+ // Specialized scalers for x86.
613
+ void ScaleRowDown2_SSSE3(const uint8_t* src_ptr,
614
+ ptrdiff_t src_stride,
615
+ uint8_t* dst_ptr,
616
+ int dst_width);
617
+ void ScaleRowDown2Linear_SSSE3(const uint8_t* src_ptr,
618
+ ptrdiff_t src_stride,
619
+ uint8_t* dst_ptr,
620
+ int dst_width);
621
+ void ScaleRowDown2Box_SSSE3(const uint8_t* src_ptr,
622
+ ptrdiff_t src_stride,
623
+ uint8_t* dst_ptr,
624
+ int dst_width);
625
+ void ScaleRowDown2_AVX2(const uint8_t* src_ptr,
626
+ ptrdiff_t src_stride,
627
+ uint8_t* dst_ptr,
628
+ int dst_width);
629
+ void ScaleRowDown2Linear_AVX2(const uint8_t* src_ptr,
630
+ ptrdiff_t src_stride,
631
+ uint8_t* dst_ptr,
632
+ int dst_width);
633
+ void ScaleRowDown2Box_AVX2(const uint8_t* src_ptr,
634
+ ptrdiff_t src_stride,
635
+ uint8_t* dst_ptr,
636
+ int dst_width);
637
+ void ScaleRowDown4_SSSE3(const uint8_t* src_ptr,
638
+ ptrdiff_t src_stride,
639
+ uint8_t* dst_ptr,
640
+ int dst_width);
641
+ void ScaleRowDown4Box_SSSE3(const uint8_t* src_ptr,
642
+ ptrdiff_t src_stride,
643
+ uint8_t* dst_ptr,
644
+ int dst_width);
645
+ void ScaleRowDown4_AVX2(const uint8_t* src_ptr,
646
+ ptrdiff_t src_stride,
647
+ uint8_t* dst_ptr,
648
+ int dst_width);
649
+ void ScaleRowDown4Box_AVX2(const uint8_t* src_ptr,
650
+ ptrdiff_t src_stride,
651
+ uint8_t* dst_ptr,
652
+ int dst_width);
653
+
654
+ void ScaleRowDown34_SSSE3(const uint8_t* src_ptr,
655
+ ptrdiff_t src_stride,
656
+ uint8_t* dst_ptr,
657
+ int dst_width);
658
+ void ScaleRowDown34_1_Box_SSSE3(const uint8_t* src_ptr,
659
+ ptrdiff_t src_stride,
660
+ uint8_t* dst_ptr,
661
+ int dst_width);
662
+ void ScaleRowDown34_0_Box_SSSE3(const uint8_t* src_ptr,
663
+ ptrdiff_t src_stride,
664
+ uint8_t* dst_ptr,
665
+ int dst_width);
666
+ void ScaleRowDown38_SSSE3(const uint8_t* src_ptr,
667
+ ptrdiff_t src_stride,
668
+ uint8_t* dst_ptr,
669
+ int dst_width);
670
+ void ScaleRowDown38_3_Box_SSSE3(const uint8_t* src_ptr,
671
+ ptrdiff_t src_stride,
672
+ uint8_t* dst_ptr,
673
+ int dst_width);
674
+ void ScaleRowDown38_2_Box_SSSE3(const uint8_t* src_ptr,
675
+ ptrdiff_t src_stride,
676
+ uint8_t* dst_ptr,
677
+ int dst_width);
678
+
679
+ void ScaleRowUp2_Linear_SSE2(const uint8_t* src_ptr,
680
+ uint8_t* dst_ptr,
681
+ int dst_width);
682
+ void ScaleRowUp2_Bilinear_SSE2(const uint8_t* src_ptr,
683
+ ptrdiff_t src_stride,
684
+ uint8_t* dst_ptr,
685
+ ptrdiff_t dst_stride,
686
+ int dst_width);
687
+ void ScaleRowUp2_Linear_12_SSSE3(const uint16_t* src_ptr,
688
+ uint16_t* dst_ptr,
689
+ int dst_width);
690
+ void ScaleRowUp2_Bilinear_12_SSSE3(const uint16_t* src_ptr,
691
+ ptrdiff_t src_stride,
692
+ uint16_t* dst_ptr,
693
+ ptrdiff_t dst_stride,
694
+ int dst_width);
695
+ void ScaleRowUp2_Linear_16_SSE2(const uint16_t* src_ptr,
696
+ uint16_t* dst_ptr,
697
+ int dst_width);
698
+ void ScaleRowUp2_Bilinear_16_SSE2(const uint16_t* src_ptr,
699
+ ptrdiff_t src_stride,
700
+ uint16_t* dst_ptr,
701
+ ptrdiff_t dst_stride,
702
+ int dst_width);
703
+ void ScaleRowUp2_Linear_SSSE3(const uint8_t* src_ptr,
704
+ uint8_t* dst_ptr,
705
+ int dst_width);
706
+ void ScaleRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
707
+ ptrdiff_t src_stride,
708
+ uint8_t* dst_ptr,
709
+ ptrdiff_t dst_stride,
710
+ int dst_width);
711
+ void ScaleRowUp2_Linear_AVX2(const uint8_t* src_ptr,
712
+ uint8_t* dst_ptr,
713
+ int dst_width);
714
+ void ScaleRowUp2_Bilinear_AVX2(const uint8_t* src_ptr,
715
+ ptrdiff_t src_stride,
716
+ uint8_t* dst_ptr,
717
+ ptrdiff_t dst_stride,
718
+ int dst_width);
719
+ void ScaleRowUp2_Linear_12_AVX2(const uint16_t* src_ptr,
720
+ uint16_t* dst_ptr,
721
+ int dst_width);
722
+ void ScaleRowUp2_Bilinear_12_AVX2(const uint16_t* src_ptr,
723
+ ptrdiff_t src_stride,
724
+ uint16_t* dst_ptr,
725
+ ptrdiff_t dst_stride,
726
+ int dst_width);
727
+ void ScaleRowUp2_Linear_16_AVX2(const uint16_t* src_ptr,
728
+ uint16_t* dst_ptr,
729
+ int dst_width);
730
+ void ScaleRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
731
+ ptrdiff_t src_stride,
732
+ uint16_t* dst_ptr,
733
+ ptrdiff_t dst_stride,
734
+ int dst_width);
735
+ void ScaleRowUp2_Linear_Any_SSE2(const uint8_t* src_ptr,
736
+ uint8_t* dst_ptr,
737
+ int dst_width);
738
+ void ScaleRowUp2_Bilinear_Any_SSE2(const uint8_t* src_ptr,
739
+ ptrdiff_t src_stride,
740
+ uint8_t* dst_ptr,
741
+ ptrdiff_t dst_stride,
742
+ int dst_width);
743
+ void ScaleRowUp2_Linear_12_Any_SSSE3(const uint16_t* src_ptr,
744
+ uint16_t* dst_ptr,
745
+ int dst_width);
746
+ void ScaleRowUp2_Bilinear_12_Any_SSSE3(const uint16_t* src_ptr,
747
+ ptrdiff_t src_stride,
748
+ uint16_t* dst_ptr,
749
+ ptrdiff_t dst_stride,
750
+ int dst_width);
751
+ void ScaleRowUp2_Linear_16_Any_SSE2(const uint16_t* src_ptr,
752
+ uint16_t* dst_ptr,
753
+ int dst_width);
754
+ void ScaleRowUp2_Bilinear_16_Any_SSE2(const uint16_t* src_ptr,
755
+ ptrdiff_t src_stride,
756
+ uint16_t* dst_ptr,
757
+ ptrdiff_t dst_stride,
758
+ int dst_width);
759
+ void ScaleRowUp2_Linear_Any_SSSE3(const uint8_t* src_ptr,
760
+ uint8_t* dst_ptr,
761
+ int dst_width);
762
+ void ScaleRowUp2_Bilinear_Any_SSSE3(const uint8_t* src_ptr,
763
+ ptrdiff_t src_stride,
764
+ uint8_t* dst_ptr,
765
+ ptrdiff_t dst_stride,
766
+ int dst_width);
767
+ void ScaleRowUp2_Linear_Any_AVX2(const uint8_t* src_ptr,
768
+ uint8_t* dst_ptr,
769
+ int dst_width);
770
+ void ScaleRowUp2_Bilinear_Any_AVX2(const uint8_t* src_ptr,
771
+ ptrdiff_t src_stride,
772
+ uint8_t* dst_ptr,
773
+ ptrdiff_t dst_stride,
774
+ int dst_width);
775
+ void ScaleRowUp2_Linear_12_Any_AVX2(const uint16_t* src_ptr,
776
+ uint16_t* dst_ptr,
777
+ int dst_width);
778
+ void ScaleRowUp2_Bilinear_12_Any_AVX2(const uint16_t* src_ptr,
779
+ ptrdiff_t src_stride,
780
+ uint16_t* dst_ptr,
781
+ ptrdiff_t dst_stride,
782
+ int dst_width);
783
+ void ScaleRowUp2_Linear_16_Any_AVX2(const uint16_t* src_ptr,
784
+ uint16_t* dst_ptr,
785
+ int dst_width);
786
+ void ScaleRowUp2_Bilinear_16_Any_AVX2(const uint16_t* src_ptr,
787
+ ptrdiff_t src_stride,
788
+ uint16_t* dst_ptr,
789
+ ptrdiff_t dst_stride,
790
+ int dst_width);
791
+
792
+ void ScaleRowDown2_Any_SSSE3(const uint8_t* src_ptr,
793
+ ptrdiff_t src_stride,
794
+ uint8_t* dst_ptr,
795
+ int dst_width);
796
+ void ScaleRowDown2Linear_Any_SSSE3(const uint8_t* src_ptr,
797
+ ptrdiff_t src_stride,
798
+ uint8_t* dst_ptr,
799
+ int dst_width);
800
+ void ScaleRowDown2Box_Any_SSSE3(const uint8_t* src_ptr,
801
+ ptrdiff_t src_stride,
802
+ uint8_t* dst_ptr,
803
+ int dst_width);
804
+ void ScaleRowDown2Box_Odd_SSSE3(const uint8_t* src_ptr,
805
+ ptrdiff_t src_stride,
806
+ uint8_t* dst_ptr,
807
+ int dst_width);
808
+ void ScaleRowDown2_Any_AVX2(const uint8_t* src_ptr,
809
+ ptrdiff_t src_stride,
810
+ uint8_t* dst_ptr,
811
+ int dst_width);
812
+ void ScaleRowDown2Linear_Any_AVX2(const uint8_t* src_ptr,
813
+ ptrdiff_t src_stride,
814
+ uint8_t* dst_ptr,
815
+ int dst_width);
816
+ void ScaleRowDown2Box_Any_AVX2(const uint8_t* src_ptr,
817
+ ptrdiff_t src_stride,
818
+ uint8_t* dst_ptr,
819
+ int dst_width);
820
+ void ScaleRowDown2Box_Odd_AVX2(const uint8_t* src_ptr,
821
+ ptrdiff_t src_stride,
822
+ uint8_t* dst_ptr,
823
+ int dst_width);
824
+ void ScaleRowDown4_Any_SSSE3(const uint8_t* src_ptr,
825
+ ptrdiff_t src_stride,
826
+ uint8_t* dst_ptr,
827
+ int dst_width);
828
+ void ScaleRowDown4Box_Any_SSSE3(const uint8_t* src_ptr,
829
+ ptrdiff_t src_stride,
830
+ uint8_t* dst_ptr,
831
+ int dst_width);
832
+ void ScaleRowDown4_Any_AVX2(const uint8_t* src_ptr,
833
+ ptrdiff_t src_stride,
834
+ uint8_t* dst_ptr,
835
+ int dst_width);
836
+ void ScaleRowDown4Box_Any_AVX2(const uint8_t* src_ptr,
837
+ ptrdiff_t src_stride,
838
+ uint8_t* dst_ptr,
839
+ int dst_width);
840
+
841
+ void ScaleRowDown34_Any_SSSE3(const uint8_t* src_ptr,
842
+ ptrdiff_t src_stride,
843
+ uint8_t* dst_ptr,
844
+ int dst_width);
845
+ void ScaleRowDown34_1_Box_Any_SSSE3(const uint8_t* src_ptr,
846
+ ptrdiff_t src_stride,
847
+ uint8_t* dst_ptr,
848
+ int dst_width);
849
+ void ScaleRowDown34_0_Box_Any_SSSE3(const uint8_t* src_ptr,
850
+ ptrdiff_t src_stride,
851
+ uint8_t* dst_ptr,
852
+ int dst_width);
853
+ void ScaleRowDown38_Any_SSSE3(const uint8_t* src_ptr,
854
+ ptrdiff_t src_stride,
855
+ uint8_t* dst_ptr,
856
+ int dst_width);
857
+ void ScaleRowDown38_3_Box_Any_SSSE3(const uint8_t* src_ptr,
858
+ ptrdiff_t src_stride,
859
+ uint8_t* dst_ptr,
860
+ int dst_width);
861
+ void ScaleRowDown38_2_Box_Any_SSSE3(const uint8_t* src_ptr,
862
+ ptrdiff_t src_stride,
863
+ uint8_t* dst_ptr,
864
+ int dst_width);
865
+
866
+ void ScaleAddRow_SSE2(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
867
+ void ScaleAddRow_AVX2(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
868
+ void ScaleAddRow_Any_SSE2(const uint8_t* src_ptr,
869
+ uint16_t* dst_ptr,
870
+ int src_width);
871
+ void ScaleAddRow_Any_AVX2(const uint8_t* src_ptr,
872
+ uint16_t* dst_ptr,
873
+ int src_width);
874
+
875
+ void ScaleFilterCols_SSSE3(uint8_t* dst_ptr,
876
+ const uint8_t* src_ptr,
877
+ int dst_width,
878
+ int x,
879
+ int dx);
880
+ void ScaleColsUp2_SSE2(uint8_t* dst_ptr,
881
+ const uint8_t* src_ptr,
882
+ int dst_width,
883
+ int x,
884
+ int dx);
885
+
886
+ // ARGB Column functions
887
+ void ScaleARGBCols_SSE2(uint8_t* dst_argb,
888
+ const uint8_t* src_argb,
889
+ int dst_width,
890
+ int x,
891
+ int dx);
892
+ void ScaleARGBFilterCols_SSSE3(uint8_t* dst_argb,
893
+ const uint8_t* src_argb,
894
+ int dst_width,
895
+ int x,
896
+ int dx);
897
+ void ScaleARGBColsUp2_SSE2(uint8_t* dst_argb,
898
+ const uint8_t* src_argb,
899
+ int dst_width,
900
+ int x,
901
+ int dx);
902
+ void ScaleARGBFilterCols_NEON(uint8_t* dst_argb,
903
+ const uint8_t* src_argb,
904
+ int dst_width,
905
+ int x,
906
+ int dx);
907
+ void ScaleARGBCols_NEON(uint8_t* dst_argb,
908
+ const uint8_t* src_argb,
909
+ int dst_width,
910
+ int x,
911
+ int dx);
912
+ void ScaleARGBFilterCols_Any_NEON(uint8_t* dst_ptr,
913
+ const uint8_t* src_ptr,
914
+ int dst_width,
915
+ int x,
916
+ int dx);
917
+ void ScaleARGBCols_Any_NEON(uint8_t* dst_ptr,
918
+ const uint8_t* src_ptr,
919
+ int dst_width,
920
+ int x,
921
+ int dx);
922
+ void ScaleARGBFilterCols_RVV(uint8_t* dst_argb,
923
+ const uint8_t* src_argb,
924
+ int dst_width,
925
+ int x,
926
+ int dx);
927
+
928
+ // ARGB Row functions
929
+ void ScaleARGBRowDown2_SSE2(const uint8_t* src_argb,
930
+ ptrdiff_t src_stride,
931
+ uint8_t* dst_argb,
932
+ int dst_width);
933
+ void ScaleARGBRowDown2Linear_SSE2(const uint8_t* src_argb,
934
+ ptrdiff_t src_stride,
935
+ uint8_t* dst_argb,
936
+ int dst_width);
937
+ void ScaleARGBRowDown2Box_SSE2(const uint8_t* src_argb,
938
+ ptrdiff_t src_stride,
939
+ uint8_t* dst_argb,
940
+ int dst_width);
941
+ void ScaleARGBRowDown2_NEON(const uint8_t* src_ptr,
942
+ ptrdiff_t src_stride,
943
+ uint8_t* dst,
944
+ int dst_width);
945
+ void ScaleARGBRowDown2_SME(const uint8_t* src_ptr,
946
+ ptrdiff_t src_stride,
947
+ uint8_t* dst,
948
+ int dst_width);
949
+ void ScaleARGBRowDown2Linear_NEON(const uint8_t* src_argb,
950
+ ptrdiff_t src_stride,
951
+ uint8_t* dst_argb,
952
+ int dst_width);
953
+ void ScaleARGBRowDown2Linear_SME(const uint8_t* src_argb,
954
+ ptrdiff_t src_stride,
955
+ uint8_t* dst_argb,
956
+ int dst_width);
957
+ void ScaleARGBRowDown2Box_NEON(const uint8_t* src_ptr,
958
+ ptrdiff_t src_stride,
959
+ uint8_t* dst,
960
+ int dst_width);
961
+ void ScaleARGBRowDown2Box_SME(const uint8_t* src_ptr,
962
+ ptrdiff_t src_stride,
963
+ uint8_t* dst,
964
+ int dst_width);
965
+ void ScaleARGBRowDown2_RVV(const uint8_t* src_argb,
966
+ ptrdiff_t src_stride,
967
+ uint8_t* dst_argb,
968
+ int dst_width);
969
+ void ScaleARGBRowDown2Linear_RVV(const uint8_t* src_argb,
970
+ ptrdiff_t src_stride,
971
+ uint8_t* dst_argb,
972
+ int dst_width);
973
+ void ScaleARGBRowDown2Box_RVV(const uint8_t* src_argb,
974
+ ptrdiff_t src_stride,
975
+ uint8_t* dst_argb,
976
+ int dst_width);
977
+ void ScaleARGBRowDown2_LSX(const uint8_t* src_argb,
978
+ ptrdiff_t src_stride,
979
+ uint8_t* dst_argb,
980
+ int dst_width);
981
+ void ScaleARGBRowDown2Linear_LSX(const uint8_t* src_argb,
982
+ ptrdiff_t src_stride,
983
+ uint8_t* dst_argb,
984
+ int dst_width);
985
+ void ScaleARGBRowDown2Box_LSX(const uint8_t* src_argb,
986
+ ptrdiff_t src_stride,
987
+ uint8_t* dst_argb,
988
+ int dst_width);
989
+ void ScaleARGBRowDown2_Any_SSE2(const uint8_t* src_ptr,
990
+ ptrdiff_t src_stride,
991
+ uint8_t* dst_ptr,
992
+ int dst_width);
993
+ void ScaleARGBRowDown2Linear_Any_SSE2(const uint8_t* src_ptr,
994
+ ptrdiff_t src_stride,
995
+ uint8_t* dst_ptr,
996
+ int dst_width);
997
+ void ScaleARGBRowDown2Box_Any_SSE2(const uint8_t* src_ptr,
998
+ ptrdiff_t src_stride,
999
+ uint8_t* dst_ptr,
1000
+ int dst_width);
1001
+ void ScaleARGBRowDown2_Any_NEON(const uint8_t* src_ptr,
1002
+ ptrdiff_t src_stride,
1003
+ uint8_t* dst_ptr,
1004
+ int dst_width);
1005
+ void ScaleARGBRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
1006
+ ptrdiff_t src_stride,
1007
+ uint8_t* dst_ptr,
1008
+ int dst_width);
1009
+ void ScaleARGBRowDown2Box_Any_NEON(const uint8_t* src_ptr,
1010
+ ptrdiff_t src_stride,
1011
+ uint8_t* dst_ptr,
1012
+ int dst_width);
1013
+ void ScaleARGBRowDown2_Any_LSX(const uint8_t* src_ptr,
1014
+ ptrdiff_t src_stride,
1015
+ uint8_t* dst_ptr,
1016
+ int dst_width);
1017
+ void ScaleARGBRowDown2Linear_Any_LSX(const uint8_t* src_ptr,
1018
+ ptrdiff_t src_stride,
1019
+ uint8_t* dst_ptr,
1020
+ int dst_width);
1021
+ void ScaleARGBRowDown2Box_Any_LSX(const uint8_t* src_ptr,
1022
+ ptrdiff_t src_stride,
1023
+ uint8_t* dst_ptr,
1024
+ int dst_width);
1025
+ void ScaleARGBRowDownEven_SSE2(const uint8_t* src_argb,
1026
+ ptrdiff_t src_stride,
1027
+ int src_stepx,
1028
+ uint8_t* dst_argb,
1029
+ int dst_width);
1030
+ void ScaleARGBRowDownEvenBox_SSE2(const uint8_t* src_argb,
1031
+ ptrdiff_t src_stride,
1032
+ int src_stepx,
1033
+ uint8_t* dst_argb,
1034
+ int dst_width);
1035
+ void ScaleARGBRowDownEven_NEON(const uint8_t* src_argb,
1036
+ ptrdiff_t src_stride,
1037
+ int src_stepx,
1038
+ uint8_t* dst_argb,
1039
+ int dst_width);
1040
+ void ScaleARGBRowDownEvenBox_NEON(const uint8_t* src_argb,
1041
+ ptrdiff_t src_stride,
1042
+ int src_stepx,
1043
+ uint8_t* dst_argb,
1044
+ int dst_width);
1045
+ void ScaleARGBRowDownEven_LSX(const uint8_t* src_argb,
1046
+ ptrdiff_t src_stride,
1047
+ int32_t src_stepx,
1048
+ uint8_t* dst_argb,
1049
+ int dst_width);
1050
+ void ScaleARGBRowDownEvenBox_LSX(const uint8_t* src_argb,
1051
+ ptrdiff_t src_stride,
1052
+ int src_stepx,
1053
+ uint8_t* dst_argb,
1054
+ int dst_width);
1055
+ void ScaleARGBRowDownEven_RVV(const uint8_t* src_argb,
1056
+ ptrdiff_t src_stride,
1057
+ int32_t src_stepx,
1058
+ uint8_t* dst_argb,
1059
+ int dst_width);
1060
+ void ScaleARGBRowDownEvenBox_RVV(const uint8_t* src_argb,
1061
+ ptrdiff_t src_stride,
1062
+ int src_stepx,
1063
+ uint8_t* dst_argb,
1064
+ int dst_width);
1065
+ void ScaleARGBRowDownEven_Any_SSE2(const uint8_t* src_ptr,
1066
+ ptrdiff_t src_stride,
1067
+ int src_stepx,
1068
+ uint8_t* dst_ptr,
1069
+ int dst_width);
1070
+ void ScaleARGBRowDownEvenBox_Any_SSE2(const uint8_t* src_ptr,
1071
+ ptrdiff_t src_stride,
1072
+ int src_stepx,
1073
+ uint8_t* dst_ptr,
1074
+ int dst_width);
1075
+ void ScaleARGBRowDownEven_Any_NEON(const uint8_t* src_ptr,
1076
+ ptrdiff_t src_stride,
1077
+ int src_stepx,
1078
+ uint8_t* dst_ptr,
1079
+ int dst_width);
1080
+ void ScaleARGBRowDownEvenBox_Any_NEON(const uint8_t* src_ptr,
1081
+ ptrdiff_t src_stride,
1082
+ int src_stepx,
1083
+ uint8_t* dst_ptr,
1084
+ int dst_width);
1085
+ void ScaleARGBRowDownEven_Any_LSX(const uint8_t* src_ptr,
1086
+ ptrdiff_t src_stride,
1087
+ int32_t src_stepx,
1088
+ uint8_t* dst_ptr,
1089
+ int dst_width);
1090
+ void ScaleARGBRowDownEvenBox_Any_LSX(const uint8_t* src_ptr,
1091
+ ptrdiff_t src_stride,
1092
+ int src_stepx,
1093
+ uint8_t* dst_ptr,
1094
+ int dst_width);
1095
+
1096
+ // UV Row functions
1097
+ void ScaleUVRowDown2_SSSE3(const uint8_t* src_ptr,
1098
+ ptrdiff_t src_stride,
1099
+ uint8_t* dst_uv,
1100
+ int dst_width);
1101
+ void ScaleUVRowDown2Linear_SSSE3(const uint8_t* src_ptr,
1102
+ ptrdiff_t src_stride,
1103
+ uint8_t* dst_uv,
1104
+ int dst_width);
1105
+ void ScaleUVRowDown2Box_SSSE3(const uint8_t* src_ptr,
1106
+ ptrdiff_t src_stride,
1107
+ uint8_t* dst_uv,
1108
+ int dst_width);
1109
+ void ScaleUVRowDown2Box_AVX2(const uint8_t* src_ptr,
1110
+ ptrdiff_t src_stride,
1111
+ uint8_t* dst_uv,
1112
+ int dst_width);
1113
+ void ScaleUVRowDown2_NEON(const uint8_t* src_ptr,
1114
+ ptrdiff_t src_stride,
1115
+ uint8_t* dst,
1116
+ int dst_width);
1117
+ void ScaleUVRowDown2_SME(const uint8_t* src_ptr,
1118
+ ptrdiff_t src_stride,
1119
+ uint8_t* dst,
1120
+ int dst_width);
1121
+ void ScaleUVRowDown2Linear_NEON(const uint8_t* src_ptr,
1122
+ ptrdiff_t src_stride,
1123
+ uint8_t* dst_uv,
1124
+ int dst_width);
1125
+ void ScaleUVRowDown2Linear_SME(const uint8_t* src_ptr,
1126
+ ptrdiff_t src_stride,
1127
+ uint8_t* dst_uv,
1128
+ int dst_width);
1129
+ void ScaleUVRowDown2Box_NEON(const uint8_t* src_ptr,
1130
+ ptrdiff_t src_stride,
1131
+ uint8_t* dst,
1132
+ int dst_width);
1133
+ void ScaleUVRowDown2Box_SME(const uint8_t* src_ptr,
1134
+ ptrdiff_t src_stride,
1135
+ uint8_t* dst,
1136
+ int dst_width);
1137
+ void ScaleUVRowDown2_RVV(const uint8_t* src_ptr,
1138
+ ptrdiff_t src_stride,
1139
+ uint8_t* dst_uv,
1140
+ int dst_width);
1141
+ void ScaleUVRowDown2Linear_RVV(const uint8_t* src_ptr,
1142
+ ptrdiff_t src_stride,
1143
+ uint8_t* dst_uv,
1144
+ int dst_width);
1145
+ void ScaleUVRowDown2Box_RVV(const uint8_t* src_ptr,
1146
+ ptrdiff_t src_stride,
1147
+ uint8_t* dst,
1148
+ int dst_width);
1149
+ void ScaleUVRowDown2_Any_SSSE3(const uint8_t* src_ptr,
1150
+ ptrdiff_t src_stride,
1151
+ uint8_t* dst_ptr,
1152
+ int dst_width);
1153
+ void ScaleUVRowDown2Linear_Any_SSSE3(const uint8_t* src_ptr,
1154
+ ptrdiff_t src_stride,
1155
+ uint8_t* dst_ptr,
1156
+ int dst_width);
1157
+ void ScaleUVRowDown2Box_Any_SSSE3(const uint8_t* src_ptr,
1158
+ ptrdiff_t src_stride,
1159
+ uint8_t* dst_ptr,
1160
+ int dst_width);
1161
+ void ScaleUVRowDown2Box_Any_AVX2(const uint8_t* src_ptr,
1162
+ ptrdiff_t src_stride,
1163
+ uint8_t* dst_ptr,
1164
+ int dst_width);
1165
+ void ScaleUVRowDown2_Any_NEON(const uint8_t* src_ptr,
1166
+ ptrdiff_t src_stride,
1167
+ uint8_t* dst_ptr,
1168
+ int dst_width);
1169
+ void ScaleUVRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
1170
+ ptrdiff_t src_stride,
1171
+ uint8_t* dst_ptr,
1172
+ int dst_width);
1173
+ void ScaleUVRowDown2Box_Any_NEON(const uint8_t* src_ptr,
1174
+ ptrdiff_t src_stride,
1175
+ uint8_t* dst_ptr,
1176
+ int dst_width);
1177
+ void ScaleUVRowDownEven_SSSE3(const uint8_t* src_ptr,
1178
+ ptrdiff_t src_stride,
1179
+ int src_stepx,
1180
+ uint8_t* dst_uv,
1181
+ int dst_width);
1182
+ void ScaleUVRowDownEvenBox_SSSE3(const uint8_t* src_ptr,
1183
+ ptrdiff_t src_stride,
1184
+ int src_stepx,
1185
+ uint8_t* dst_uv,
1186
+ int dst_width);
1187
+ void ScaleUVRowDownEven_NEON(const uint8_t* src_ptr,
1188
+ ptrdiff_t src_stride,
1189
+ int src_stepx,
1190
+ uint8_t* dst_uv,
1191
+ int dst_width);
1192
+ void ScaleUVRowDownEvenBox_NEON(const uint8_t* src_ptr,
1193
+ ptrdiff_t src_stride,
1194
+ int src_stepx,
1195
+ uint8_t* dst_uv,
1196
+ int dst_width);
1197
+ void ScaleUVRowDown4_RVV(const uint8_t* src_ptr,
1198
+ ptrdiff_t src_stride,
1199
+ int32_t src_stepx,
1200
+ uint8_t* dst_uv,
1201
+ int dst_width);
1202
+ void ScaleUVRowDownEven_RVV(const uint8_t* src_ptr,
1203
+ ptrdiff_t src_stride,
1204
+ int32_t src_stepx,
1205
+ uint8_t* dst_uv,
1206
+ int dst_width);
1207
+ void ScaleUVRowDownEven_Any_SSSE3(const uint8_t* src_ptr,
1208
+ ptrdiff_t src_stride,
1209
+ int src_stepx,
1210
+ uint8_t* dst_ptr,
1211
+ int dst_width);
1212
+ void ScaleUVRowDownEvenBox_Any_SSSE3(const uint8_t* src_ptr,
1213
+ ptrdiff_t src_stride,
1214
+ int src_stepx,
1215
+ uint8_t* dst_ptr,
1216
+ int dst_width);
1217
+ void ScaleUVRowDownEven_Any_NEON(const uint8_t* src_ptr,
1218
+ ptrdiff_t src_stride,
1219
+ int src_stepx,
1220
+ uint8_t* dst_ptr,
1221
+ int dst_width);
1222
+ void ScaleUVRowDownEvenBox_Any_NEON(const uint8_t* src_ptr,
1223
+ ptrdiff_t src_stride,
1224
+ int src_stepx,
1225
+ uint8_t* dst_ptr,
1226
+ int dst_width);
1227
+
1228
+ void ScaleUVRowUp2_Linear_SSSE3(const uint8_t* src_ptr,
1229
+ uint8_t* dst_ptr,
1230
+ int dst_width);
1231
+ void ScaleUVRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
1232
+ ptrdiff_t src_stride,
1233
+ uint8_t* dst_ptr,
1234
+ ptrdiff_t dst_stride,
1235
+ int dst_width);
1236
+ void ScaleUVRowUp2_Linear_Any_SSSE3(const uint8_t* src_ptr,
1237
+ uint8_t* dst_ptr,
1238
+ int dst_width);
1239
+ void ScaleUVRowUp2_Bilinear_Any_SSSE3(const uint8_t* src_ptr,
1240
+ ptrdiff_t src_stride,
1241
+ uint8_t* dst_ptr,
1242
+ ptrdiff_t dst_stride,
1243
+ int dst_width);
1244
+ void ScaleUVRowUp2_Linear_AVX2(const uint8_t* src_ptr,
1245
+ uint8_t* dst_ptr,
1246
+ int dst_width);
1247
+ void ScaleUVRowUp2_Bilinear_AVX2(const uint8_t* src_ptr,
1248
+ ptrdiff_t src_stride,
1249
+ uint8_t* dst_ptr,
1250
+ ptrdiff_t dst_stride,
1251
+ int dst_width);
1252
+ void ScaleUVRowUp2_Linear_Any_AVX2(const uint8_t* src_ptr,
1253
+ uint8_t* dst_ptr,
1254
+ int dst_width);
1255
+ void ScaleUVRowUp2_Bilinear_Any_AVX2(const uint8_t* src_ptr,
1256
+ ptrdiff_t src_stride,
1257
+ uint8_t* dst_ptr,
1258
+ ptrdiff_t dst_stride,
1259
+ int dst_width);
1260
+ void ScaleUVRowUp2_Linear_NEON(const uint8_t* src_ptr,
1261
+ uint8_t* dst_ptr,
1262
+ int dst_width);
1263
+ void ScaleUVRowUp2_Bilinear_NEON(const uint8_t* src_ptr,
1264
+ ptrdiff_t src_stride,
1265
+ uint8_t* dst_ptr,
1266
+ ptrdiff_t dst_stride,
1267
+ int dst_width);
1268
+ void ScaleUVRowUp2_Linear_Any_NEON(const uint8_t* src_ptr,
1269
+ uint8_t* dst_ptr,
1270
+ int dst_width);
1271
+ void ScaleUVRowUp2_Bilinear_Any_NEON(const uint8_t* src_ptr,
1272
+ ptrdiff_t src_stride,
1273
+ uint8_t* dst_ptr,
1274
+ ptrdiff_t dst_stride,
1275
+ int dst_width);
1276
+ void ScaleUVRowUp2_Linear_RVV(const uint8_t* src_ptr,
1277
+ uint8_t* dst_ptr,
1278
+ int dst_width);
1279
+ void ScaleUVRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
1280
+ ptrdiff_t src_stride,
1281
+ uint8_t* dst_ptr,
1282
+ ptrdiff_t dst_stride,
1283
+ int dst_width);
1284
+ void ScaleUVRowUp2_Linear_16_SSE41(const uint16_t* src_ptr,
1285
+ uint16_t* dst_ptr,
1286
+ int dst_width);
1287
+ void ScaleUVRowUp2_Bilinear_16_SSE41(const uint16_t* src_ptr,
1288
+ ptrdiff_t src_stride,
1289
+ uint16_t* dst_ptr,
1290
+ ptrdiff_t dst_stride,
1291
+ int dst_width);
1292
+ void ScaleUVRowUp2_Linear_16_Any_SSE41(const uint16_t* src_ptr,
1293
+ uint16_t* dst_ptr,
1294
+ int dst_width);
1295
+ void ScaleUVRowUp2_Bilinear_16_Any_SSE41(const uint16_t* src_ptr,
1296
+ ptrdiff_t src_stride,
1297
+ uint16_t* dst_ptr,
1298
+ ptrdiff_t dst_stride,
1299
+ int dst_width);
1300
+ void ScaleUVRowUp2_Linear_16_AVX2(const uint16_t* src_ptr,
1301
+ uint16_t* dst_ptr,
1302
+ int dst_width);
1303
+ void ScaleUVRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
1304
+ ptrdiff_t src_stride,
1305
+ uint16_t* dst_ptr,
1306
+ ptrdiff_t dst_stride,
1307
+ int dst_width);
1308
+ void ScaleUVRowUp2_Linear_16_Any_AVX2(const uint16_t* src_ptr,
1309
+ uint16_t* dst_ptr,
1310
+ int dst_width);
1311
+ void ScaleUVRowUp2_Bilinear_16_Any_AVX2(const uint16_t* src_ptr,
1312
+ ptrdiff_t src_stride,
1313
+ uint16_t* dst_ptr,
1314
+ ptrdiff_t dst_stride,
1315
+ int dst_width);
1316
+ void ScaleUVRowUp2_Linear_16_NEON(const uint16_t* src_ptr,
1317
+ uint16_t* dst_ptr,
1318
+ int dst_width);
1319
+ void ScaleUVRowUp2_Bilinear_16_NEON(const uint16_t* src_ptr,
1320
+ ptrdiff_t src_stride,
1321
+ uint16_t* dst_ptr,
1322
+ ptrdiff_t dst_stride,
1323
+ int dst_width);
1324
+ void ScaleUVRowUp2_Linear_16_Any_NEON(const uint16_t* src_ptr,
1325
+ uint16_t* dst_ptr,
1326
+ int dst_width);
1327
+ void ScaleUVRowUp2_Bilinear_16_Any_NEON(const uint16_t* src_ptr,
1328
+ ptrdiff_t src_stride,
1329
+ uint16_t* dst_ptr,
1330
+ ptrdiff_t dst_stride,
1331
+ int dst_width);
1332
+
1333
+ // ScaleRowDown2Box also used by planar functions
1334
+ // NEON/SME downscalers with interpolation.
1335
+ void ScaleRowDown2_NEON(const uint8_t* src_ptr,
1336
+ ptrdiff_t src_stride,
1337
+ uint8_t* dst,
1338
+ int dst_width);
1339
+ void ScaleRowDown2_SME(const uint8_t* src_ptr,
1340
+ ptrdiff_t src_stride,
1341
+ uint8_t* dst,
1342
+ int dst_width);
1343
+ void ScaleRowDown2_16_NEON(const uint16_t* src_ptr,
1344
+ ptrdiff_t src_stride,
1345
+ uint16_t* dst,
1346
+ int dst_width);
1347
+ void ScaleRowDown2_16_SME(const uint16_t* src_ptr,
1348
+ ptrdiff_t src_stride,
1349
+ uint16_t* dst,
1350
+ int dst_width);
1351
+ void ScaleRowDown2Linear_NEON(const uint8_t* src_ptr,
1352
+ ptrdiff_t src_stride,
1353
+ uint8_t* dst,
1354
+ int dst_width);
1355
+ void ScaleRowDown2Linear_SME(const uint8_t* src_ptr,
1356
+ ptrdiff_t src_stride,
1357
+ uint8_t* dst,
1358
+ int dst_width);
1359
+ void ScaleRowDown2Linear_16_NEON(const uint16_t* src_ptr,
1360
+ ptrdiff_t src_stride,
1361
+ uint16_t* dst,
1362
+ int dst_width);
1363
+ void ScaleRowDown2Linear_16_SME(const uint16_t* src_ptr,
1364
+ ptrdiff_t src_stride,
1365
+ uint16_t* dst,
1366
+ int dst_width);
1367
+ void ScaleRowDown2Box_NEON(const uint8_t* src_ptr,
1368
+ ptrdiff_t src_stride,
1369
+ uint8_t* dst,
1370
+ int dst_width);
1371
+ void ScaleRowDown2Box_SME(const uint8_t* src_ptr,
1372
+ ptrdiff_t src_stride,
1373
+ uint8_t* dst,
1374
+ int dst_width);
1375
+ void ScaleRowDown2Box_16_NEON(const uint16_t* src_ptr,
1376
+ ptrdiff_t src_stride,
1377
+ uint16_t* dst,
1378
+ int dst_width);
1379
+ void ScaleRowDown2Box_16_SME(const uint16_t* src_ptr,
1380
+ ptrdiff_t src_stride,
1381
+ uint16_t* dst,
1382
+ int dst_width);
1383
+
1384
+ void ScaleRowDown4_NEON(const uint8_t* src_ptr,
1385
+ ptrdiff_t src_stride,
1386
+ uint8_t* dst_ptr,
1387
+ int dst_width);
1388
+ void ScaleRowDown4Box_NEON(const uint8_t* src_ptr,
1389
+ ptrdiff_t src_stride,
1390
+ uint8_t* dst_ptr,
1391
+ int dst_width);
1392
+
1393
+ // Down scale from 4 to 3 pixels. Use the neon multilane read/write
1394
+ // to load up the every 4th pixel into a 4 different registers.
1395
+ // Point samples 32 pixels to 24 pixels.
1396
+ void ScaleRowDown34_NEON(const uint8_t* src_ptr,
1397
+ ptrdiff_t src_stride,
1398
+ uint8_t* dst_ptr,
1399
+ int dst_width);
1400
+ void ScaleRowDown34_0_Box_NEON(const uint8_t* src_ptr,
1401
+ ptrdiff_t src_stride,
1402
+ uint8_t* dst_ptr,
1403
+ int dst_width);
1404
+ void ScaleRowDown34_1_Box_NEON(const uint8_t* src_ptr,
1405
+ ptrdiff_t src_stride,
1406
+ uint8_t* dst_ptr,
1407
+ int dst_width);
1408
+
1409
+ // 32 -> 12
1410
+ void ScaleRowDown38_NEON(const uint8_t* src_ptr,
1411
+ ptrdiff_t src_stride,
1412
+ uint8_t* dst_ptr,
1413
+ int dst_width);
1414
+ // 32x3 -> 12x1
1415
+ void ScaleRowDown38_3_Box_NEON(const uint8_t* src_ptr,
1416
+ ptrdiff_t src_stride,
1417
+ uint8_t* dst_ptr,
1418
+ int dst_width);
1419
+ // 32x2 -> 12x1
1420
+ void ScaleRowDown38_2_Box_NEON(const uint8_t* src_ptr,
1421
+ ptrdiff_t src_stride,
1422
+ uint8_t* dst_ptr,
1423
+ int dst_width);
1424
+
1425
+ void ScaleRowDown2_Any_NEON(const uint8_t* src_ptr,
1426
+ ptrdiff_t src_stride,
1427
+ uint8_t* dst_ptr,
1428
+ int dst_width);
1429
+ void ScaleRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
1430
+ ptrdiff_t src_stride,
1431
+ uint8_t* dst_ptr,
1432
+ int dst_width);
1433
+ void ScaleRowDown2Box_Any_NEON(const uint8_t* src_ptr,
1434
+ ptrdiff_t src_stride,
1435
+ uint8_t* dst_ptr,
1436
+ int dst_width);
1437
+ void ScaleRowDown2Box_Odd_NEON(const uint8_t* src_ptr,
1438
+ ptrdiff_t src_stride,
1439
+ uint8_t* dst_ptr,
1440
+ int dst_width);
1441
+ void ScaleRowDown4_Any_NEON(const uint8_t* src_ptr,
1442
+ ptrdiff_t src_stride,
1443
+ uint8_t* dst_ptr,
1444
+ int dst_width);
1445
+ void ScaleRowDown4Box_Any_NEON(const uint8_t* src_ptr,
1446
+ ptrdiff_t src_stride,
1447
+ uint8_t* dst_ptr,
1448
+ int dst_width);
1449
+ void ScaleRowDown34_Any_NEON(const uint8_t* src_ptr,
1450
+ ptrdiff_t src_stride,
1451
+ uint8_t* dst_ptr,
1452
+ int dst_width);
1453
+ void ScaleRowDown34_0_Box_Any_NEON(const uint8_t* src_ptr,
1454
+ ptrdiff_t src_stride,
1455
+ uint8_t* dst_ptr,
1456
+ int dst_width);
1457
+ void ScaleRowDown34_1_Box_Any_NEON(const uint8_t* src_ptr,
1458
+ ptrdiff_t src_stride,
1459
+ uint8_t* dst_ptr,
1460
+ int dst_width);
1461
+ // 32 -> 12
1462
+ void ScaleRowDown38_Any_NEON(const uint8_t* src_ptr,
1463
+ ptrdiff_t src_stride,
1464
+ uint8_t* dst_ptr,
1465
+ int dst_width);
1466
+ // 32x3 -> 12x1
1467
+ void ScaleRowDown38_3_Box_Any_NEON(const uint8_t* src_ptr,
1468
+ ptrdiff_t src_stride,
1469
+ uint8_t* dst_ptr,
1470
+ int dst_width);
1471
+ // 32x2 -> 12x1
1472
+ void ScaleRowDown38_2_Box_Any_NEON(const uint8_t* src_ptr,
1473
+ ptrdiff_t src_stride,
1474
+ uint8_t* dst_ptr,
1475
+ int dst_width);
1476
+
1477
+ void ScaleRowUp2_Linear_NEON(const uint8_t* src_ptr,
1478
+ uint8_t* dst_ptr,
1479
+ int dst_width);
1480
+ void ScaleRowUp2_Bilinear_NEON(const uint8_t* src_ptr,
1481
+ ptrdiff_t src_stride,
1482
+ uint8_t* dst_ptr,
1483
+ ptrdiff_t dst_stride,
1484
+ int dst_width);
1485
+ void ScaleRowUp2_Linear_12_NEON(const uint16_t* src_ptr,
1486
+ uint16_t* dst_ptr,
1487
+ int dst_width);
1488
+ void ScaleRowUp2_Bilinear_12_NEON(const uint16_t* src_ptr,
1489
+ ptrdiff_t src_stride,
1490
+ uint16_t* dst_ptr,
1491
+ ptrdiff_t dst_stride,
1492
+ int dst_width);
1493
+ void ScaleRowUp2_Linear_16_NEON(const uint16_t* src_ptr,
1494
+ uint16_t* dst_ptr,
1495
+ int dst_width);
1496
+ void ScaleRowUp2_Bilinear_16_NEON(const uint16_t* src_ptr,
1497
+ ptrdiff_t src_stride,
1498
+ uint16_t* dst_ptr,
1499
+ ptrdiff_t dst_stride,
1500
+ int dst_width);
1501
+ void ScaleRowUp2_Linear_Any_NEON(const uint8_t* src_ptr,
1502
+ uint8_t* dst_ptr,
1503
+ int dst_width);
1504
+ void ScaleRowUp2_Bilinear_Any_NEON(const uint8_t* src_ptr,
1505
+ ptrdiff_t src_stride,
1506
+ uint8_t* dst_ptr,
1507
+ ptrdiff_t dst_stride,
1508
+ int dst_width);
1509
+ void ScaleRowUp2_Linear_12_Any_NEON(const uint16_t* src_ptr,
1510
+ uint16_t* dst_ptr,
1511
+ int dst_width);
1512
+ void ScaleRowUp2_Bilinear_12_Any_NEON(const uint16_t* src_ptr,
1513
+ ptrdiff_t src_stride,
1514
+ uint16_t* dst_ptr,
1515
+ ptrdiff_t dst_stride,
1516
+ int dst_width);
1517
+ void ScaleRowUp2_Linear_16_Any_NEON(const uint16_t* src_ptr,
1518
+ uint16_t* dst_ptr,
1519
+ int dst_width);
1520
+ void ScaleRowUp2_Bilinear_16_Any_NEON(const uint16_t* src_ptr,
1521
+ ptrdiff_t src_stride,
1522
+ uint16_t* dst_ptr,
1523
+ ptrdiff_t dst_stride,
1524
+ int dst_width);
1525
+
1526
+ void ScaleAddRow_NEON(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
1527
+ void ScaleAddRow_Any_NEON(const uint8_t* src_ptr,
1528
+ uint16_t* dst_ptr,
1529
+ int src_width);
1530
+
1531
+ void ScaleFilterCols_NEON(uint8_t* dst_ptr,
1532
+ const uint8_t* src_ptr,
1533
+ int dst_width,
1534
+ int x,
1535
+ int dx);
1536
+
1537
+ void ScaleFilterCols_Any_NEON(uint8_t* dst_ptr,
1538
+ const uint8_t* src_ptr,
1539
+ int dst_width,
1540
+ int x,
1541
+ int dx);
1542
+
1543
+ void ScaleRowDown2_LSX(const uint8_t* src_ptr,
1544
+ ptrdiff_t src_stride,
1545
+ uint8_t* dst,
1546
+ int dst_width);
1547
+ void ScaleRowDown2Linear_LSX(const uint8_t* src_ptr,
1548
+ ptrdiff_t src_stride,
1549
+ uint8_t* dst,
1550
+ int dst_width);
1551
+ void ScaleRowDown2Box_LSX(const uint8_t* src_ptr,
1552
+ ptrdiff_t src_stride,
1553
+ uint8_t* dst,
1554
+ int dst_width);
1555
+ void ScaleRowDown4_LSX(const uint8_t* src_ptr,
1556
+ ptrdiff_t src_stride,
1557
+ uint8_t* dst,
1558
+ int dst_width);
1559
+ void ScaleRowDown4Box_LSX(const uint8_t* src_ptr,
1560
+ ptrdiff_t src_stride,
1561
+ uint8_t* dst,
1562
+ int dst_width);
1563
+ void ScaleRowDown38_LSX(const uint8_t* src_ptr,
1564
+ ptrdiff_t src_stride,
1565
+ uint8_t* dst,
1566
+ int dst_width);
1567
+ void ScaleRowDown38_2_Box_LSX(const uint8_t* src_ptr,
1568
+ ptrdiff_t src_stride,
1569
+ uint8_t* dst_ptr,
1570
+ int dst_width);
1571
+ void ScaleRowDown38_3_Box_LSX(const uint8_t* src_ptr,
1572
+ ptrdiff_t src_stride,
1573
+ uint8_t* dst_ptr,
1574
+ int dst_width);
1575
+ void ScaleAddRow_LSX(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
1576
+ void ScaleFilterCols_LSX(uint8_t* dst_ptr,
1577
+ const uint8_t* src_ptr,
1578
+ int dst_width,
1579
+ int x,
1580
+ int dx);
1581
+ void ScaleARGBFilterCols_LSX(uint8_t* dst_argb,
1582
+ const uint8_t* src_argb,
1583
+ int dst_width,
1584
+ int x,
1585
+ int dx);
1586
+ void ScaleARGBCols_LSX(uint8_t* dst_argb,
1587
+ const uint8_t* src_argb,
1588
+ int dst_width,
1589
+ int x,
1590
+ int dx);
1591
+ void ScaleRowDown34_LSX(const uint8_t* src_ptr,
1592
+ ptrdiff_t src_stride,
1593
+ uint8_t* dst,
1594
+ int dst_width);
1595
+ void ScaleRowDown34_0_Box_LSX(const uint8_t* src_ptr,
1596
+ ptrdiff_t src_stride,
1597
+ uint8_t* d,
1598
+ int dst_width);
1599
+ void ScaleRowDown34_1_Box_LSX(const uint8_t* src_ptr,
1600
+ ptrdiff_t src_stride,
1601
+ uint8_t* d,
1602
+ int dst_width);
1603
+ void ScaleRowDown2_Any_LSX(const uint8_t* src_ptr,
1604
+ ptrdiff_t src_stride,
1605
+ uint8_t* dst_ptr,
1606
+ int dst_width);
1607
+ void ScaleRowDown2Linear_Any_LSX(const uint8_t* src_ptr,
1608
+ ptrdiff_t src_stride,
1609
+ uint8_t* dst_ptr,
1610
+ int dst_width);
1611
+ void ScaleRowDown2Box_Any_LSX(const uint8_t* src_ptr,
1612
+ ptrdiff_t src_stride,
1613
+ uint8_t* dst_ptr,
1614
+ int dst_width);
1615
+ void ScaleRowDown4_Any_LSX(const uint8_t* src_ptr,
1616
+ ptrdiff_t src_stride,
1617
+ uint8_t* dst_ptr,
1618
+ int dst_width);
1619
+ void ScaleRowDown4Box_Any_LSX(const uint8_t* src_ptr,
1620
+ ptrdiff_t src_stride,
1621
+ uint8_t* dst_ptr,
1622
+ int dst_width);
1623
+ void ScaleRowDown38_Any_LSX(const uint8_t* src_ptr,
1624
+ ptrdiff_t src_stride,
1625
+ uint8_t* dst_ptr,
1626
+ int dst_width);
1627
+ void ScaleRowDown38_2_Box_Any_LSX(const uint8_t* src_ptr,
1628
+ ptrdiff_t src_stride,
1629
+ uint8_t* dst_ptr,
1630
+ int dst_width);
1631
+ void ScaleRowDown38_3_Box_Any_LSX(const uint8_t* src_ptr,
1632
+ ptrdiff_t src_stride,
1633
+ uint8_t* dst_ptr,
1634
+ int dst_width);
1635
+ void ScaleAddRow_Any_LSX(const uint8_t* src_ptr,
1636
+ uint16_t* dst_ptr,
1637
+ int src_width);
1638
+ void ScaleFilterCols_Any_LSX(uint8_t* dst_ptr,
1639
+ const uint8_t* src_ptr,
1640
+ int dst_width,
1641
+ int x,
1642
+ int dx);
1643
+ void ScaleARGBCols_Any_LSX(uint8_t* dst_ptr,
1644
+ const uint8_t* src_ptr,
1645
+ int dst_width,
1646
+ int x,
1647
+ int dx);
1648
+ void ScaleARGBFilterCols_Any_LSX(uint8_t* dst_ptr,
1649
+ const uint8_t* src_ptr,
1650
+ int dst_width,
1651
+ int x,
1652
+ int dx);
1653
+ void ScaleRowDown34_Any_LSX(const uint8_t* src_ptr,
1654
+ ptrdiff_t src_stride,
1655
+ uint8_t* dst_ptr,
1656
+ int dst_width);
1657
+ void ScaleRowDown34_0_Box_Any_LSX(const uint8_t* src_ptr,
1658
+ ptrdiff_t src_stride,
1659
+ uint8_t* dst_ptr,
1660
+ int dst_width);
1661
+ void ScaleRowDown34_1_Box_Any_LSX(const uint8_t* src_ptr,
1662
+ ptrdiff_t src_stride,
1663
+ uint8_t* dst_ptr,
1664
+ int dst_width);
1665
+
1666
+ void ScaleAddRow_RVV(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
1667
+ void ScaleRowDown2_RVV(const uint8_t* src_ptr,
1668
+ ptrdiff_t src_stride,
1669
+ uint8_t* dst,
1670
+ int dst_width);
1671
+ void ScaleRowDown2Linear_RVV(const uint8_t* src_ptr,
1672
+ ptrdiff_t src_stride,
1673
+ uint8_t* dst,
1674
+ int dst_width);
1675
+ void ScaleRowDown2Box_RVV(const uint8_t* src_ptr,
1676
+ ptrdiff_t src_stride,
1677
+ uint8_t* dst,
1678
+ int dst_width);
1679
+
1680
+ void ScaleRowDown4_RVV(const uint8_t* src_ptr,
1681
+ ptrdiff_t src_stride,
1682
+ uint8_t* dst_ptr,
1683
+ int dst_width);
1684
+ void ScaleRowDown4Box_RVV(const uint8_t* src_ptr,
1685
+ ptrdiff_t src_stride,
1686
+ uint8_t* dst_ptr,
1687
+ int dst_width);
1688
+ void ScaleRowDown34_RVV(const uint8_t* src_ptr,
1689
+ ptrdiff_t src_stride,
1690
+ uint8_t* dst_ptr,
1691
+ int dst_width);
1692
+ void ScaleRowDown34_0_Box_RVV(const uint8_t* src_ptr,
1693
+ ptrdiff_t src_stride,
1694
+ uint8_t* dst_ptr,
1695
+ int dst_width);
1696
+ void ScaleRowDown34_1_Box_RVV(const uint8_t* src_ptr,
1697
+ ptrdiff_t src_stride,
1698
+ uint8_t* dst_ptr,
1699
+ int dst_width);
1700
+ void ScaleRowDown38_RVV(const uint8_t* src_ptr,
1701
+ ptrdiff_t src_stride,
1702
+ uint8_t* dst,
1703
+ int dst_width);
1704
+ void ScaleRowDown38_3_Box_RVV(const uint8_t* src_ptr,
1705
+ ptrdiff_t src_stride,
1706
+ uint8_t* dst_ptr,
1707
+ int dst_width);
1708
+ void ScaleRowDown38_2_Box_RVV(const uint8_t* src_ptr,
1709
+ ptrdiff_t src_stride,
1710
+ uint8_t* dst_ptr,
1711
+ int dst_width);
1712
+
1713
+ void ScaleRowUp2_Linear_RVV(const uint8_t* src_ptr,
1714
+ uint8_t* dst_ptr,
1715
+ int dst_width);
1716
+ void ScaleRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
1717
+ ptrdiff_t src_stride,
1718
+ uint8_t* dst_ptr,
1719
+ ptrdiff_t dst_stride,
1720
+ int dst_width);
1721
+ #ifdef __cplusplus
1722
+ } // extern "C"
1723
+ } // namespace libyuv
1724
+ #endif
1725
+
1726
+ #endif // INCLUDE_LIBYUV_SCALE_ROW_H_