OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2012 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 YANY(I422ToBGRARow_Any_NEON, I422ToBGRARow_NEON, I422ToBGRARow_C, 1, 4, 7) | 72 YANY(I422ToBGRARow_Any_NEON, I422ToBGRARow_NEON, I422ToBGRARow_C, 1, 4, 7) |
73 YANY(I422ToABGRRow_Any_NEON, I422ToABGRRow_NEON, I422ToABGRRow_C, 1, 4, 7) | 73 YANY(I422ToABGRRow_Any_NEON, I422ToABGRRow_NEON, I422ToABGRRow_C, 1, 4, 7) |
74 YANY(I422ToRGBARow_Any_NEON, I422ToRGBARow_NEON, I422ToRGBARow_C, 1, 4, 7) | 74 YANY(I422ToRGBARow_Any_NEON, I422ToRGBARow_NEON, I422ToRGBARow_C, 1, 4, 7) |
75 YANY(I422ToRGB24Row_Any_NEON, I422ToRGB24Row_NEON, I422ToRGB24Row_C, 1, 3, 7) | 75 YANY(I422ToRGB24Row_Any_NEON, I422ToRGB24Row_NEON, I422ToRGB24Row_C, 1, 3, 7) |
76 YANY(I422ToRAWRow_Any_NEON, I422ToRAWRow_NEON, I422ToRAWRow_C, 1, 3, 7) | 76 YANY(I422ToRAWRow_Any_NEON, I422ToRAWRow_NEON, I422ToRAWRow_C, 1, 3, 7) |
77 YANY(I422ToARGB4444Row_Any_NEON, I422ToARGB4444Row_NEON, I422ToARGB4444Row_C, | 77 YANY(I422ToARGB4444Row_Any_NEON, I422ToARGB4444Row_NEON, I422ToARGB4444Row_C, |
78 1, 2, 7) | 78 1, 2, 7) |
79 YANY(I422ToARGB1555Row_Any_NEON, I422ToARGB1555Row_NEON, I422ToARGB1555Row_C, | 79 YANY(I422ToARGB1555Row_Any_NEON, I422ToARGB1555Row_NEON, I422ToARGB1555Row_C, |
80 1, 2, 7) | 80 1, 2, 7) |
81 YANY(I422ToRGB565Row_Any_NEON, I422ToRGB565Row_NEON, I422ToRGB565Row_C, 1, 2, 7) | 81 YANY(I422ToRGB565Row_Any_NEON, I422ToRGB565Row_NEON, I422ToRGB565Row_C, 1, 2, 7) |
| 82 #endif // HAS_I422TOARGBROW_NEON |
| 83 #ifdef HAS_I422TOYUY2ROW_NEON |
82 YANY(I422ToYUY2Row_Any_NEON, I422ToYUY2Row_NEON, I422ToYUY2Row_C, 1, 2, 15) | 84 YANY(I422ToYUY2Row_Any_NEON, I422ToYUY2Row_NEON, I422ToYUY2Row_C, 1, 2, 15) |
| 85 #endif // HAS_I422TOYUY2ROW_NEON |
| 86 #ifdef HAS_I422TOUYVYROW_NEON |
83 YANY(I422ToUYVYRow_Any_NEON, I422ToUYVYRow_NEON, I422ToUYVYRow_C, 1, 2, 15) | 87 YANY(I422ToUYVYRow_Any_NEON, I422ToUYVYRow_NEON, I422ToUYVYRow_C, 1, 2, 15) |
84 #endif // HAS_I422TOARGBROW_NEON | 88 #endif // HAS_I422TOUYVYROW_NEON |
85 #undef YANY | 89 #undef YANY |
86 | 90 |
87 // Wrappers to handle odd width | 91 // Wrappers to handle odd width |
88 #define NV2NY(NAMEANY, NV12TORGB_SIMD, NV12TORGB_C, UV_SHIFT, BPP) \ | 92 #define NV2NY(NAMEANY, NV12TORGB_SIMD, NV12TORGB_C, UV_SHIFT, BPP) \ |
89 void NAMEANY(const uint8* y_buf, \ | 93 void NAMEANY(const uint8* y_buf, \ |
90 const uint8* uv_buf, \ | 94 const uint8* uv_buf, \ |
91 uint8* rgb_buf, \ | 95 uint8* rgb_buf, \ |
92 int width) { \ | 96 int width) { \ |
93 int n = width & ~7; \ | 97 int n = width & ~7; \ |
94 NV12TORGB_SIMD(y_buf, uv_buf, rgb_buf, n); \ | 98 NV12TORGB_SIMD(y_buf, uv_buf, rgb_buf, n); \ |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 YANY(ARGBToYRow_Any_NEON, ARGBToYRow_NEON, 4, 1, 8) | 247 YANY(ARGBToYRow_Any_NEON, ARGBToYRow_NEON, 4, 1, 8) |
244 YANY(ARGBToYJRow_Any_NEON, ARGBToYJRow_NEON, 4, 1, 8) | 248 YANY(ARGBToYJRow_Any_NEON, ARGBToYJRow_NEON, 4, 1, 8) |
245 YANY(BGRAToYRow_Any_NEON, BGRAToYRow_NEON, 4, 1, 8) | 249 YANY(BGRAToYRow_Any_NEON, BGRAToYRow_NEON, 4, 1, 8) |
246 YANY(ABGRToYRow_Any_NEON, ABGRToYRow_NEON, 4, 1, 8) | 250 YANY(ABGRToYRow_Any_NEON, ABGRToYRow_NEON, 4, 1, 8) |
247 YANY(RGBAToYRow_Any_NEON, RGBAToYRow_NEON, 4, 1, 8) | 251 YANY(RGBAToYRow_Any_NEON, RGBAToYRow_NEON, 4, 1, 8) |
248 YANY(RGB24ToYRow_Any_NEON, RGB24ToYRow_NEON, 3, 1, 8) | 252 YANY(RGB24ToYRow_Any_NEON, RGB24ToYRow_NEON, 3, 1, 8) |
249 YANY(RAWToYRow_Any_NEON, RAWToYRow_NEON, 3, 1, 8) | 253 YANY(RAWToYRow_Any_NEON, RAWToYRow_NEON, 3, 1, 8) |
250 YANY(RGB565ToYRow_Any_NEON, RGB565ToYRow_NEON, 2, 1, 8) | 254 YANY(RGB565ToYRow_Any_NEON, RGB565ToYRow_NEON, 2, 1, 8) |
251 YANY(ARGB1555ToYRow_Any_NEON, ARGB1555ToYRow_NEON, 2, 1, 8) | 255 YANY(ARGB1555ToYRow_Any_NEON, ARGB1555ToYRow_NEON, 2, 1, 8) |
252 YANY(ARGB4444ToYRow_Any_NEON, ARGB4444ToYRow_NEON, 2, 1, 8) | 256 YANY(ARGB4444ToYRow_Any_NEON, ARGB4444ToYRow_NEON, 2, 1, 8) |
| 257 #endif |
| 258 #ifdef HAS_YUY2TOYROW_NEON |
253 YANY(YUY2ToYRow_Any_NEON, YUY2ToYRow_NEON, 2, 1, 16) | 259 YANY(YUY2ToYRow_Any_NEON, YUY2ToYRow_NEON, 2, 1, 16) |
| 260 #endif |
| 261 #ifdef HAS_UYVYTOYROW_NEON |
254 YANY(UYVYToYRow_Any_NEON, UYVYToYRow_NEON, 2, 1, 16) | 262 YANY(UYVYToYRow_Any_NEON, UYVYToYRow_NEON, 2, 1, 16) |
| 263 #endif |
| 264 #ifdef HAS_RGB24TOARGBROW_NEON |
255 YANY(RGB24ToARGBRow_Any_NEON, RGB24ToARGBRow_NEON, 3, 4, 8) | 265 YANY(RGB24ToARGBRow_Any_NEON, RGB24ToARGBRow_NEON, 3, 4, 8) |
| 266 #endif |
| 267 #ifdef HAS_RAWTOARGBROW_NEON |
256 YANY(RAWToARGBRow_Any_NEON, RAWToARGBRow_NEON, 3, 4, 8) | 268 YANY(RAWToARGBRow_Any_NEON, RAWToARGBRow_NEON, 3, 4, 8) |
| 269 #endif |
| 270 #ifdef HAS_RGB565TOARGBROW_NEON |
257 YANY(RGB565ToARGBRow_Any_NEON, RGB565ToARGBRow_NEON, 2, 4, 8) | 271 YANY(RGB565ToARGBRow_Any_NEON, RGB565ToARGBRow_NEON, 2, 4, 8) |
| 272 #endif |
| 273 #ifdef HAS_ARGB1555TOARGBROW_NEON |
258 YANY(ARGB1555ToARGBRow_Any_NEON, ARGB1555ToARGBRow_NEON, 2, 4, 8) | 274 YANY(ARGB1555ToARGBRow_Any_NEON, ARGB1555ToARGBRow_NEON, 2, 4, 8) |
| 275 #endif |
| 276 #ifdef HAS_ARGB4444TOARGBROW_NEON |
259 YANY(ARGB4444ToARGBRow_Any_NEON, ARGB4444ToARGBRow_NEON, 2, 4, 8) | 277 YANY(ARGB4444ToARGBRow_Any_NEON, ARGB4444ToARGBRow_NEON, 2, 4, 8) |
260 #endif | 278 #endif |
261 #undef YANY | 279 #undef YANY |
262 | 280 |
263 #define YANY(NAMEANY, ARGBTOY_SIMD, ARGBTOY_C, SBPP, BPP, MASK) \ | 281 #define YANY(NAMEANY, ARGBTOY_SIMD, ARGBTOY_C, SBPP, BPP, MASK) \ |
264 void NAMEANY(const uint8* src_argb, uint8* dst_y, int width) { \ | 282 void NAMEANY(const uint8* src_argb, uint8* dst_y, int width) { \ |
265 int n = width & ~MASK; \ | 283 int n = width & ~MASK; \ |
266 ARGBTOY_SIMD(src_argb, dst_y, n); \ | 284 ARGBTOY_SIMD(src_argb, dst_y, n); \ |
267 ARGBTOY_C(src_argb + n * SBPP, \ | 285 ARGBTOY_C(src_argb + n * SBPP, \ |
268 dst_y + n * BPP, width & MASK); \ | 286 dst_y + n * BPP, width & MASK); \ |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 UVANY(ARGBToUVRow_Any_NEON, ARGBToUVRow_NEON, ARGBToUVRow_C, 4, 15) | 344 UVANY(ARGBToUVRow_Any_NEON, ARGBToUVRow_NEON, ARGBToUVRow_C, 4, 15) |
327 UVANY(ARGBToUVJRow_Any_NEON, ARGBToUVJRow_NEON, ARGBToUVJRow_C, 4, 15) | 345 UVANY(ARGBToUVJRow_Any_NEON, ARGBToUVJRow_NEON, ARGBToUVJRow_C, 4, 15) |
328 UVANY(BGRAToUVRow_Any_NEON, BGRAToUVRow_NEON, BGRAToUVRow_C, 4, 15) | 346 UVANY(BGRAToUVRow_Any_NEON, BGRAToUVRow_NEON, BGRAToUVRow_C, 4, 15) |
329 UVANY(ABGRToUVRow_Any_NEON, ABGRToUVRow_NEON, ABGRToUVRow_C, 4, 15) | 347 UVANY(ABGRToUVRow_Any_NEON, ABGRToUVRow_NEON, ABGRToUVRow_C, 4, 15) |
330 UVANY(RGBAToUVRow_Any_NEON, RGBAToUVRow_NEON, RGBAToUVRow_C, 4, 15) | 348 UVANY(RGBAToUVRow_Any_NEON, RGBAToUVRow_NEON, RGBAToUVRow_C, 4, 15) |
331 UVANY(RGB24ToUVRow_Any_NEON, RGB24ToUVRow_NEON, RGB24ToUVRow_C, 3, 15) | 349 UVANY(RGB24ToUVRow_Any_NEON, RGB24ToUVRow_NEON, RGB24ToUVRow_C, 3, 15) |
332 UVANY(RAWToUVRow_Any_NEON, RAWToUVRow_NEON, RAWToUVRow_C, 3, 15) | 350 UVANY(RAWToUVRow_Any_NEON, RAWToUVRow_NEON, RAWToUVRow_C, 3, 15) |
333 UVANY(RGB565ToUVRow_Any_NEON, RGB565ToUVRow_NEON, RGB565ToUVRow_C, 2, 15) | 351 UVANY(RGB565ToUVRow_Any_NEON, RGB565ToUVRow_NEON, RGB565ToUVRow_C, 2, 15) |
334 UVANY(ARGB1555ToUVRow_Any_NEON, ARGB1555ToUVRow_NEON, ARGB1555ToUVRow_C, 2, 15) | 352 UVANY(ARGB1555ToUVRow_Any_NEON, ARGB1555ToUVRow_NEON, ARGB1555ToUVRow_C, 2, 15) |
335 UVANY(ARGB4444ToUVRow_Any_NEON, ARGB4444ToUVRow_NEON, ARGB4444ToUVRow_C, 2, 15) | 353 UVANY(ARGB4444ToUVRow_Any_NEON, ARGB4444ToUVRow_NEON, ARGB4444ToUVRow_C, 2, 15) |
| 354 #endif |
| 355 #ifdef HAS_YUY2TOUVROW_NEON |
336 UVANY(YUY2ToUVRow_Any_NEON, YUY2ToUVRow_NEON, YUY2ToUVRow_C, 2, 15) | 356 UVANY(YUY2ToUVRow_Any_NEON, YUY2ToUVRow_NEON, YUY2ToUVRow_C, 2, 15) |
| 357 #endif |
| 358 #ifdef HAS_UYVYTOUVROW_NEON |
337 UVANY(UYVYToUVRow_Any_NEON, UYVYToUVRow_NEON, UYVYToUVRow_C, 2, 15) | 359 UVANY(UYVYToUVRow_Any_NEON, UYVYToUVRow_NEON, UYVYToUVRow_C, 2, 15) |
338 #endif | 360 #endif |
339 #undef UVANY | 361 #undef UVANY |
340 | 362 |
341 #define UV422ANY(NAMEANY, ANYTOUV_SIMD, ANYTOUV_C, BPP, MASK, SHIFT) \ | 363 #define UV422ANY(NAMEANY, ANYTOUV_SIMD, ANYTOUV_C, BPP, MASK, SHIFT) \ |
342 void NAMEANY(const uint8* src_uv, \ | 364 void NAMEANY(const uint8* src_uv, \ |
343 uint8* dst_u, uint8* dst_v, int width) { \ | 365 uint8* dst_u, uint8* dst_v, int width) { \ |
344 int n = width & ~MASK; \ | 366 int n = width & ~MASK; \ |
345 ANYTOUV_SIMD(src_uv, dst_u, dst_v, n); \ | 367 ANYTOUV_SIMD(src_uv, dst_u, dst_v, n); \ |
346 ANYTOUV_C(src_uv + n * BPP, \ | 368 ANYTOUV_C(src_uv + n * BPP, \ |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 #ifdef HAS_INTERPOLATEROW_MIPS_DSPR2 | 557 #ifdef HAS_INTERPOLATEROW_MIPS_DSPR2 |
536 NANY(InterpolateRow_Any_MIPS_DSPR2, InterpolateRow_MIPS_DSPR2, | 558 NANY(InterpolateRow_Any_MIPS_DSPR2, InterpolateRow_MIPS_DSPR2, |
537 InterpolateRow_C, 1, 1, 3) | 559 InterpolateRow_C, 1, 1, 3) |
538 #endif | 560 #endif |
539 #undef NANY | 561 #undef NANY |
540 | 562 |
541 #ifdef __cplusplus | 563 #ifdef __cplusplus |
542 } // extern "C" | 564 } // extern "C" |
543 } // namespace libyuv | 565 } // namespace libyuv |
544 #endif | 566 #endif |
OLD | NEW |