SDL  2.0
yuv_rgb.h
Go to the documentation of this file.
1 // Copyright 2016 Adrien Descamps
2 // Distributed under BSD 3-Clause License
3 
4 // Provide optimized functions to convert images from 8bits yuv420 to rgb24 format
5 
6 // There are a few slightly different variations of the YCbCr color space with different parameters that
7 // change the conversion matrix.
8 // The three most common YCbCr color space, defined by BT.601, BT.709 and JPEG standard are implemented here.
9 // See the respective standards for details
10 // The matrix values used are derived from http://www.equasys.de/colorconversion.html
11 
12 // YUV420 is stored as three separate channels, with U and V (Cb and Cr) subsampled by a 2 factor
13 // For conversion from yuv to rgb, no interpolation is done, and the same UV value are used for 4 rgb pixels. This
14 // is suboptimal for image quality, but by far the fastest method.
15 
16 // For all methods, width and height should be even, if not, the last row/column of the result image won't be affected.
17 // For sse methods, if the width if not divisable by 32, the last (width%32) pixels of each line won't be affected.
18 
19 #include "SDL_stdinc.h"
20 /*#include <stdint.h>*/
21 
22 typedef enum
23 {
27 } YCbCrType;
28 
29 // yuv to rgb, standard c implementation
32  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
33  uint8_t *rgb, uint32_t rgb_stride,
34  YCbCrType yuv_type);
35 
36 void yuv420_rgb24_std(
38  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
39  uint8_t *rgb, uint32_t rgb_stride,
40  YCbCrType yuv_type);
41 
42 void yuv420_rgba_std(
44  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
45  uint8_t *rgb, uint32_t rgb_stride,
46  YCbCrType yuv_type);
47 
48 void yuv420_bgra_std(
50  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
51  uint8_t *rgb, uint32_t rgb_stride,
52  YCbCrType yuv_type);
53 
54 void yuv420_argb_std(
56  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
57  uint8_t *rgb, uint32_t rgb_stride,
58  YCbCrType yuv_type);
59 
60 void yuv420_abgr_std(
62  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
63  uint8_t *rgb, uint32_t rgb_stride,
64  YCbCrType yuv_type);
65 
68  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
69  uint8_t *rgb, uint32_t rgb_stride,
70  YCbCrType yuv_type);
71 
72 void yuv422_rgb24_std(
74  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
75  uint8_t *rgb, uint32_t rgb_stride,
76  YCbCrType yuv_type);
77 
78 void yuv422_rgba_std(
80  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
81  uint8_t *rgb, uint32_t rgb_stride,
82  YCbCrType yuv_type);
83 
84 void yuv422_bgra_std(
86  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
87  uint8_t *rgb, uint32_t rgb_stride,
88  YCbCrType yuv_type);
89 
90 void yuv422_argb_std(
92  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
93  uint8_t *rgb, uint32_t rgb_stride,
94  YCbCrType yuv_type);
95 
96 void yuv422_abgr_std(
98  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
99  uint8_t *rgb, uint32_t rgb_stride,
100  YCbCrType yuv_type);
101 
102 void yuvnv12_rgb565_std(
104  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
105  uint8_t *rgb, uint32_t rgb_stride,
106  YCbCrType yuv_type);
107 
108 void yuvnv12_rgb24_std(
110  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
111  uint8_t *rgb, uint32_t rgb_stride,
112  YCbCrType yuv_type);
113 
114 void yuvnv12_rgba_std(
116  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
117  uint8_t *rgb, uint32_t rgb_stride,
118  YCbCrType yuv_type);
119 
120 void yuvnv12_bgra_std(
122  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
123  uint8_t *rgb, uint32_t rgb_stride,
124  YCbCrType yuv_type);
125 
126 void yuvnv12_argb_std(
128  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
129  uint8_t *rgb, uint32_t rgb_stride,
130  YCbCrType yuv_type);
131 
132 void yuvnv12_abgr_std(
134  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
135  uint8_t *rgb, uint32_t rgb_stride,
136  YCbCrType yuv_type);
137 
138 // yuv to rgb, sse implementation
139 // pointers must be 16 byte aligned, and strides must be divisable by 16
140 void yuv420_rgb565_sse(
142  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
143  uint8_t *rgb, uint32_t rgb_stride,
144  YCbCrType yuv_type);
145 
146 void yuv420_rgb24_sse(
148  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
149  uint8_t *rgb, uint32_t rgb_stride,
150  YCbCrType yuv_type);
151 
152 void yuv420_rgba_sse(
154  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
155  uint8_t *rgb, uint32_t rgb_stride,
156  YCbCrType yuv_type);
157 
158 void yuv420_bgra_sse(
160  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
161  uint8_t *rgb, uint32_t rgb_stride,
162  YCbCrType yuv_type);
163 
164 void yuv420_argb_sse(
166  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
167  uint8_t *rgb, uint32_t rgb_stride,
168  YCbCrType yuv_type);
169 
170 void yuv420_abgr_sse(
172  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
173  uint8_t *rgb, uint32_t rgb_stride,
174  YCbCrType yuv_type);
175 
176 void yuv422_rgb565_sse(
178  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
179  uint8_t *rgb, uint32_t rgb_stride,
180  YCbCrType yuv_type);
181 
182 void yuv422_rgb24_sse(
184  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
185  uint8_t *rgb, uint32_t rgb_stride,
186  YCbCrType yuv_type);
187 
188 void yuv422_rgba_sse(
190  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
191  uint8_t *rgb, uint32_t rgb_stride,
192  YCbCrType yuv_type);
193 
194 void yuv422_bgra_sse(
196  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
197  uint8_t *rgb, uint32_t rgb_stride,
198  YCbCrType yuv_type);
199 
200 void yuv422_argb_sse(
202  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
203  uint8_t *rgb, uint32_t rgb_stride,
204  YCbCrType yuv_type);
205 
206 void yuv422_abgr_sse(
208  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
209  uint8_t *rgb, uint32_t rgb_stride,
210  YCbCrType yuv_type);
211 
212 void yuvnv12_rgb565_sse(
214  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
215  uint8_t *rgb, uint32_t rgb_stride,
216  YCbCrType yuv_type);
217 
218 void yuvnv12_rgb24_sse(
220  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
221  uint8_t *rgb, uint32_t rgb_stride,
222  YCbCrType yuv_type);
223 
224 void yuvnv12_rgba_sse(
226  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
227  uint8_t *rgb, uint32_t rgb_stride,
228  YCbCrType yuv_type);
229 
230 void yuvnv12_bgra_sse(
232  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
233  uint8_t *rgb, uint32_t rgb_stride,
234  YCbCrType yuv_type);
235 
236 void yuvnv12_argb_sse(
238  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
239  uint8_t *rgb, uint32_t rgb_stride,
240  YCbCrType yuv_type);
241 
242 void yuvnv12_abgr_sse(
244  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
245  uint8_t *rgb, uint32_t rgb_stride,
246  YCbCrType yuv_type);
247 
248 // yuv to rgb, sse implementation
249 // pointers do not need to be 16 byte aligned
250 void yuv420_rgb565_sseu(
252  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
253  uint8_t *rgb, uint32_t rgb_stride,
254  YCbCrType yuv_type);
255 
256 void yuv420_rgb24_sseu(
258  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
259  uint8_t *rgb, uint32_t rgb_stride,
260  YCbCrType yuv_type);
261 
262 void yuv420_rgba_sseu(
264  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
265  uint8_t *rgb, uint32_t rgb_stride,
266  YCbCrType yuv_type);
267 
268 void yuv420_bgra_sseu(
270  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
271  uint8_t *rgb, uint32_t rgb_stride,
272  YCbCrType yuv_type);
273 
274 void yuv420_argb_sseu(
276  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
277  uint8_t *rgb, uint32_t rgb_stride,
278  YCbCrType yuv_type);
279 
280 void yuv420_abgr_sseu(
282  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
283  uint8_t *rgb, uint32_t rgb_stride,
284  YCbCrType yuv_type);
285 
286 void yuv422_rgb565_sseu(
288  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
289  uint8_t *rgb, uint32_t rgb_stride,
290  YCbCrType yuv_type);
291 
292 void yuv422_rgb24_sseu(
294  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
295  uint8_t *rgb, uint32_t rgb_stride,
296  YCbCrType yuv_type);
297 
298 void yuv422_rgba_sseu(
300  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
301  uint8_t *rgb, uint32_t rgb_stride,
302  YCbCrType yuv_type);
303 
304 void yuv422_bgra_sseu(
306  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
307  uint8_t *rgb, uint32_t rgb_stride,
308  YCbCrType yuv_type);
309 
310 void yuv422_argb_sseu(
312  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
313  uint8_t *rgb, uint32_t rgb_stride,
314  YCbCrType yuv_type);
315 
316 void yuv422_abgr_sseu(
318  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
319  uint8_t *rgb, uint32_t rgb_stride,
320  YCbCrType yuv_type);
321 
324  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
325  uint8_t *rgb, uint32_t rgb_stride,
326  YCbCrType yuv_type);
327 
328 void yuvnv12_rgb24_sseu(
330  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
331  uint8_t *rgb, uint32_t rgb_stride,
332  YCbCrType yuv_type);
333 
334 void yuvnv12_rgba_sseu(
336  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
337  uint8_t *rgb, uint32_t rgb_stride,
338  YCbCrType yuv_type);
339 
340 void yuvnv12_bgra_sseu(
342  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
343  uint8_t *rgb, uint32_t rgb_stride,
344  YCbCrType yuv_type);
345 
346 void yuvnv12_argb_sseu(
348  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
349  uint8_t *rgb, uint32_t rgb_stride,
350  YCbCrType yuv_type);
351 
352 void yuvnv12_abgr_sseu(
354  const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
355  uint8_t *rgb, uint32_t rgb_stride,
356  YCbCrType yuv_type);
357 
358 
359 // rgb to yuv, standard c implementation
360 void rgb24_yuv420_std(
362  const uint8_t *rgb, uint32_t rgb_stride,
363  uint8_t *y, uint8_t *u, uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
364  YCbCrType yuv_type);
365 
366 // rgb to yuv, sse implementation
367 // pointers must be 16 byte aligned, and strides must be divisible by 16
368 void rgb24_yuv420_sse(
370  const uint8_t *rgb, uint32_t rgb_stride,
371  uint8_t *y, uint8_t *u, uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
372  YCbCrType yuv_type);
373 
374 // rgb to yuv, sse implementation
375 // pointers do not need to be 16 byte aligned
376 void rgb24_yuv420_sseu(
378  const uint8_t *rgb, uint32_t rgb_stride,
379  uint8_t *y, uint8_t *u, uint8_t *v, uint32_t y_stride, uint32_t uv_stride,
380  YCbCrType yuv_type);
381 
void rgb24_yuv420_std(uint32_t width, uint32_t height, const uint8_t *rgb, uint32_t rgb_stride, uint8_t *y, uint8_t *u, uint8_t *v, uint32_t y_stride, uint32_t uv_stride, YCbCrType yuv_type)
Definition: yuv_rgb.c:186
void yuv420_rgb565_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgb565_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgb565_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_abgr_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgb24_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgb24_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_abgr_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_argb_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
const GLdouble * v
Definition: SDL_opengl.h:2064
void rgb24_yuv420_sseu(uint32_t width, uint32_t height, const uint8_t *rgb, uint32_t rgb_stride, uint8_t *y, uint8_t *u, uint8_t *v, uint32_t y_stride, uint32_t uv_stride, YCbCrType yuv_type)
void yuv420_rgb565_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_rgb24_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_bgra_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_argb_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_rgba_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_argb_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_abgr_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_rgba_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_abgr_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_argb_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
void yuv422_rgb24_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_bgra_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgba_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_argb_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_bgra_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void rgb24_yuv420_sse(uint32_t width, uint32_t height, const uint8_t *rgb, uint32_t rgb_stride, uint8_t *y, uint8_t *u, uint8_t *v, uint32_t y_stride, uint32_t uv_stride, YCbCrType yuv_type)
void yuv420_rgba_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_argb_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_argb_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgb565_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_abgr_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgb24_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_abgr_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_rgb24_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1574
void yuv420_argb_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgba_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_bgra_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
YCbCrType
Definition: yuv_rgb.h:22
void yuvnv12_argb_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
unsigned char uint8_t
unsigned int uint32_t
void yuvnv12_rgb565_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_bgra_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgb565_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_bgra_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
void yuvnv12_rgba_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgb24_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_abgr_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_bgra_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_bgra_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgba_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_rgb565_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_abgr_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgba_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgba_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgb565_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgb24_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_bgra_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_rgb24_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_abgr_sse(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)