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 28 matching lines...) Expand all Loading... |
39 src_stride_argb = -src_stride_argb; | 39 src_stride_argb = -src_stride_argb; |
40 } | 40 } |
41 | 41 |
42 CopyPlane(src_argb, src_stride_argb, dst_argb, dst_stride_argb, | 42 CopyPlane(src_argb, src_stride_argb, dst_argb, dst_stride_argb, |
43 width * 4, height); | 43 width * 4, height); |
44 return 0; | 44 return 0; |
45 } | 45 } |
46 | 46 |
47 // Convert I444 to ARGB. | 47 // Convert I444 to ARGB. |
48 LIBYUV_API | 48 LIBYUV_API |
49 int I444ToARGB(const uint8* src_y, int src_stride_y, | 49 static int I444ToARGBMatrix(const uint8* src_y, int src_stride_y, |
50 const uint8* src_u, int src_stride_u, | 50 const uint8* src_u, int src_stride_u, |
51 const uint8* src_v, int src_stride_v, | 51 const uint8* src_v, int src_stride_v, |
52 uint8* dst_argb, int dst_stride_argb, | 52 uint8* dst_argb, int dst_stride_argb, |
53 int width, int height) { | 53 struct YuvConstants* yuvconstants, |
| 54 int width, int height) { |
54 int y; | 55 int y; |
55 void (*I444ToARGBRow)(const uint8* y_buf, | 56 void (*I444ToARGBRow)(const uint8* y_buf, |
56 const uint8* u_buf, | 57 const uint8* u_buf, |
57 const uint8* v_buf, | 58 const uint8* v_buf, |
58 uint8* rgb_buf, | 59 uint8* rgb_buf, |
59 struct YuvConstants* yuvconstants, | 60 struct YuvConstants* yuvconstants, |
60 int width) = I444ToARGBRow_C; | 61 int width) = I444ToARGBRow_C; |
61 if (!src_y || !src_u || !src_v || | 62 if (!src_y || !src_u || !src_v || |
62 !dst_argb || | 63 !dst_argb || |
63 width <= 0 || height == 0) { | 64 width <= 0 || height == 0) { |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 #if defined(HAS_I444TOARGBROW_NEON) | 98 #if defined(HAS_I444TOARGBROW_NEON) |
98 if (TestCpuFlag(kCpuHasNEON)) { | 99 if (TestCpuFlag(kCpuHasNEON)) { |
99 I444ToARGBRow = I444ToARGBRow_Any_NEON; | 100 I444ToARGBRow = I444ToARGBRow_Any_NEON; |
100 if (IS_ALIGNED(width, 8)) { | 101 if (IS_ALIGNED(width, 8)) { |
101 I444ToARGBRow = I444ToARGBRow_NEON; | 102 I444ToARGBRow = I444ToARGBRow_NEON; |
102 } | 103 } |
103 } | 104 } |
104 #endif | 105 #endif |
105 | 106 |
106 for (y = 0; y < height; ++y) { | 107 for (y = 0; y < height; ++y) { |
107 I444ToARGBRow(src_y, src_u, src_v, dst_argb, &kYuvConstants, width); | 108 I444ToARGBRow(src_y, src_u, src_v, dst_argb, yuvconstants, width); |
108 dst_argb += dst_stride_argb; | 109 dst_argb += dst_stride_argb; |
109 src_y += src_stride_y; | 110 src_y += src_stride_y; |
110 src_u += src_stride_u; | 111 src_u += src_stride_u; |
111 src_v += src_stride_v; | 112 src_v += src_stride_v; |
112 } | 113 } |
113 return 0; | 114 return 0; |
114 } | 115 } |
115 | 116 |
| 117 // Convert I444 to ARGB. |
| 118 LIBYUV_API |
| 119 int I444ToARGB(const uint8* src_y, int src_stride_y, |
| 120 const uint8* src_u, int src_stride_u, |
| 121 const uint8* src_v, int src_stride_v, |
| 122 uint8* dst_argb, int dst_stride_argb, |
| 123 int width, int height) { |
| 124 return I444ToARGBMatrix(src_y, src_stride_y, |
| 125 src_u, src_stride_u, |
| 126 src_v, src_stride_v, |
| 127 dst_argb, dst_stride_argb, |
| 128 &kYuvConstants, |
| 129 width, height); |
| 130 } |
| 131 |
| 132 |
| 133 // Convert J444 to ARGB. |
| 134 LIBYUV_API |
| 135 int J444ToARGB(const uint8* src_y, int src_stride_y, |
| 136 const uint8* src_u, int src_stride_u, |
| 137 const uint8* src_v, int src_stride_v, |
| 138 uint8* dst_argb, int dst_stride_argb, |
| 139 int width, int height) { |
| 140 return I444ToARGBMatrix(src_y, src_stride_y, |
| 141 src_u, src_stride_u, |
| 142 src_v, src_stride_v, |
| 143 dst_argb, dst_stride_argb, |
| 144 &kYuvJConstants, |
| 145 width, height); |
| 146 } |
| 147 |
| 148 |
116 // Convert I444 to ABGR. | 149 // Convert I444 to ABGR. |
117 LIBYUV_API | 150 LIBYUV_API |
118 int I444ToABGR(const uint8* src_y, int src_stride_y, | 151 int I444ToABGR(const uint8* src_y, int src_stride_y, |
119 const uint8* src_u, int src_stride_u, | 152 const uint8* src_u, int src_stride_u, |
120 const uint8* src_v, int src_stride_v, | 153 const uint8* src_v, int src_stride_v, |
121 uint8* dst_abgr, int dst_stride_abgr, | 154 uint8* dst_abgr, int dst_stride_abgr, |
122 int width, int height) { | 155 int width, int height) { |
123 int y; | 156 int y; |
124 void (*I444ToABGRRow)(const uint8* y_buf, | 157 void (*I444ToABGRRow)(const uint8* y_buf, |
125 const uint8* u_buf, | 158 const uint8* u_buf, |
(...skipping 1755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1881 src_u += src_stride_u; | 1914 src_u += src_stride_u; |
1882 src_v += src_stride_v; | 1915 src_v += src_stride_v; |
1883 } | 1916 } |
1884 return 0; | 1917 return 0; |
1885 } | 1918 } |
1886 | 1919 |
1887 #ifdef __cplusplus | 1920 #ifdef __cplusplus |
1888 } // extern "C" | 1921 } // extern "C" |
1889 } // namespace libyuv | 1922 } // namespace libyuv |
1890 #endif | 1923 #endif |
OLD | NEW |