Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(411)

Side by Side Diff: source/scale_any.cc

Issue 1558093003: Odd width variation of scale down by 2 for subsampling (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: bump version Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/planar_functions.cc ('k') | source/scale_common.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2015 The LibYuv Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 uint8* dst_ptr, int dst_width) { \ 48 uint8* dst_ptr, int dst_width) { \
49 int r = (int)((unsigned int)dst_width % (MASK + 1)); \ 49 int r = (int)((unsigned int)dst_width % (MASK + 1)); \
50 int n = dst_width - r; \ 50 int n = dst_width - r; \
51 if (n > 0) { \ 51 if (n > 0) { \
52 SCALEROWDOWN_SIMD(src_ptr, src_stride, dst_ptr, n); \ 52 SCALEROWDOWN_SIMD(src_ptr, src_stride, dst_ptr, n); \
53 } \ 53 } \
54 SCALEROWDOWN_C(src_ptr + (n * FACTOR) * BPP, src_stride, \ 54 SCALEROWDOWN_C(src_ptr + (n * FACTOR) * BPP, src_stride, \
55 dst_ptr + n * BPP, r); \ 55 dst_ptr + n * BPP, r); \
56 } 56 }
57 57
58 // Fixed scale down for odd source width. Used by I420Blend subsampling.
59 // Since dst_width is (width + 1) / 2, this function scales one less pixel
60 // and copies the last pixel.
61 #define SDODD(NAMEANY, SCALEROWDOWN_SIMD, SCALEROWDOWN_C, FACTOR, BPP, MASK) \
62 void NAMEANY(const uint8* src_ptr, ptrdiff_t src_stride, \
63 uint8* dst_ptr, int dst_width) { \
64 int r = (int)((unsigned int)(dst_width - 1) % (MASK + 1)); \
65 int n = dst_width - r; \
66 if (n > 0) { \
67 SCALEROWDOWN_SIMD(src_ptr, src_stride, dst_ptr, n); \
68 } \
69 SCALEROWDOWN_C(src_ptr + (n * FACTOR) * BPP, src_stride, \
70 dst_ptr + n * BPP, r); \
71 }
72
58 #ifdef HAS_SCALEROWDOWN2_SSSE3 73 #ifdef HAS_SCALEROWDOWN2_SSSE3
59 SDANY(ScaleRowDown2_Any_SSSE3, ScaleRowDown2_SSSE3, ScaleRowDown2_C, 2, 1, 15) 74 SDANY(ScaleRowDown2_Any_SSSE3, ScaleRowDown2_SSSE3, ScaleRowDown2_C, 2, 1, 15)
60 SDANY(ScaleRowDown2Linear_Any_SSSE3, ScaleRowDown2Linear_SSSE3, 75 SDANY(ScaleRowDown2Linear_Any_SSSE3, ScaleRowDown2Linear_SSSE3,
61 ScaleRowDown2Linear_C, 2, 1, 15) 76 ScaleRowDown2Linear_C, 2, 1, 15)
62 SDANY(ScaleRowDown2Box_Any_SSSE3, ScaleRowDown2Box_SSSE3, ScaleRowDown2Box_C, 77 SDANY(ScaleRowDown2Box_Any_SSSE3, ScaleRowDown2Box_SSSE3, ScaleRowDown2Box_C,
63 2, 1, 15) 78 2, 1, 15)
79 SDODD(ScaleRowDown2Box_Odd_SSSE3, ScaleRowDown2Box_SSSE3,
80 ScaleRowDown2Box_Odd_C, 2, 1, 15)
64 #endif 81 #endif
65 #ifdef HAS_SCALEROWDOWN2_AVX2 82 #ifdef HAS_SCALEROWDOWN2_AVX2
66 SDANY(ScaleRowDown2_Any_AVX2, ScaleRowDown2_AVX2, ScaleRowDown2_C, 2, 1, 31) 83 SDANY(ScaleRowDown2_Any_AVX2, ScaleRowDown2_AVX2, ScaleRowDown2_C, 2, 1, 31)
67 SDANY(ScaleRowDown2Linear_Any_AVX2, ScaleRowDown2Linear_AVX2, 84 SDANY(ScaleRowDown2Linear_Any_AVX2, ScaleRowDown2Linear_AVX2,
68 ScaleRowDown2Linear_C, 2, 1, 31) 85 ScaleRowDown2Linear_C, 2, 1, 31)
69 SDANY(ScaleRowDown2Box_Any_AVX2, ScaleRowDown2Box_AVX2, ScaleRowDown2Box_C, 86 SDANY(ScaleRowDown2Box_Any_AVX2, ScaleRowDown2Box_AVX2, ScaleRowDown2Box_C,
70 2, 1, 31) 87 2, 1, 31)
88 SDODD(ScaleRowDown2Box_Odd_AVX2, ScaleRowDown2Box_AVX2, ScaleRowDown2Box_Odd_C,
89 2, 1, 31)
71 #endif 90 #endif
72 #ifdef HAS_SCALEROWDOWN2_NEON 91 #ifdef HAS_SCALEROWDOWN2_NEON
73 SDANY(ScaleRowDown2_Any_NEON, ScaleRowDown2_NEON, ScaleRowDown2_C, 2, 1, 15) 92 SDANY(ScaleRowDown2_Any_NEON, ScaleRowDown2_NEON, ScaleRowDown2_C, 2, 1, 15)
74 SDANY(ScaleRowDown2Linear_Any_NEON, ScaleRowDown2Linear_NEON, 93 SDANY(ScaleRowDown2Linear_Any_NEON, ScaleRowDown2Linear_NEON,
75 ScaleRowDown2Linear_C, 2, 1, 15) 94 ScaleRowDown2Linear_C, 2, 1, 15)
76 SDANY(ScaleRowDown2Box_Any_NEON, ScaleRowDown2Box_NEON, 95 SDANY(ScaleRowDown2Box_Any_NEON, ScaleRowDown2Box_NEON,
77 ScaleRowDown2Box_C, 2, 1, 15) 96 ScaleRowDown2Box_C, 2, 1, 15)
97 SDODD(ScaleRowDown2Box_Odd_NEON, ScaleRowDown2Box_NEON,
98 ScaleRowDown2Box_Odd_C, 2, 1, 15)
78 #endif 99 #endif
79 #ifdef HAS_SCALEROWDOWN4_SSSE3 100 #ifdef HAS_SCALEROWDOWN4_SSSE3
80 SDANY(ScaleRowDown4_Any_SSSE3, ScaleRowDown4_SSSE3, ScaleRowDown4_C, 4, 1, 7) 101 SDANY(ScaleRowDown4_Any_SSSE3, ScaleRowDown4_SSSE3, ScaleRowDown4_C, 4, 1, 7)
81 SDANY(ScaleRowDown4Box_Any_SSSE3, ScaleRowDown4Box_SSSE3, ScaleRowDown4Box_C, 102 SDANY(ScaleRowDown4Box_Any_SSSE3, ScaleRowDown4Box_SSSE3, ScaleRowDown4Box_C,
82 4, 1, 7) 103 4, 1, 7)
83 #endif 104 #endif
84 #ifdef HAS_SCALEROWDOWN4_AVX2 105 #ifdef HAS_SCALEROWDOWN4_AVX2
85 SDANY(ScaleRowDown4_Any_AVX2, ScaleRowDown4_AVX2, ScaleRowDown4_C, 4, 1, 15) 106 SDANY(ScaleRowDown4_Any_AVX2, ScaleRowDown4_AVX2, ScaleRowDown4_C, 4, 1, 15)
86 SDANY(ScaleRowDown4Box_Any_AVX2, ScaleRowDown4Box_AVX2, ScaleRowDown4Box_C, 107 SDANY(ScaleRowDown4Box_Any_AVX2, ScaleRowDown4Box_AVX2, ScaleRowDown4Box_C,
87 4, 1, 15) 108 4, 1, 15)
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 212
192 #ifdef __cplusplus 213 #ifdef __cplusplus
193 } // extern "C" 214 } // extern "C"
194 } // namespace libyuv 215 } // namespace libyuv
195 #endif 216 #endif
196 217
197 218
198 219
199 220
200 221
OLDNEW
« no previous file with comments | « source/planar_functions.cc ('k') | source/scale_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698