Skip to main content

singe_npp/image/
color_yuv.rs

1use super::*;
2
3impl_color_convert_same_layout!(rgb_to_xyz_u8_c3, u8, C3, nppiRGBToXYZ_8u_C3R_Ctx);
4impl_color_convert_same_layout!(rgb_to_xyz_u8_ac4, u8, AC4, nppiRGBToXYZ_8u_AC4R_Ctx);
5impl_color_convert_same_layout!(xyz_to_rgb_u8_c3, u8, C3, nppiXYZToRGB_8u_C3R_Ctx);
6impl_color_convert_same_layout!(xyz_to_rgb_u8_ac4, u8, AC4, nppiXYZToRGB_8u_AC4R_Ctx);
7impl_color_convert_same_layout!(rgb_to_luv_u8_c3, u8, C3, nppiRGBToLUV_8u_C3R_Ctx);
8impl_color_convert_same_layout!(rgb_to_luv_u8_ac4, u8, AC4, nppiRGBToLUV_8u_AC4R_Ctx);
9impl_color_convert_same_layout!(luv_to_rgb_u8_c3, u8, C3, nppiLUVToRGB_8u_C3R_Ctx);
10impl_color_convert_same_layout!(luv_to_rgb_u8_ac4, u8, AC4, nppiLUVToRGB_8u_AC4R_Ctx);
11impl_color_convert_same_layout!(rgb_to_hsv_u8_c3, u8, C3, nppiRGBToHSV_8u_C3R_Ctx);
12impl_color_convert_same_layout!(rgb_to_hsv_u8_ac4, u8, AC4, nppiRGBToHSV_8u_AC4R_Ctx);
13impl_color_convert_same_layout!(hsv_to_rgb_u8_c3, u8, C3, nppiHSVToRGB_8u_C3R_Ctx);
14impl_color_convert_same_layout!(hsv_to_rgb_u8_ac4, u8, AC4, nppiHSVToRGB_8u_AC4R_Ctx);
15impl_color_convert_same_layout!(rgb_to_hls_u8_c3, u8, C3, nppiRGBToHLS_8u_C3R_Ctx);
16impl_color_convert_same_layout!(rgb_to_hls_u8_ac4, u8, AC4, nppiRGBToHLS_8u_AC4R_Ctx);
17impl_color_convert_same_layout!(hls_to_rgb_u8_c3, u8, C3, nppiHLSToRGB_8u_C3R_Ctx);
18impl_color_convert_same_layout!(hls_to_rgb_u8_ac4, u8, AC4, nppiHLSToRGB_8u_AC4R_Ctx);
19impl_color_convert_same_layout!(bgr_to_lab_u8_c3, u8, C3, nppiBGRToLab_8u_C3R_Ctx);
20impl_color_convert_same_layout!(lab_to_bgr_u8_c3, u8, C3, nppiLabToBGR_8u_C3R_Ctx);
21impl_color_convert_same_layout!(rgb_to_yuv_u8_c3, u8, C3, nppiRGBToYUV_8u_C3R_Ctx);
22impl_color_convert_same_layout!(rgb_to_yuv_u8_ac4, u8, AC4, nppiRGBToYUV_8u_AC4R_Ctx);
23impl_generic_color_convert_same_layout!(RgbToXyzC3, rgb_to_xyz, rgb_to_xyz_c3, C3, [
24    u8 => rgb_to_xyz_u8_c3,
25]);
26impl_generic_color_convert_same_layout!(RgbToXyzAC4, rgb_to_xyz, rgb_to_xyz_ac4, AC4, [
27    u8 => rgb_to_xyz_u8_ac4,
28]);
29impl_generic_color_convert_same_layout!(XyzToRgbC3, xyz_to_rgb, xyz_to_rgb_c3, C3, [
30    u8 => xyz_to_rgb_u8_c3,
31]);
32impl_generic_color_convert_same_layout!(XyzToRgbAC4, xyz_to_rgb, xyz_to_rgb_ac4, AC4, [
33    u8 => xyz_to_rgb_u8_ac4,
34]);
35impl_generic_color_convert_same_layout!(RgbToLuvC3, rgb_to_luv, rgb_to_luv_c3, C3, [
36    u8 => rgb_to_luv_u8_c3,
37]);
38impl_generic_color_convert_same_layout!(RgbToLuvAC4, rgb_to_luv, rgb_to_luv_ac4, AC4, [
39    u8 => rgb_to_luv_u8_ac4,
40]);
41impl_generic_color_convert_same_layout!(LuvToRgbC3, luv_to_rgb, luv_to_rgb_c3, C3, [
42    u8 => luv_to_rgb_u8_c3,
43]);
44impl_generic_color_convert_same_layout!(LuvToRgbAC4, luv_to_rgb, luv_to_rgb_ac4, AC4, [
45    u8 => luv_to_rgb_u8_ac4,
46]);
47impl_generic_color_convert_same_layout!(RgbToHsvC3, rgb_to_hsv, rgb_to_hsv_c3, C3, [
48    u8 => rgb_to_hsv_u8_c3,
49]);
50impl_generic_color_convert_same_layout!(RgbToHsvAC4, rgb_to_hsv, rgb_to_hsv_ac4, AC4, [
51    u8 => rgb_to_hsv_u8_ac4,
52]);
53impl_generic_color_convert_same_layout!(HsvToRgbC3, hsv_to_rgb, hsv_to_rgb_c3, C3, [
54    u8 => hsv_to_rgb_u8_c3,
55]);
56impl_generic_color_convert_same_layout!(HsvToRgbAC4, hsv_to_rgb, hsv_to_rgb_ac4, AC4, [
57    u8 => hsv_to_rgb_u8_ac4,
58]);
59impl_generic_color_convert_same_layout!(RgbToHlsC3, rgb_to_hls, rgb_to_hls_c3, C3, [
60    u8 => rgb_to_hls_u8_c3,
61]);
62impl_generic_color_convert_same_layout!(RgbToHlsAC4, rgb_to_hls, rgb_to_hls_ac4, AC4, [
63    u8 => rgb_to_hls_u8_ac4,
64]);
65impl_generic_color_convert_same_layout!(HlsToRgbC3, hls_to_rgb, hls_to_rgb_c3, C3, [
66    u8 => hls_to_rgb_u8_c3,
67]);
68impl_generic_color_convert_same_layout!(HlsToRgbAC4, hls_to_rgb, hls_to_rgb_ac4, AC4, [
69    u8 => hls_to_rgb_u8_ac4,
70]);
71impl_generic_color_convert_same_layout!(BgrToLabC3, bgr_to_lab, bgr_to_lab_c3, C3, [
72    u8 => bgr_to_lab_u8_c3,
73]);
74impl_generic_color_convert_same_layout!(LabToBgrC3, lab_to_bgr, lab_to_bgr_c3, C3, [
75    u8 => lab_to_bgr_u8_c3,
76]);
77impl_generic_color_convert_same_layout!(RgbToYuvC3, rgb_to_yuv, rgb_to_yuv_c3, C3, [
78    u8 => rgb_to_yuv_u8_c3,
79]);
80impl_generic_color_convert_same_layout!(RgbToYuvAC4, rgb_to_yuv, rgb_to_yuv_ac4, AC4, [
81    u8 => rgb_to_yuv_u8_ac4,
82]);
83impl_color_convert_different_layout!(
84    rgb_to_yuv422_u8_c3_to_c2,
85    u8,
86    C3,
87    C2,
88    nppiRGBToYUV422_8u_C3C2R_Ctx
89);
90impl_color_twist_different_layout!(
91    rgb_to_yuv422_u8_color_twist_c3_to_c2,
92    u8,
93    C3,
94    C2,
95    nppiRGBToYUV422_8u_ColorTwist32f_C3C2R_Ctx
96);
97impl_color_twist_different_layout!(
98    rgb_to_yuv422_u16_color_twist_c3_to_c2,
99    u16,
100    C3,
101    C2,
102    nppiRGBToYUV422_16u_ColorTwist32f_C3C2R_Ctx
103);
104impl_color_convert_same_layout!(yuv_to_rgb_u8_c3, u8, C3, nppiYUVToRGB_8u_C3R_Ctx);
105impl_color_convert_same_layout!(yuv_to_rgb_u8_ac4, u8, AC4, nppiYUVToRGB_8u_AC4R_Ctx);
106impl_generic_color_convert_same_layout!(YuvToRgbC3, yuv_to_rgb, yuv_to_rgb_c3, C3, [
107    u8 => yuv_to_rgb_u8_c3,
108]);
109impl_generic_color_convert_same_layout!(YuvToRgbAC4, yuv_to_rgb, yuv_to_rgb_ac4, AC4, [
110    u8 => yuv_to_rgb_u8_ac4,
111]);
112impl_color_convert_different_layout!(
113    yuv422_to_rgb_u8_c2_to_c3,
114    u8,
115    C2,
116    C3,
117    nppiYUV422ToRGB_8u_C2C3R_Ctx
118);
119impl_color_twist_different_layout!(
120    yuv422_to_rgb_u8_color_twist_c2_to_c3,
121    u8,
122    C2,
123    C3,
124    nppiYUV422ToRGB_8u_ColorTwist32f_C2C3R_Ctx
125);
126impl_color_twist_different_layout!(
127    yuv422_to_rgb_u16_color_twist_c2_to_c3,
128    u16,
129    C2,
130    C3,
131    nppiYUV422ToRGB_16u_ColorTwist32f_C2C3R_Ctx
132);
133impl_subsampled_color_twist_planar_forward!(
134    rgb_to_yuv422_u8_color_twist_p3,
135    u8,
136    nppiRGBToYUV422_8u_ColorTwist32f_P3R_Ctx,
137    2,
138    1
139);
140impl_subsampled_color_twist_planar_forward!(
141    rgb_to_yuv422_u16_color_twist_p3,
142    u16,
143    nppiRGBToYUV422_16u_ColorTwist32f_P3R_Ctx,
144    2,
145    1
146);
147impl_subsampled_color_twist_packed_forward!(
148    rgb_to_yuv422_u8_color_twist_c3_to_p3,
149    u8,
150    C3,
151    nppiRGBToYUV422_8u_ColorTwist32f_C3P3R_Ctx,
152    2,
153    1
154);
155impl_subsampled_color_twist_packed_forward!(
156    rgb_to_yuv422_u16_color_twist_c3_to_p3,
157    u16,
158    C3,
159    nppiRGBToYUV422_16u_ColorTwist32f_C3P3R_Ctx,
160    2,
161    1
162);
163impl_subsampled_color_twist_planar_inverse!(
164    yuv422_to_rgb_u8_color_twist_p3,
165    u8,
166    nppiYUV422ToRGB_8u_ColorTwist32f_P3R_Ctx,
167    2,
168    1
169);
170impl_subsampled_color_twist_planar_inverse!(
171    yuv422_to_rgb_u16_color_twist_p3,
172    u16,
173    nppiYUV422ToRGB_16u_ColorTwist32f_P3R_Ctx,
174    2,
175    1
176);
177impl_subsampled_color_twist_packed_inverse!(
178    yuv422_to_rgb_u8_color_twist_p3_to_c3,
179    u8,
180    C3,
181    nppiYUV422ToRGB_8u_ColorTwist32f_P3C3R_Ctx,
182    2,
183    1
184);
185impl_subsampled_color_twist_packed_inverse!(
186    yuv422_to_rgb_u16_color_twist_p3_to_c3,
187    u16,
188    C3,
189    nppiYUV422ToRGB_16u_ColorTwist32f_P3C3R_Ctx,
190    2,
191    1
192);
193impl_subsampled_color_twist_packed_inverse_constant_alpha!(
194    yuv422_to_rgb_u8_color_twist_p3_to_ac4,
195    u8,
196    nppiYUV422ToRGB_8u_ColorTwist32f_P3AC4R_Ctx,
197    2,
198    1
199);
200impl_subsampled_color_twist_packed_inverse_constant_alpha!(
201    yuv422_to_rgb_u16_color_twist_p3_to_ac4,
202    u16,
203    nppiYUV422ToRGB_16u_ColorTwist32f_P3AC4R_Ctx,
204    2,
205    1
206);
207impl_subsampled_color_twist_planar_forward!(
208    rgb_to_yuv420_u8_color_twist_p3,
209    u8,
210    nppiRGBToYUV420_8u_ColorTwist32f_P3R_Ctx,
211    2,
212    2
213);
214impl_subsampled_color_twist_planar_forward!(
215    rgb_to_yuv420_u16_color_twist_p3,
216    u16,
217    nppiRGBToYUV420_16u_ColorTwist32f_P3R_Ctx,
218    2,
219    2
220);
221impl_subsampled_color_twist_packed_forward!(
222    rgb_to_yuv420_u8_color_twist_c3_to_p3,
223    u8,
224    C3,
225    nppiRGBToYUV420_8u_ColorTwist32f_C3P3R_Ctx,
226    2,
227    2
228);
229impl_subsampled_color_twist_packed_forward!(
230    rgb_to_yuv420_u16_color_twist_c3_to_p3,
231    u16,
232    C3,
233    nppiRGBToYUV420_16u_ColorTwist32f_C3P3R_Ctx,
234    2,
235    2
236);
237impl_subsampled_color_twist_planar_inverse!(
238    yuv420_to_rgb_u8_color_twist_p3,
239    u8,
240    nppiYUV420ToRGB_8u_ColorTwist32f_P3R_Ctx,
241    2,
242    2
243);
244impl_subsampled_color_twist_planar_inverse!(
245    yuv420_to_rgb_u16_color_twist_p3,
246    u16,
247    nppiYUV420ToRGB_16u_ColorTwist32f_P3R_Ctx,
248    2,
249    2
250);
251impl_subsampled_color_twist_packed_inverse!(
252    yuv420_to_rgb_u8_color_twist_p3_to_c3,
253    u8,
254    C3,
255    nppiYUV420ToRGB_8u_ColorTwist32f_P3C3R_Ctx,
256    2,
257    2
258);
259impl_subsampled_color_twist_packed_inverse!(
260    yuv420_to_rgb_u16_color_twist_p3_to_c3,
261    u16,
262    C3,
263    nppiYUV420ToRGB_16u_ColorTwist32f_P3C3R_Ctx,
264    2,
265    2
266);
267impl_subsampled_color_twist_packed_inverse!(
268    yuv420_to_rgb_u8_color_twist_p3_to_c4,
269    u8,
270    C4,
271    nppiYUV420ToRGB_8u_ColorTwist32f_P3C4R_Ctx,
272    2,
273    2
274);
275impl_subsampled_color_twist_packed_inverse!(
276    yuv420_to_rgb_u16_color_twist_p3_to_c4,
277    u16,
278    C4,
279    nppiYUV420ToRGB_16u_ColorTwist32f_P3C4R_Ctx,
280    2,
281    2
282);
283impl_subsampled_color_twist_packed_inverse_constant_alpha!(
284    yuv420_to_rgb_u8_color_twist_p3_to_ac4,
285    u8,
286    nppiYUV420ToRGB_8u_ColorTwist32f_P3AC4R_Ctx,
287    2,
288    2
289);
290impl_subsampled_color_twist_packed_inverse_constant_alpha!(
291    yuv420_to_rgb_u16_color_twist_p3_to_ac4,
292    u16,
293    nppiYUV420ToRGB_16u_ColorTwist32f_P3AC4R_Ctx,
294    2,
295    2
296);
297impl_nv12_color_twist_planar_forward!(
298    rgb_to_nv12_u8_color_twist_p3,
299    u8,
300    nppiRGBToNV12_8u_ColorTwist32f_P3P2R_Ctx
301);
302impl_nv12_color_twist_planar_forward!(
303    rgb_to_nv12_u16_color_twist_p3,
304    u16,
305    nppiRGBToNV12_16u_ColorTwist32f_P3P2R_Ctx
306);
307impl_nv12_color_twist_packed_forward!(
308    rgb_to_nv12_u8_color_twist_c3_to_p2,
309    u8,
310    C3,
311    nppiRGBToNV12_8u_ColorTwist32f_C3P2R_Ctx
312);
313impl_nv12_color_twist_packed_forward!(
314    rgb_to_nv12_u16_color_twist_c3_to_p2,
315    u16,
316    C3,
317    nppiRGBToNV12_16u_ColorTwist32f_C3P2R_Ctx
318);
319impl_nv12_color_twist_packed_inverse!(
320    nv12_to_rgb_u8_color_twist_p2_to_c3,
321    u8,
322    C3,
323    nppiNV12ToRGB_8u_ColorTwist32f_P2C3R_Ctx
324);
325impl_nv12_color_twist_packed_inverse!(
326    nv12_to_rgb_u16_color_twist_p2_to_c3,
327    u16,
328    C3,
329    nppiNV12ToRGB_16u_ColorTwist32f_P2C3R_Ctx
330);
331impl_nv12_packed_inverse!(nv12_to_rgb_u8_p2_to_c3, u8, C3, nppiNV12ToRGB_8u_P2C3R_Ctx);
332impl_nv12_packed_inverse!(
333    nv12_to_rgb_709hdtv_u8_p2_to_c3,
334    u8,
335    C3,
336    nppiNV12ToRGB_709HDTV_8u_P2C3R_Ctx
337);
338impl_nv12_packed_inverse!(
339    nv12_to_rgb_709csc_u8_p2_to_c3,
340    u8,
341    C3,
342    nppiNV12ToRGB_709CSC_8u_P2C3R_Ctx
343);
344impl_nv12_packed_inverse!(nv12_to_bgr_u8_p2_to_c3, u8, C3, nppiNV12ToBGR_8u_P2C3R_Ctx);
345impl_nv12_packed_inverse!(
346    nv12_to_bgr_709hdtv_u8_p2_to_c3,
347    u8,
348    C3,
349    nppiNV12ToBGR_709HDTV_8u_P2C3R_Ctx
350);
351impl_nv12_packed_inverse!(
352    nv12_to_bgr_709csc_u8_p2_to_c3,
353    u8,
354    C3,
355    nppiNV12ToBGR_709CSC_8u_P2C3R_Ctx
356);
357impl_nv12_to_planar!(nv12_to_yuv420_u8_p2_to_p3, nppiNV12ToYUV420_8u_P2P3R_Ctx);
358impl_jpeg_subsampled_packed_inverse!(
359    yuv420_to_rgb_u8_p3_to_ac4,
360    AC4,
361    nppiYUV420ToRGB_8u_P3AC4R_Ctx,
362    2,
363    2
364);
365impl_jpeg_subsampled_packed_inverse_constant_alpha!(
366    ycrcb420_to_rgb_u8_p3_to_c4,
367    nppiYCrCb420ToRGB_8u_P3C4R_Ctx,
368    2,
369    2
370);
371impl_subsampled_p2_to_p3!(ycbcr420_u8_p2_to_p3, nppiYCbCr420_8u_P2P3R_Ctx, 2, 2, 2, 2);
372impl_subsampled_p2_to_p3!(
373    ycbcr420_to_ycbcr422_u8_p2_to_p3,
374    nppiYCbCr420ToYCbCr422_8u_P2P3R_Ctx,
375    2,
376    2,
377    2,
378    1
379);
380impl_subsampled_p2_to_p3!(
381    ycbcr420_to_ycbcr411_u8_p2_to_p3,
382    nppiYCbCr420ToYCbCr411_8u_P2P3R_Ctx,
383    2,
384    2,
385    4,
386    1
387);
388impl_subsampled_p2_to_p3!(
389    ycbcr420_to_ycrcb420_u8_p2_to_p3,
390    nppiYCbCr420ToYCrCb420_8u_P2P3R_Ctx,
391    2,
392    2,
393    2,
394    2
395);
396impl_subsampled_p2_to_p3!(ycbcr411_u8_p2_to_p3, nppiYCbCr411_8u_P2P3R_Ctx, 4, 1, 4, 1);
397impl_subsampled_p2_to_p3!(
398    ycbcr411_to_ycbcr422_u8_p2_to_p3,
399    nppiYCbCr411ToYCbCr422_8u_P2P3R_Ctx,
400    4,
401    1,
402    2,
403    1
404);
405impl_subsampled_p2_to_p3!(
406    ycbcr411_to_ycbcr420_u8_p2_to_p3,
407    nppiYCbCr411ToYCbCr420_8u_P2P3R_Ctx,
408    4,
409    1,
410    2,
411    2
412);
413impl_subsampled_p2_to_p3!(
414    ycbcr411_to_ycrcb420_u8_p2_to_p3,
415    nppiYCbCr411ToYCrCb420_8u_P2P3R_Ctx,
416    4,
417    1,
418    2,
419    2
420);
421impl_subsampled_c2_to_p3!(ycbcr422_u8_c2_to_p3, nppiYCbCr422_8u_C2P3R_Ctx, 2, 1);
422impl_subsampled_c2_to_p3!(
423    ycbcr422_to_ycbcr420_u8_c2_to_p3,
424    nppiYCbCr422ToYCbCr420_8u_C2P3R_Ctx,
425    2,
426    2
427);
428impl_subsampled_c2_to_p2!(
429    ycbcr422_to_ycbcr420_u8_c2_to_p2,
430    nppiYCbCr422ToYCbCr420_8u_C2P2R_Ctx,
431    2,
432    2
433);
434impl_subsampled_c2_to_p3!(
435    ycbcr422_to_ycbcr411_u8_c2_to_p3,
436    nppiYCbCr422ToYCbCr411_8u_C2P3R_Ctx,
437    4,
438    1
439);
440impl_subsampled_c2_to_p2!(
441    ycbcr422_to_ycbcr411_u8_c2_to_p2,
442    nppiYCbCr422ToYCbCr411_8u_C2P2R_Ctx,
443    4,
444    1
445);
446impl_subsampled_c2_to_p3!(
447    ycbcr422_to_ycrcb420_u8_c2_to_p3,
448    nppiYCbCr422ToYCrCb420_8u_C2P3R_Ctx,
449    2,
450    2
451);
452impl_subsampled_c2_to_p3!(
453    ycrcb422_to_ycbcr422_u8_c2_to_p3,
454    nppiYCrCb422ToYCbCr422_8u_C2P3R_Ctx,
455    2,
456    1
457);
458impl_subsampled_c2_to_p3!(
459    ycrcb422_to_ycbcr420_u8_c2_to_p3,
460    nppiYCrCb422ToYCbCr420_8u_C2P3R_Ctx,
461    2,
462    2
463);
464impl_subsampled_c2_to_p3!(
465    ycrcb422_to_ycbcr411_u8_c2_to_p3,
466    nppiYCrCb422ToYCbCr411_8u_C2P3R_Ctx,
467    4,
468    1
469);
470impl_subsampled_c2_to_p3!(
471    cbycr422_to_ycbcr422_u8_c2_to_p3,
472    nppiCbYCr422ToYCbCr422_8u_C2P3R_Ctx,
473    2,
474    1
475);
476impl_subsampled_c2_to_p3!(
477    cbycr422_to_ycbcr420_u8_c2_to_p3,
478    nppiCbYCr422ToYCbCr420_8u_C2P3R_Ctx,
479    2,
480    2
481);
482impl_subsampled_c2_to_p2!(
483    cbycr422_to_ycbcr420_u8_c2_to_p2,
484    nppiCbYCr422ToYCbCr420_8u_C2P2R_Ctx,
485    2,
486    2
487);
488impl_subsampled_c2_to_p3!(
489    cbycr422_to_ycbcr411_u8_c2_to_p3,
490    nppiCbYCr422ToYCbCr411_8u_C2P3R_Ctx,
491    4,
492    1
493);
494impl_subsampled_c2_to_p3!(
495    cbycr422_to_ycrcb420_u8_c2_to_p3,
496    nppiCbYCr422ToYCrCb420_8u_C2P3R_Ctx,
497    2,
498    2
499);
500impl_subsampled_p3_to_p2!(ycbcr420_u8_p3_to_p2, nppiYCbCr420_8u_P3P2R_Ctx, 2, 2, 2, 2);
501impl_subsampled_p3_to_p2!(
502    ycbcr420_to_ycbcr411_u8_p3_to_p2,
503    nppiYCbCr420ToYCbCr411_8u_P3P2R_Ctx,
504    2,
505    2,
506    4,
507    1
508);
509impl_subsampled_p3_to_p2!(
510    ycbcr422_to_ycbcr420_u8_p3_to_p2,
511    nppiYCbCr422ToYCbCr420_8u_P3P2R_Ctx,
512    2,
513    1,
514    2,
515    2
516);
517impl_subsampled_p3_to_p2!(
518    ycbcr422_to_ycbcr411_u8_p3_to_p2,
519    nppiYCbCr422ToYCbCr411_8u_P3P2R_Ctx,
520    2,
521    1,
522    4,
523    1
524);
525impl_subsampled_p3_to_p2!(
526    ycrcb420_to_ycbcr420_u8_p3_to_p2,
527    nppiYCrCb420ToYCbCr420_8u_P3P2R_Ctx,
528    2,
529    2,
530    2,
531    2
532);
533impl_subsampled_p3_to_p2!(
534    ycrcb420_to_ycbcr411_u8_p3_to_p2,
535    nppiYCrCb420ToYCbCr411_8u_P3P2R_Ctx,
536    2,
537    2,
538    4,
539    1
540);
541impl_subsampled_p3_to_p2!(ycbcr411_u8_p3_to_p2, nppiYCbCr411_8u_P3P2R_Ctx, 4, 1, 4, 1);
542impl_subsampled_p3_to_p2!(
543    ycbcr411_to_ycbcr420_u8_p3_to_p2,
544    nppiYCbCr411ToYCbCr420_8u_P3P2R_Ctx,
545    4,
546    1,
547    2,
548    2
549);
550impl_subsampled_p3_to_c2!(ycbcr422_u8_p3_to_c2, nppiYCbCr422_8u_P3C2R_Ctx, 2, 1);
551impl_subsampled_p3_to_c2!(
552    ycbcr422_to_ycrcb422_u8_p3_to_c2,
553    nppiYCbCr422ToYCrCb422_8u_P3C2R_Ctx,
554    2,
555    1
556);
557impl_subsampled_p3_to_c2!(
558    ycrcb420_to_ycbcr422_u8_p3_to_c2,
559    nppiYCrCb420ToYCbCr422_8u_P3C2R_Ctx,
560    2,
561    2
562);
563impl_subsampled_p3_to_c2!(
564    ycrcb420_to_cbycr422_u8_p3_to_c2,
565    nppiYCrCb420ToCbYCr422_8u_P3C2R_Ctx,
566    2,
567    2
568);
569impl_subsampled_p3_to_c2!(
570    ycbcr411_to_ycbcr422_u8_p3_to_c2,
571    nppiYCbCr411ToYCbCr422_8u_P3C2R_Ctx,
572    4,
573    1
574);
575impl_subsampled_p3_to_c2!(
576    ycbcr411_to_ycrcb422_u8_p3_to_c2,
577    nppiYCbCr411ToYCrCb422_8u_P3C2R_Ctx,
578    4,
579    1
580);
581impl_subsampled_p3_to_p3!(
582    ycbcr420_to_ycbcr422_u8_p3_to_p3,
583    nppiYCbCr420ToYCbCr422_8u_P3R_Ctx,
584    2,
585    2,
586    2,
587    1
588);
589impl_subsampled_p3_to_p3!(
590    ycbcr422_to_ycbcr420_u8_p3_to_p3,
591    nppiYCbCr422ToYCbCr420_8u_P3R_Ctx,
592    2,
593    1,
594    2,
595    2
596);
597impl_subsampled_p3_to_p3!(
598    ycbcr422_to_ycbcr411_u8_p3_to_p3,
599    nppiYCbCr422ToYCbCr411_8u_P3R_Ctx,
600    2,
601    1,
602    4,
603    1
604);
605impl_subsampled_p3_to_p3!(
606    ycrcb420_to_ycbcr422_u8_p3_to_p3,
607    nppiYCrCb420ToYCbCr422_8u_P3R_Ctx,
608    2,
609    2,
610    2,
611    1
612);
613impl_subsampled_p3_to_p3!(
614    ycbcr411_to_ycbcr422_u8_p3_to_p3,
615    nppiYCbCr411ToYCbCr422_8u_P3R_Ctx,
616    4,
617    1,
618    2,
619    1
620);
621impl_subsampled_p3_to_p3!(
622    ycbcr411_to_ycbcr420_u8_p3_to_p3,
623    nppiYCbCr411ToYCbCr420_8u_P3R_Ctx,
624    4,
625    1,
626    2,
627    2
628);
629impl_subsampled_p3_to_p3!(
630    ycbcr411_to_ycrcb422_u8_p3_to_p3,
631    nppiYCbCr411ToYCrCb422_8u_P3R_Ctx,
632    4,
633    1,
634    2,
635    1
636);
637impl_subsampled_p2_to_c2!(
638    ycbcr420_to_ycbcr422_u8_p2_to_c2,
639    nppiYCbCr420ToYCbCr422_8u_P2C2R_Ctx,
640    2,
641    2
642);
643impl_subsampled_p2_to_c2!(
644    ycbcr420_to_cbycr422_u8_p2_to_c2,
645    nppiYCbCr420ToCbYCr422_8u_P2C2R_Ctx,
646    2,
647    2
648);
649impl_subsampled_p2_to_c2!(
650    ycbcr411_to_ycbcr422_u8_p2_to_c2,
651    nppiYCbCr411ToYCbCr422_8u_P2C2R_Ctx,
652    4,
653    1
654);
655impl_subsampled_packed_to_p3!(
656    rgb_to_ycbcr420_u8_c3_to_p3,
657    C3,
658    nppiRGBToYCbCr420_8u_C3P3R_Ctx,
659    2,
660    2
661);
662impl_subsampled_packed_to_p3!(
663    rgb_to_ycrcb420_u8_ac4_to_p3,
664    AC4,
665    nppiRGBToYCrCb420_8u_AC4P3R_Ctx,
666    2,
667    2
668);
669impl_subsampled_packed_to_p3!(
670    bgr_to_ycbcr420_u8_c3_to_p3,
671    C3,
672    nppiBGRToYCbCr420_8u_C3P3R_Ctx,
673    2,
674    2
675);
676impl_subsampled_packed_to_p3!(
677    bgr_to_ycbcr420_u8_ac4_to_p3,
678    AC4,
679    nppiBGRToYCbCr420_8u_AC4P3R_Ctx,
680    2,
681    2
682);
683impl_subsampled_packed_to_p3!(
684    bgr_to_ycrcb420_u8_c3_to_p3,
685    C3,
686    nppiBGRToYCrCb420_8u_C3P3R_Ctx,
687    2,
688    2
689);
690impl_subsampled_packed_to_p3!(
691    bgr_to_ycrcb420_u8_ac4_to_p3,
692    AC4,
693    nppiBGRToYCrCb420_8u_AC4P3R_Ctx,
694    2,
695    2
696);
697impl_subsampled_packed_to_p3!(
698    bgr_to_ycbcr420_709csc_u8_c3_to_p3,
699    C3,
700    nppiBGRToYCbCr420_709CSC_8u_C3P3R_Ctx,
701    2,
702    2
703);
704impl_subsampled_packed_to_p3!(
705    bgr_to_ycbcr420_709csc_u8_ac4_to_p3,
706    AC4,
707    nppiBGRToYCbCr420_709CSC_8u_AC4P3R_Ctx,
708    2,
709    2
710);
711impl_subsampled_packed_to_p3!(
712    bgr_to_ycbcr420_709hdtv_u8_ac4_to_p3,
713    AC4,
714    nppiBGRToYCbCr420_709HDTV_8u_AC4P3R_Ctx,
715    2,
716    2
717);
718impl_subsampled_packed_to_p3!(
719    bgr_to_ycrcb420_709csc_u8_c3_to_p3,
720    C3,
721    nppiBGRToYCrCb420_709CSC_8u_C3P3R_Ctx,
722    2,
723    2
724);
725impl_subsampled_packed_to_p3!(
726    bgr_to_ycrcb420_709csc_u8_ac4_to_p3,
727    AC4,
728    nppiBGRToYCrCb420_709CSC_8u_AC4P3R_Ctx,
729    2,
730    2
731);
732impl_subsampled_packed_to_p3!(
733    rgb_to_ycbcr411_u8_c3_to_p3,
734    C3,
735    nppiRGBToYCbCr411_8u_C3P3R_Ctx,
736    4,
737    1
738);
739impl_subsampled_packed_to_p3!(
740    rgb_to_ycbcr411_u8_ac4_to_p3,
741    AC4,
742    nppiRGBToYCbCr411_8u_AC4P3R_Ctx,
743    4,
744    1
745);
746impl_subsampled_packed_to_p3!(
747    bgr_to_ycbcr411_u8_c3_to_p3,
748    C3,
749    nppiBGRToYCbCr411_8u_C3P3R_Ctx,
750    4,
751    1
752);
753impl_subsampled_packed_to_p3!(
754    bgr_to_ycbcr411_u8_ac4_to_p3,
755    AC4,
756    nppiBGRToYCbCr411_8u_AC4P3R_Ctx,
757    4,
758    1
759);
760impl_subsampled_packed_to_p3!(
761    rgb_to_ycbcr422_u8_c3_to_p3,
762    C3,
763    nppiRGBToYCbCr422_8u_C3P3R_Ctx,
764    2,
765    1
766);
767impl_subsampled_packed_to_p3!(
768    bgr_to_ycbcr422_u8_c3_to_p3,
769    C3,
770    nppiBGRToYCbCr422_8u_C3P3R_Ctx,
771    2,
772    1
773);
774impl_subsampled_packed_to_p3!(
775    bgr_to_ycbcr422_u8_ac4_to_p3,
776    AC4,
777    nppiBGRToYCbCr422_8u_AC4P3R_Ctx,
778    2,
779    1
780);
781impl_nv12_packed_inverse!(nv21_to_rgb_u8_p2_to_c4, u8, C4, nppiNV21ToRGB_8u_P2C4R_Ctx);
782impl_nv12_packed_inverse!(nv21_to_bgr_u8_p2_to_c4, u8, C4, nppiNV21ToBGR_8u_P2C4R_Ctx);
783impl_color_convert_batch_same_layout!(yuv_to_rgb_batch_u8_c3, u8, C3, nppiYUVToRGBBatch_8u_C3R_Ctx);
784impl_color_convert_batch_same_layout_advanced!(
785    yuv_to_rgb_batch_u8_c3_advanced,
786    u8,
787    C3,
788    nppiYUVToRGBBatch_8u_C3R_Advanced_Ctx
789);
790impl_color_convert_batch_planar_to_packed!(
791    yuv_to_rgb_batch_u8_p3_to_c3,
792    u8,
793    3,
794    C3,
795    nppiYUVToRGBBatch_8u_P3C3R_Ctx
796);
797impl_color_convert_batch_planar_to_packed_advanced!(
798    yuv_to_rgb_batch_u8_p3_to_c3_advanced,
799    u8,
800    3,
801    C3,
802    nppiYUVToRGBBatch_8u_P3C3R_Advanced_Ctx
803);
804impl_subsampled_color_convert_batch_planar_to_packed!(
805    yuv422_to_rgb_batch_u8_p3_to_c3,
806    u8,
807    C3,
808    nppiYUV422ToRGBBatch_8u_P3C3R_Ctx,
809    2,
810    1
811);
812impl_subsampled_color_convert_batch_planar_to_packed_advanced!(
813    yuv422_to_rgb_batch_u8_p3_to_c3_advanced,
814    u8,
815    C3,
816    nppiYUV422ToRGBBatch_8u_P3C3R_Advanced_Ctx,
817    2,
818    1
819);
820impl_subsampled_color_convert_batch_planar_to_packed!(
821    yuv420_to_rgb_batch_u8_p3_to_c3,
822    u8,
823    C3,
824    nppiYUV420ToRGBBatch_8u_P3C3R_Ctx,
825    2,
826    2
827);
828impl_subsampled_color_convert_batch_planar_to_packed_advanced!(
829    yuv420_to_rgb_batch_u8_p3_to_c3_advanced,
830    u8,
831    C3,
832    nppiYUV420ToRGBBatch_8u_P3C3R_Advanced_Ctx,
833    2,
834    2
835);
836impl_color_convert_packed_to_planar!(rgb_to_yuv_u8_c3_to_p3, u8, C3, 3, nppiRGBToYUV_8u_C3P3R_Ctx);
837impl_color_convert_packed_to_planar!(
838    rgb_to_yuv_u8_ac4_to_p4,
839    u8,
840    AC4,
841    4,
842    nppiRGBToYUV_8u_AC4P4R_Ctx
843);
844impl_color_convert_planar_to_packed!(yuv_to_rgb_u8_p3_to_c3, u8, 3, C3, nppiYUVToRGB_8u_P3C3R_Ctx);