OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2011 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 27 matching lines...) Expand all Loading... |
38 void SetPlane(uint8* dst_y, int dst_stride_y, | 38 void SetPlane(uint8* dst_y, int dst_stride_y, |
39 int width, int height, | 39 int width, int height, |
40 uint32 value); | 40 uint32 value); |
41 | 41 |
42 // Copy I400. Supports inverting. | 42 // Copy I400. Supports inverting. |
43 LIBYUV_API | 43 LIBYUV_API |
44 int I400ToI400(const uint8* src_y, int src_stride_y, | 44 int I400ToI400(const uint8* src_y, int src_stride_y, |
45 uint8* dst_y, int dst_stride_y, | 45 uint8* dst_y, int dst_stride_y, |
46 int width, int height); | 46 int width, int height); |
47 | 47 |
| 48 #define J400ToJ400 I400ToI400 |
48 | 49 |
49 // Copy I422 to I422. | 50 // Copy I422 to I422. |
50 #define I422ToI422 I422Copy | 51 #define I422ToI422 I422Copy |
51 LIBYUV_API | 52 LIBYUV_API |
52 int I422Copy(const uint8* src_y, int src_stride_y, | 53 int I422Copy(const uint8* src_y, int src_stride_y, |
53 const uint8* src_u, int src_stride_u, | 54 const uint8* src_u, int src_stride_u, |
54 const uint8* src_v, int src_stride_v, | 55 const uint8* src_v, int src_stride_v, |
55 uint8* dst_y, int dst_stride_y, | 56 uint8* dst_y, int dst_stride_y, |
56 uint8* dst_u, int dst_stride_u, | 57 uint8* dst_u, int dst_stride_u, |
57 uint8* dst_v, int dst_stride_v, | 58 uint8* dst_v, int dst_stride_v, |
(...skipping 19 matching lines...) Expand all Loading... |
77 int width, int height); | 78 int width, int height); |
78 | 79 |
79 // Convert UYVY to I422. | 80 // Convert UYVY to I422. |
80 LIBYUV_API | 81 LIBYUV_API |
81 int UYVYToI422(const uint8* src_uyvy, int src_stride_uyvy, | 82 int UYVYToI422(const uint8* src_uyvy, int src_stride_uyvy, |
82 uint8* dst_y, int dst_stride_y, | 83 uint8* dst_y, int dst_stride_y, |
83 uint8* dst_u, int dst_stride_u, | 84 uint8* dst_u, int dst_stride_u, |
84 uint8* dst_v, int dst_stride_v, | 85 uint8* dst_v, int dst_stride_v, |
85 int width, int height); | 86 int width, int height); |
86 | 87 |
| 88 LIBYUV_API |
| 89 int YUY2ToNV12(const uint8* src_yuy2, int src_stride_yuy2, |
| 90 uint8* dst_y, int dst_stride_y, |
| 91 uint8* dst_uv, int dst_stride_uv, |
| 92 int width, int height); |
| 93 |
| 94 LIBYUV_API |
| 95 int UYVYToNV12(const uint8* src_uyvy, int src_stride_uyvy, |
| 96 uint8* dst_y, int dst_stride_y, |
| 97 uint8* dst_uv, int dst_stride_uv, |
| 98 int width, int height); |
| 99 |
87 // Convert I420 to I400. (calls CopyPlane ignoring u/v). | 100 // Convert I420 to I400. (calls CopyPlane ignoring u/v). |
88 LIBYUV_API | 101 LIBYUV_API |
89 int I420ToI400(const uint8* src_y, int src_stride_y, | 102 int I420ToI400(const uint8* src_y, int src_stride_y, |
90 const uint8* src_u, int src_stride_u, | 103 const uint8* src_u, int src_stride_u, |
91 const uint8* src_v, int src_stride_v, | 104 const uint8* src_v, int src_stride_v, |
92 uint8* dst_y, int dst_stride_y, | 105 uint8* dst_y, int dst_stride_y, |
93 int width, int height); | 106 int width, int height); |
94 | 107 |
95 // Alias | 108 // Alias |
| 109 #define J420ToJ400 I420ToI400 |
96 #define I420ToI420Mirror I420Mirror | 110 #define I420ToI420Mirror I420Mirror |
97 | 111 |
98 // I420 mirror. | 112 // I420 mirror. |
99 LIBYUV_API | 113 LIBYUV_API |
100 int I420Mirror(const uint8* src_y, int src_stride_y, | 114 int I420Mirror(const uint8* src_y, int src_stride_y, |
101 const uint8* src_u, int src_stride_u, | 115 const uint8* src_u, int src_stride_u, |
102 const uint8* src_v, int src_stride_v, | 116 const uint8* src_v, int src_stride_v, |
103 uint8* dst_y, int dst_stride_y, | 117 uint8* dst_y, int dst_stride_y, |
104 uint8* dst_u, int dst_stride_u, | 118 uint8* dst_u, int dst_stride_u, |
105 uint8* dst_v, int dst_stride_v, | 119 uint8* dst_v, int dst_stride_v, |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 // 'interpolation' is specified as 8 bit fraction where 0 means 100% src_argb0 | 394 // 'interpolation' is specified as 8 bit fraction where 0 means 100% src_argb0 |
381 // and 255 means 1% src_argb0 and 99% src_argb1. | 395 // and 255 means 1% src_argb0 and 99% src_argb1. |
382 // Internally uses ARGBScale bilinear filtering. | 396 // Internally uses ARGBScale bilinear filtering. |
383 // Caveat: This function will write up to 16 bytes beyond the end of dst_argb. | 397 // Caveat: This function will write up to 16 bytes beyond the end of dst_argb. |
384 LIBYUV_API | 398 LIBYUV_API |
385 int ARGBInterpolate(const uint8* src_argb0, int src_stride_argb0, | 399 int ARGBInterpolate(const uint8* src_argb0, int src_stride_argb0, |
386 const uint8* src_argb1, int src_stride_argb1, | 400 const uint8* src_argb1, int src_stride_argb1, |
387 uint8* dst_argb, int dst_stride_argb, | 401 uint8* dst_argb, int dst_stride_argb, |
388 int width, int height, int interpolation); | 402 int width, int height, int interpolation); |
389 | 403 |
390 #if defined(__pnacl__) || defined(__CLR_VER) || defined(COVERAGE_ENABLED) || \ | 404 #if defined(__pnacl__) || defined(__CLR_VER) || \ |
391 defined(TARGET_IPHONE_SIMULATOR) | 405 (defined(__i386__) && !defined(__SSE2__)) |
392 #define LIBYUV_DISABLE_X86 | 406 #define LIBYUV_DISABLE_X86 |
393 #endif | 407 #endif |
| 408 // The following are available on all x86 platforms: |
| 409 #if !defined(LIBYUV_DISABLE_X86) && \ |
| 410 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) |
| 411 #define HAS_ARGBAFFINEROW_SSE2 |
| 412 #endif |
394 | 413 |
395 // Row functions for copying a pixels from a source with a slope to a row | 414 // Row function for copying pixels from a source with a slope to a row |
396 // of destination. Useful for scaling, rotation, mirror, texture mapping. | 415 // of destination. Useful for scaling, rotation, mirror, texture mapping. |
397 LIBYUV_API | 416 LIBYUV_API |
398 void ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride, | 417 void ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride, |
399 uint8* dst_argb, const float* uv_dudv, int width); | 418 uint8* dst_argb, const float* uv_dudv, int width); |
400 // The following are available on all x86 platforms: | |
401 #if !defined(LIBYUV_DISABLE_X86) && \ | |
402 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) | |
403 LIBYUV_API | 419 LIBYUV_API |
404 void ARGBAffineRow_SSE2(const uint8* src_argb, int src_argb_stride, | 420 void ARGBAffineRow_SSE2(const uint8* src_argb, int src_argb_stride, |
405 uint8* dst_argb, const float* uv_dudv, int width); | 421 uint8* dst_argb, const float* uv_dudv, int width); |
406 #define HAS_ARGBAFFINEROW_SSE2 | |
407 #endif // LIBYUV_DISABLE_X86 | |
408 | 422 |
409 // Shuffle ARGB channel order. e.g. BGRA to ARGB. | 423 // Shuffle ARGB channel order. e.g. BGRA to ARGB. |
410 // shuffler is 16 bytes and must be aligned. | 424 // shuffler is 16 bytes and must be aligned. |
411 LIBYUV_API | 425 LIBYUV_API |
412 int ARGBShuffle(const uint8* src_bgra, int src_stride_bgra, | 426 int ARGBShuffle(const uint8* src_bgra, int src_stride_bgra, |
413 uint8* dst_argb, int dst_stride_argb, | 427 uint8* dst_argb, int dst_stride_argb, |
414 const uint8* shuffler, int width, int height); | 428 const uint8* shuffler, int width, int height); |
415 | 429 |
416 // Sobel ARGB effect with planar output. | 430 // Sobel ARGB effect with planar output. |
417 LIBYUV_API | 431 LIBYUV_API |
(...skipping 12 matching lines...) Expand all Loading... |
430 int ARGBSobelXY(const uint8* src_argb, int src_stride_argb, | 444 int ARGBSobelXY(const uint8* src_argb, int src_stride_argb, |
431 uint8* dst_argb, int dst_stride_argb, | 445 uint8* dst_argb, int dst_stride_argb, |
432 int width, int height); | 446 int width, int height); |
433 | 447 |
434 #ifdef __cplusplus | 448 #ifdef __cplusplus |
435 } // extern "C" | 449 } // extern "C" |
436 } // namespace libyuv | 450 } // namespace libyuv |
437 #endif | 451 #endif |
438 | 452 |
439 #endif // INCLUDE_LIBYUV_PLANAR_FUNCTIONS_H_ NOLINT | 453 #endif // INCLUDE_LIBYUV_PLANAR_FUNCTIONS_H_ NOLINT |
OLD | NEW |