1
/*****************************************************************
5
Copyright (c) 2001-2002 by Burkhard Plaum - plaum@ipf.uni-stuttgart.de
7
http://gmerlin.sourceforge.net
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
14
You should have received a copy of the GNU General Public License
15
along with this program; if not, write to the Free Software
16
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
18
*****************************************************************/
23
#include <colorspace.h>
32
gavl_pixelformat_t pixelformat;
36
pixelformat_tab_t pixelformat_tab[] =
38
{ GAVL_RGB_15, "15 bpp RGB" },
39
{ GAVL_BGR_15, "15 bpp BGR" },
40
{ GAVL_RGB_16, "16 bpp RGB" },
41
{ GAVL_BGR_16, "16 bpp BGR" },
42
{ GAVL_RGB_24, "24 bpp RGB" },
43
{ GAVL_BGR_24, "24 bpp BGR" },
44
{ GAVL_RGB_32, "32 bpp RGB" },
45
{ GAVL_BGR_32, "32 bpp BGR" },
46
{ GAVL_RGBA_32, "32 bpp RGBA" },
47
{ GAVL_RGB_48, "48 bpp RGB" },
48
{ GAVL_RGBA_64, "64 bpp RGBA" },
49
{ GAVL_RGB_FLOAT, "Float RGB" },
50
{ GAVL_RGBA_FLOAT, "Float RGBA" },
51
{ GAVL_YUY2, "YUV 422 (YUY2)" },
52
{ GAVL_UYVY, "YUV 422 (UYVY)" },
53
{ GAVL_YUVA_32, "YUVA 4444" },
54
{ GAVL_YUV_420_P, "YUV 420 Planar" },
55
{ GAVL_YUV_410_P, "YUV 410 Planar" },
56
{ GAVL_YUV_411_P, "YUV 411 Planar" },
57
{ GAVL_YUV_422_P, "YUV 422 Planar" },
58
{ GAVL_YUV_422_P_16, "YUV 422 Planar (16 bit)" },
59
{ GAVL_YUV_444_P, "YUV 444 Planar" },
60
{ GAVL_YUV_444_P_16, "YUV 444 Planar (16 bit)" },
61
{ GAVL_YUVJ_420_P, "YUVJ 420 Planar" },
62
{ GAVL_YUVJ_422_P, "YUVJ 422 Planar" },
63
{ GAVL_YUVJ_444_P, "YUVJ 444 Planar" },
64
{ GAVL_PIXELFORMAT_NONE, "Undefined" }
67
static int num_pixelformats = sizeof(pixelformat_tab)/sizeof(pixelformat_tab_t);
69
int gavl_pixelformat_num_planes(gavl_pixelformat_t csp)
96
case GAVL_YUV_422_P_16:
97
case GAVL_YUV_444_P_16:
100
case GAVL_YUVJ_444_P:
103
case GAVL_PIXELFORMAT_NONE:
110
void gavl_pixelformat_chroma_sub(gavl_pixelformat_t csp, int * sub_h,
125
case GAVL_YUV_444_P_16:
126
case GAVL_YUVJ_444_P:
131
case GAVL_RGBA_FLOAT:
136
case GAVL_YUVJ_420_P:
141
case GAVL_YUV_422_P_16:
142
case GAVL_YUVJ_422_P:
156
case GAVL_PIXELFORMAT_NONE:
163
int gavl_num_pixelformats()
165
return num_pixelformats - 1;
168
gavl_pixelformat_t gavl_get_pixelformat(int index)
170
return pixelformat_tab[index].pixelformat;
173
const char * gavl_pixelformat_to_string(gavl_pixelformat_t pixelformat)
176
for(i = 0; i < num_pixelformats; i++)
178
if(pixelformat_tab[i].pixelformat == pixelformat)
179
return pixelformat_tab[i].name;
181
return (const char*)0;
184
gavl_pixelformat_t gavl_string_to_pixelformat(const char * name)
187
for(i = 0; i < num_pixelformats; i++)
189
if(!strcmp(pixelformat_tab[i].name, name))
190
return pixelformat_tab[i].pixelformat;
192
return GAVL_PIXELFORMAT_NONE;
196
static gavl_pixelformat_function_table_t *
197
create_pixelformat_function_table(const gavl_video_options_t * opt,
198
int width, int height)
200
gavl_pixelformat_function_table_t * csp_tab;
201
int real_accel_flags = opt->accel_flags ?
202
gavl_real_accel_flags(opt->accel_flags) : 0;
205
calloc(1,sizeof(gavl_pixelformat_function_table_t));
207
if(!real_accel_flags || (real_accel_flags & GAVL_ACCEL_C))
209
// fprintf(stderr, "Init C functions %08x\n", real_accel_flags);
210
gavl_init_rgb_rgb_funcs_c(csp_tab, opt);
211
gavl_init_rgb_yuv_funcs_c(csp_tab, opt);
212
gavl_init_yuv_rgb_funcs_c(csp_tab, opt);
213
gavl_init_yuv_yuv_funcs_c(csp_tab, opt);
218
if(!real_accel_flags || (real_accel_flags & GAVL_ACCEL_MMX))
220
// fprintf(stderr, "Init MMX functions %08x\n", real_accel_flags);
221
gavl_init_rgb_rgb_funcs_mmx(csp_tab, width, opt);
222
gavl_init_rgb_yuv_funcs_mmx(csp_tab, width, opt);
223
gavl_init_yuv_yuv_funcs_mmx(csp_tab, width, opt);
224
gavl_init_yuv_rgb_funcs_mmx(csp_tab, width, opt);
226
if(!real_accel_flags || (real_accel_flags & GAVL_ACCEL_MMXEXT))
228
// fprintf(stderr, "Init MMXEXT functions %08x\n", real_accel_flags);
229
gavl_init_rgb_rgb_funcs_mmxext(csp_tab, width, opt);
230
gavl_init_rgb_yuv_funcs_mmxext(csp_tab, width, opt);
231
gavl_init_yuv_yuv_funcs_mmxext(csp_tab, width, opt);
232
gavl_init_yuv_rgb_funcs_mmxext(csp_tab, width, opt);
239
gavl_find_pixelformat_converter(const gavl_video_options_t * opt,
240
gavl_pixelformat_t input_pixelformat,
241
gavl_pixelformat_t output_pixelformat,
245
gavl_video_func_t ret = NULL;
246
gavl_pixelformat_function_table_t * tab =
247
create_pixelformat_function_table(opt, width, height);
249
switch(input_pixelformat)
252
switch(output_pixelformat)
255
ret = tab->swap_rgb_15;
258
ret = tab->rgb_15_to_16;
261
ret = tab->rgb_15_to_16_swap;
264
ret = tab->rgb_15_to_24;
267
ret = tab->rgb_15_to_24_swap;
270
ret = tab->rgb_15_to_32;
273
ret = tab->rgb_15_to_32_swap;
276
ret = tab->rgb_15_to_rgba_32;
279
ret = tab->rgb_15_to_48;
282
ret = tab->rgb_15_to_rgba_64;
285
ret = tab->rgb_15_to_float;
287
case GAVL_RGBA_FLOAT:
288
ret = tab->rgb_15_to_rgba_float;
291
ret = tab->rgb_15_to_yuy2;
294
ret = tab->rgb_15_to_uyvy;
297
ret = tab->rgb_15_to_yuva_32;
300
ret = tab->rgb_15_to_yuv_420_p;
303
ret = tab->rgb_15_to_yuv_410_p;
306
ret = tab->rgb_15_to_yuv_422_p;
308
case GAVL_YUV_422_P_16:
309
ret = tab->rgb_15_to_yuv_422_p_16;
312
ret = tab->rgb_15_to_yuv_411_p;
315
ret = tab->rgb_15_to_yuv_444_p;
317
case GAVL_YUV_444_P_16:
318
ret = tab->rgb_15_to_yuv_444_p_16;
320
case GAVL_YUVJ_420_P:
321
ret = tab->rgb_15_to_yuvj_420_p;
323
case GAVL_YUVJ_422_P:
324
ret = tab->rgb_15_to_yuvj_422_p;
326
case GAVL_YUVJ_444_P:
327
ret = tab->rgb_15_to_yuvj_444_p;
330
case GAVL_PIXELFORMAT_NONE:
336
switch(output_pixelformat)
339
ret = tab->swap_rgb_15;
342
ret = tab->rgb_15_to_16_swap;
345
ret = tab->rgb_15_to_16;
348
ret = tab->rgb_15_to_24_swap;
351
ret = tab->rgb_15_to_24;
354
ret = tab->rgb_15_to_32_swap;
357
ret = tab->rgb_15_to_32;
360
ret = tab->bgr_15_to_rgba_32;
363
ret = tab->rgb_15_to_48_swap;
366
ret = tab->bgr_15_to_rgba_64;
369
ret = tab->rgb_15_to_float_swap;
371
case GAVL_RGBA_FLOAT:
372
ret = tab->bgr_15_to_rgba_float;
375
ret = tab->bgr_15_to_yuy2;
378
ret = tab->bgr_15_to_uyvy;
381
ret = tab->bgr_15_to_yuva_32;
384
ret = tab->bgr_15_to_yuv_420_p;
387
ret = tab->bgr_15_to_yuv_410_p;
390
ret = tab->bgr_15_to_yuv_422_p;
392
case GAVL_YUV_422_P_16:
393
ret = tab->bgr_15_to_yuv_422_p_16;
396
ret = tab->bgr_15_to_yuv_411_p;
399
ret = tab->bgr_15_to_yuv_444_p;
401
case GAVL_YUV_444_P_16:
402
ret = tab->bgr_15_to_yuv_444_p_16;
404
case GAVL_YUVJ_420_P:
405
ret = tab->bgr_15_to_yuvj_420_p;
407
case GAVL_YUVJ_422_P:
408
ret = tab->bgr_15_to_yuvj_422_p;
410
case GAVL_YUVJ_444_P:
411
ret = tab->bgr_15_to_yuvj_444_p;
414
case GAVL_PIXELFORMAT_NONE:
420
switch(output_pixelformat)
423
ret = tab->rgb_16_to_15;
426
ret = tab->rgb_16_to_15_swap;
429
ret = tab->swap_rgb_16;
432
ret = tab->rgb_16_to_24;
435
ret = tab->rgb_16_to_24_swap;
438
ret = tab->rgb_16_to_32;
441
ret = tab->rgb_16_to_32_swap;
444
ret = tab->rgb_16_to_rgba_32;
447
ret = tab->rgb_16_to_48;
450
ret = tab->rgb_16_to_rgba_64;
453
ret = tab->rgb_16_to_float;
455
case GAVL_RGBA_FLOAT:
456
ret = tab->rgb_16_to_rgba_float;
460
ret = tab->rgb_16_to_yuy2;
463
ret = tab->rgb_16_to_uyvy;
466
ret = tab->rgb_16_to_yuva_32;
469
ret = tab->rgb_16_to_yuv_420_p;
472
ret = tab->rgb_16_to_yuv_410_p;
475
ret = tab->rgb_16_to_yuv_422_p;
477
case GAVL_YUV_422_P_16:
478
ret = tab->rgb_16_to_yuv_422_p_16;
481
ret = tab->rgb_16_to_yuv_411_p;
484
ret = tab->rgb_16_to_yuv_444_p;
486
case GAVL_YUV_444_P_16:
487
ret = tab->rgb_16_to_yuv_444_p_16;
489
case GAVL_YUVJ_420_P:
490
ret = tab->rgb_16_to_yuvj_420_p;
492
case GAVL_YUVJ_422_P:
493
ret = tab->rgb_16_to_yuvj_422_p;
495
case GAVL_YUVJ_444_P:
496
ret = tab->rgb_16_to_yuvj_444_p;
499
case GAVL_PIXELFORMAT_NONE:
505
switch(output_pixelformat)
508
ret = tab->rgb_16_to_15_swap;
511
ret = tab->rgb_16_to_15;
514
ret = tab->swap_rgb_16;
517
ret = tab->rgb_16_to_24_swap;
520
ret = tab->rgb_16_to_24;
523
ret = tab->rgb_16_to_32_swap;
526
ret = tab->rgb_16_to_32;
529
ret = tab->bgr_16_to_rgba_32;
532
ret = tab->rgb_16_to_48_swap;
535
ret = tab->bgr_16_to_rgba_64;
538
ret = tab->rgb_16_to_float_swap;
540
case GAVL_RGBA_FLOAT:
541
ret = tab->bgr_16_to_rgba_float;
545
ret = tab->bgr_16_to_yuy2;
548
ret = tab->bgr_16_to_uyvy;
551
ret = tab->bgr_16_to_yuva_32;
554
ret = tab->bgr_16_to_yuv_420_p;
557
ret = tab->bgr_16_to_yuv_410_p;
560
ret = tab->bgr_16_to_yuv_422_p;
562
case GAVL_YUV_422_P_16:
563
ret = tab->bgr_16_to_yuv_422_p_16;
566
ret = tab->bgr_16_to_yuv_411_p;
569
ret = tab->bgr_16_to_yuv_444_p;
571
case GAVL_YUV_444_P_16:
572
ret = tab->bgr_16_to_yuv_444_p_16;
574
case GAVL_YUVJ_420_P:
575
ret = tab->bgr_16_to_yuvj_420_p;
577
case GAVL_YUVJ_422_P:
578
ret = tab->bgr_16_to_yuvj_422_p;
580
case GAVL_YUVJ_444_P:
581
ret = tab->bgr_16_to_yuvj_444_p;
584
case GAVL_PIXELFORMAT_NONE:
590
switch(output_pixelformat)
593
ret = tab->rgb_24_to_15;
596
ret = tab->rgb_24_to_15_swap;
599
ret = tab->rgb_24_to_16;
602
ret = tab->rgb_24_to_16_swap;
605
ret = tab->swap_rgb_24;
608
ret = tab->rgb_24_to_32;
611
ret = tab->rgb_24_to_32_swap;
614
ret = tab->rgb_24_to_rgba_32;
617
ret = tab->rgb_24_to_48;
620
ret = tab->rgb_24_to_rgba_64;
623
ret = tab->rgb_24_to_float;
625
case GAVL_RGBA_FLOAT:
626
ret = tab->rgb_24_to_rgba_float;
629
ret = tab->rgb_24_to_yuy2;
632
ret = tab->rgb_24_to_uyvy;
635
ret = tab->rgb_24_to_yuva_32;
638
ret = tab->rgb_24_to_yuv_420_p;
641
ret = tab->rgb_24_to_yuv_410_p;
644
ret = tab->rgb_24_to_yuv_422_p;
646
case GAVL_YUV_422_P_16:
647
ret = tab->rgb_24_to_yuv_422_p_16;
650
ret = tab->rgb_24_to_yuv_411_p;
653
ret = tab->rgb_24_to_yuv_444_p;
655
case GAVL_YUV_444_P_16:
656
ret = tab->rgb_24_to_yuv_444_p_16;
658
case GAVL_YUVJ_420_P:
659
ret = tab->rgb_24_to_yuvj_420_p;
661
case GAVL_YUVJ_422_P:
662
ret = tab->rgb_24_to_yuvj_422_p;
664
case GAVL_YUVJ_444_P:
665
ret = tab->rgb_24_to_yuvj_444_p;
668
case GAVL_PIXELFORMAT_NONE:
674
switch(output_pixelformat)
677
ret = tab->rgb_24_to_15_swap;
680
ret = tab->rgb_24_to_15;
683
ret = tab->rgb_24_to_16_swap;
686
ret = tab->rgb_24_to_16;
689
ret = tab->swap_rgb_24;
692
ret = tab->rgb_24_to_32_swap;
695
ret = tab->rgb_24_to_32;
698
ret = tab->bgr_24_to_rgba_32;
701
ret = tab->rgb_24_to_48_swap;
704
ret = tab->bgr_24_to_rgba_64;
707
ret = tab->rgb_24_to_float_swap;
709
case GAVL_RGBA_FLOAT:
710
ret = tab->bgr_24_to_rgba_float;
713
ret = tab->bgr_24_to_yuy2;
716
ret = tab->bgr_24_to_uyvy;
719
ret = tab->bgr_24_to_yuva_32;
722
ret = tab->bgr_24_to_yuv_420_p;
725
ret = tab->bgr_24_to_yuv_410_p;
728
ret = tab->bgr_24_to_yuv_422_p;
730
case GAVL_YUV_422_P_16:
731
ret = tab->bgr_24_to_yuv_422_p_16;
734
ret = tab->bgr_24_to_yuv_411_p;
737
ret = tab->bgr_24_to_yuv_444_p;
739
case GAVL_YUV_444_P_16:
740
ret = tab->bgr_24_to_yuv_444_p_16;
742
case GAVL_YUVJ_420_P:
743
ret = tab->bgr_24_to_yuvj_420_p;
745
case GAVL_YUVJ_422_P:
746
ret = tab->bgr_24_to_yuvj_422_p;
748
case GAVL_YUVJ_444_P:
749
ret = tab->bgr_24_to_yuvj_444_p;
752
case GAVL_PIXELFORMAT_NONE:
758
switch(output_pixelformat)
761
ret = tab->rgb_32_to_15;
764
ret = tab->rgb_32_to_15_swap;
767
ret = tab->rgb_32_to_16;
770
ret = tab->rgb_32_to_16_swap;
773
ret = tab->rgb_32_to_24;
776
ret = tab->rgb_32_to_24_swap;
779
ret = tab->swap_rgb_32;
782
ret = tab->rgb_32_to_rgba_32;
785
ret = tab->rgb_32_to_48;
788
ret = tab->rgb_32_to_rgba_64;
791
ret = tab->rgb_32_to_float;
793
case GAVL_RGBA_FLOAT:
794
ret = tab->rgb_32_to_rgba_float;
797
ret = tab->rgb_32_to_yuy2;
800
ret = tab->rgb_32_to_uyvy;
803
ret = tab->rgb_32_to_yuva_32;
806
ret = tab->rgb_32_to_yuv_420_p;
809
ret = tab->rgb_32_to_yuv_410_p;
812
ret = tab->rgb_32_to_yuv_422_p;
814
case GAVL_YUV_422_P_16:
815
ret = tab->rgb_32_to_yuv_422_p_16;
818
ret = tab->rgb_32_to_yuv_411_p;
821
ret = tab->rgb_32_to_yuv_444_p;
823
case GAVL_YUV_444_P_16:
824
ret = tab->rgb_32_to_yuv_444_p_16;
826
case GAVL_YUVJ_420_P:
827
ret = tab->rgb_32_to_yuvj_420_p;
829
case GAVL_YUVJ_422_P:
830
ret = tab->rgb_32_to_yuvj_422_p;
832
case GAVL_YUVJ_444_P:
833
ret = tab->rgb_32_to_yuvj_444_p;
836
case GAVL_PIXELFORMAT_NONE:
842
switch(output_pixelformat)
845
ret = tab->rgb_32_to_15_swap;
848
ret = tab->rgb_32_to_15;
851
ret = tab->rgb_32_to_16_swap;
854
ret = tab->rgb_32_to_16;
857
ret = tab->rgb_32_to_24_swap;
860
ret = tab->rgb_32_to_24;
863
ret = tab->swap_rgb_32;
866
ret = tab->bgr_32_to_rgba_32;
869
ret = tab->rgb_32_to_48_swap;
872
ret = tab->bgr_32_to_rgba_64;
875
ret = tab->rgb_32_to_float_swap;
877
case GAVL_RGBA_FLOAT:
878
ret = tab->bgr_32_to_rgba_float;
881
ret = tab->bgr_32_to_yuy2;
884
ret = tab->bgr_32_to_uyvy;
887
ret = tab->bgr_32_to_yuva_32;
890
ret = tab->bgr_32_to_yuv_420_p;
893
ret = tab->bgr_32_to_yuv_410_p;
896
ret = tab->bgr_32_to_yuv_422_p;
898
case GAVL_YUV_422_P_16:
899
ret = tab->bgr_32_to_yuv_422_p_16;
902
ret = tab->bgr_32_to_yuv_411_p;
905
ret = tab->bgr_32_to_yuv_444_p;
907
case GAVL_YUV_444_P_16:
908
ret = tab->bgr_32_to_yuv_444_p_16;
910
case GAVL_YUVJ_420_P:
911
ret = tab->bgr_32_to_yuvj_420_p;
913
case GAVL_YUVJ_422_P:
914
ret = tab->bgr_32_to_yuvj_422_p;
916
case GAVL_YUVJ_444_P:
917
ret = tab->bgr_32_to_yuvj_444_p;
920
case GAVL_PIXELFORMAT_NONE:
926
switch(output_pixelformat)
929
ret = tab->rgba_32_to_rgb_15;
932
ret = tab->rgba_32_to_bgr_15;
935
ret = tab->rgba_32_to_rgb_16;
938
ret = tab->rgba_32_to_bgr_16;
941
ret = tab->rgba_32_to_rgb_24;
944
ret = tab->rgba_32_to_bgr_24;
947
ret = tab->rgba_32_to_rgb_32;
950
ret = tab->rgba_32_to_bgr_32;
953
ret = tab->rgba_32_to_rgb_48;
956
ret = tab->rgba_32_to_rgba_64;
959
ret = tab->rgba_32_to_rgb_float;
961
case GAVL_RGBA_FLOAT:
962
ret = tab->rgba_32_to_rgba_float;
965
ret = tab->rgba_32_to_yuy2;
968
ret = tab->rgba_32_to_uyvy;
971
ret = tab->rgba_32_to_yuva_32;
974
ret = tab->rgba_32_to_yuv_420_p;
977
ret = tab->rgba_32_to_yuv_410_p;
980
ret = tab->rgba_32_to_yuv_422_p;
982
case GAVL_YUV_422_P_16:
983
ret = tab->rgba_32_to_yuv_422_p_16;
986
ret = tab->rgba_32_to_yuv_411_p;
989
ret = tab->rgba_32_to_yuv_444_p;
991
case GAVL_YUV_444_P_16:
992
ret = tab->rgba_32_to_yuv_444_p_16;
994
case GAVL_YUVJ_420_P:
995
ret = tab->rgba_32_to_yuvj_420_p;
997
case GAVL_YUVJ_422_P:
998
ret = tab->rgba_32_to_yuvj_422_p;
1000
case GAVL_YUVJ_444_P:
1001
ret = tab->rgba_32_to_yuvj_444_p;
1003
/* Keep GCC happy */
1004
case GAVL_PIXELFORMAT_NONE:
1011
switch(output_pixelformat)
1014
ret = tab->rgba_64_to_rgb_15;
1017
ret = tab->rgba_64_to_bgr_15;
1020
ret = tab->rgba_64_to_rgb_16;
1023
ret = tab->rgba_64_to_bgr_16;
1026
ret = tab->rgba_64_to_rgb_24;
1029
ret = tab->rgba_64_to_bgr_24;
1032
ret = tab->rgba_64_to_rgb_32;
1035
ret = tab->rgba_64_to_bgr_32;
1038
ret = tab->rgba_64_to_rgba_32;
1041
ret = tab->rgba_64_to_rgb_48;
1043
case GAVL_RGB_FLOAT:
1044
ret = tab->rgba_64_to_rgb_float;
1046
case GAVL_RGBA_FLOAT:
1047
ret = tab->rgba_64_to_rgba_float;
1050
ret = tab->rgba_64_to_yuy2;
1053
ret = tab->rgba_64_to_uyvy;
1056
ret = tab->rgba_64_to_yuva_32;
1058
case GAVL_YUV_420_P:
1059
ret = tab->rgba_64_to_yuv_420_p;
1061
case GAVL_YUV_410_P:
1062
ret = tab->rgba_64_to_yuv_410_p;
1064
case GAVL_YUV_422_P:
1065
ret = tab->rgba_64_to_yuv_422_p;
1067
case GAVL_YUV_422_P_16:
1068
ret = tab->rgba_64_to_yuv_422_p_16;
1070
case GAVL_YUV_411_P:
1071
ret = tab->rgba_64_to_yuv_411_p;
1073
case GAVL_YUV_444_P:
1074
ret = tab->rgba_64_to_yuv_444_p;
1076
case GAVL_YUV_444_P_16:
1077
ret = tab->rgba_64_to_yuv_444_p_16;
1079
case GAVL_YUVJ_420_P:
1080
ret = tab->rgba_64_to_yuvj_420_p;
1082
case GAVL_YUVJ_422_P:
1083
ret = tab->rgba_64_to_yuvj_422_p;
1085
case GAVL_YUVJ_444_P:
1086
ret = tab->rgba_64_to_yuvj_444_p;
1088
/* Keep GCC happy */
1089
case GAVL_PIXELFORMAT_NONE:
1095
case GAVL_RGBA_FLOAT:
1096
switch(output_pixelformat)
1099
ret = tab->rgba_float_to_rgb_15;
1102
ret = tab->rgba_float_to_bgr_15;
1105
ret = tab->rgba_float_to_rgb_16;
1108
ret = tab->rgba_float_to_bgr_16;
1111
ret = tab->rgba_float_to_rgb_24;
1114
ret = tab->rgba_float_to_bgr_24;
1117
ret = tab->rgba_float_to_rgb_32;
1120
ret = tab->rgba_float_to_bgr_32;
1123
ret = tab->rgba_float_to_rgba_32;
1126
ret = tab->rgba_float_to_rgb_48;
1129
ret = tab->rgba_float_to_rgba_64;
1131
case GAVL_RGB_FLOAT:
1132
ret = tab->rgba_float_to_rgb_float;
1135
ret = tab->rgba_float_to_yuy2;
1138
ret = tab->rgba_float_to_uyvy;
1141
ret = tab->rgba_float_to_yuva_32;
1143
case GAVL_YUV_420_P:
1144
ret = tab->rgba_float_to_yuv_420_p;
1146
case GAVL_YUV_410_P:
1147
ret = tab->rgba_float_to_yuv_410_p;
1149
case GAVL_YUV_422_P:
1150
ret = tab->rgba_float_to_yuv_422_p;
1152
case GAVL_YUV_422_P_16:
1153
ret = tab->rgba_float_to_yuv_422_p_16;
1155
case GAVL_YUV_411_P:
1156
ret = tab->rgba_float_to_yuv_411_p;
1158
case GAVL_YUV_444_P:
1159
ret = tab->rgba_float_to_yuv_444_p;
1161
case GAVL_YUV_444_P_16:
1162
ret = tab->rgba_float_to_yuv_444_p_16;
1164
case GAVL_YUVJ_420_P:
1165
ret = tab->rgba_float_to_yuvj_420_p;
1167
case GAVL_YUVJ_422_P:
1168
ret = tab->rgba_float_to_yuvj_422_p;
1170
case GAVL_YUVJ_444_P:
1171
ret = tab->rgba_float_to_yuvj_444_p;
1173
/* Keep GCC happy */
1174
case GAVL_PIXELFORMAT_NONE:
1175
case GAVL_RGBA_FLOAT:
1182
switch(output_pixelformat)
1185
ret = tab->rgb_48_to_15;
1188
ret = tab->rgb_48_to_15_swap;
1191
ret = tab->rgb_48_to_16;
1194
ret = tab->rgb_48_to_16_swap;
1197
ret = tab->rgb_48_to_24;
1200
ret = tab->rgb_48_to_24_swap;
1203
ret = tab->rgb_48_to_32;
1206
ret = tab->rgb_48_to_32_swap;
1209
ret = tab->rgb_48_to_rgba_32;
1212
ret = tab->rgb_48_to_rgba_64;
1214
case GAVL_RGB_FLOAT:
1215
ret = tab->rgb_48_to_float;
1217
case GAVL_RGBA_FLOAT:
1218
ret = tab->rgb_48_to_rgba_float;
1221
ret = tab->rgb_48_to_yuy2;
1224
ret = tab->rgb_48_to_uyvy;
1227
ret = tab->rgb_48_to_yuva_32;
1229
case GAVL_YUV_420_P:
1230
ret = tab->rgb_48_to_yuv_420_p;
1232
case GAVL_YUV_410_P:
1233
ret = tab->rgb_48_to_yuv_410_p;
1235
case GAVL_YUV_422_P:
1236
ret = tab->rgb_48_to_yuv_422_p;
1238
case GAVL_YUV_422_P_16:
1239
ret = tab->rgb_48_to_yuv_422_p_16;
1241
case GAVL_YUV_411_P:
1242
ret = tab->rgb_48_to_yuv_411_p;
1244
case GAVL_YUV_444_P:
1245
ret = tab->rgb_48_to_yuv_444_p;
1247
case GAVL_YUV_444_P_16:
1248
ret = tab->rgb_48_to_yuv_444_p_16;
1250
case GAVL_YUVJ_420_P:
1251
ret = tab->rgb_48_to_yuvj_420_p;
1253
case GAVL_YUVJ_422_P:
1254
ret = tab->rgb_48_to_yuvj_422_p;
1256
case GAVL_YUVJ_444_P:
1257
ret = tab->rgb_48_to_yuvj_444_p;
1259
/* Keep GCC happy */
1260
case GAVL_PIXELFORMAT_NONE:
1265
case GAVL_RGB_FLOAT:
1266
switch(output_pixelformat)
1269
ret = tab->rgb_float_to_15;
1272
ret = tab->rgb_float_to_15_swap;
1275
ret = tab->rgb_float_to_16;
1278
ret = tab->rgb_float_to_16_swap;
1281
ret = tab->rgb_float_to_24;
1284
ret = tab->rgb_float_to_24_swap;
1287
ret = tab->rgb_float_to_32;
1290
ret = tab->rgb_float_to_32_swap;
1293
ret = tab->rgb_float_to_rgba_32;
1296
ret = tab->rgb_float_to_48;
1299
ret = tab->rgb_float_to_rgba_64;
1301
case GAVL_RGBA_FLOAT:
1302
ret = tab->rgb_float_to_rgba_float;
1305
ret = tab->rgb_float_to_yuy2;
1308
ret = tab->rgb_float_to_uyvy;
1311
ret = tab->rgb_float_to_yuva_32;
1313
case GAVL_YUV_420_P:
1314
ret = tab->rgb_float_to_yuv_420_p;
1316
case GAVL_YUV_410_P:
1317
ret = tab->rgb_float_to_yuv_410_p;
1319
case GAVL_YUV_422_P:
1320
ret = tab->rgb_float_to_yuv_422_p;
1322
case GAVL_YUV_422_P_16:
1323
ret = tab->rgb_float_to_yuv_422_p_16;
1325
case GAVL_YUV_411_P:
1326
ret = tab->rgb_float_to_yuv_411_p;
1328
case GAVL_YUV_444_P:
1329
ret = tab->rgb_float_to_yuv_444_p;
1331
case GAVL_YUV_444_P_16:
1332
ret = tab->rgb_float_to_yuv_444_p_16;
1334
case GAVL_YUVJ_420_P:
1335
ret = tab->rgb_float_to_yuvj_420_p;
1337
case GAVL_YUVJ_422_P:
1338
ret = tab->rgb_float_to_yuvj_422_p;
1340
case GAVL_YUVJ_444_P:
1341
ret = tab->rgb_float_to_yuvj_444_p;
1343
/* Keep GCC happy */
1344
case GAVL_PIXELFORMAT_NONE:
1345
case GAVL_RGB_FLOAT:
1353
switch(output_pixelformat)
1356
ret = tab->yuy2_to_rgb_15;
1359
ret = tab->yuy2_to_bgr_15;
1362
ret = tab->yuy2_to_rgb_16;
1365
ret = tab->yuy2_to_bgr_16;
1368
ret = tab->yuy2_to_rgb_24;
1371
ret = tab->yuy2_to_bgr_24;
1374
ret = tab->yuy2_to_rgb_32;
1377
ret = tab->yuy2_to_bgr_32;
1380
ret = tab->yuy2_to_rgba_32;
1383
ret = tab->yuy2_to_rgb_48;
1386
ret = tab->yuy2_to_rgba_64;
1388
case GAVL_RGB_FLOAT:
1389
ret = tab->yuy2_to_rgb_float;
1391
case GAVL_RGBA_FLOAT:
1392
ret = tab->yuy2_to_rgba_float;
1394
case GAVL_YUV_420_P:
1395
ret = tab->yuy2_to_yuv_420_p;
1397
case GAVL_YUV_410_P:
1398
ret = tab->yuy2_to_yuv_410_p;
1400
case GAVL_YUV_422_P:
1401
ret = tab->yuy2_to_yuv_422_p;
1403
case GAVL_YUV_422_P_16:
1404
ret = tab->yuy2_to_yuv_422_p_16;
1406
case GAVL_YUV_411_P:
1407
ret = tab->yuy2_to_yuv_411_p;
1409
case GAVL_YUV_444_P:
1410
ret = tab->yuy2_to_yuv_444_p;
1412
case GAVL_YUV_444_P_16:
1413
ret = tab->yuy2_to_yuv_444_p_16;
1415
case GAVL_YUVJ_420_P:
1416
ret = tab->yuy2_to_yuvj_420_p;
1418
case GAVL_YUVJ_422_P:
1419
ret = tab->yuy2_to_yuvj_422_p;
1421
case GAVL_YUVJ_444_P:
1422
ret = tab->yuy2_to_yuvj_444_p;
1425
ret = tab->uyvy_to_yuy2;
1428
ret = tab->yuy2_to_yuva_32;
1430
/* Keep GCC happy */
1431
case GAVL_PIXELFORMAT_NONE:
1437
switch(output_pixelformat)
1440
ret = tab->uyvy_to_rgb_15;
1443
ret = tab->uyvy_to_bgr_15;
1446
ret = tab->uyvy_to_rgb_16;
1449
ret = tab->uyvy_to_bgr_16;
1452
ret = tab->uyvy_to_rgb_24;
1455
ret = tab->uyvy_to_bgr_24;
1458
ret = tab->uyvy_to_rgb_32;
1461
ret = tab->uyvy_to_bgr_32;
1464
ret = tab->uyvy_to_rgba_32;
1467
ret = tab->uyvy_to_rgb_48;
1470
ret = tab->uyvy_to_rgba_64;
1472
case GAVL_RGB_FLOAT:
1473
ret = tab->uyvy_to_rgb_float;
1475
case GAVL_RGBA_FLOAT:
1476
ret = tab->uyvy_to_rgba_float;
1478
case GAVL_YUV_420_P:
1479
ret = tab->uyvy_to_yuv_420_p;
1481
case GAVL_YUV_410_P:
1482
ret = tab->uyvy_to_yuv_410_p;
1484
case GAVL_YUV_422_P:
1485
ret = tab->uyvy_to_yuv_422_p;
1487
case GAVL_YUV_422_P_16:
1488
ret = tab->uyvy_to_yuv_422_p_16;
1490
case GAVL_YUV_411_P:
1491
ret = tab->uyvy_to_yuv_411_p;
1493
case GAVL_YUV_444_P:
1494
ret = tab->uyvy_to_yuv_444_p;
1496
case GAVL_YUV_444_P_16:
1497
ret = tab->uyvy_to_yuv_444_p_16;
1499
case GAVL_YUVJ_420_P:
1500
ret = tab->uyvy_to_yuvj_420_p;
1502
case GAVL_YUVJ_422_P:
1503
ret = tab->uyvy_to_yuvj_422_p;
1505
case GAVL_YUVJ_444_P:
1506
ret = tab->uyvy_to_yuvj_444_p;
1509
ret = tab->uyvy_to_yuy2;
1512
ret = tab->uyvy_to_yuva_32;
1514
/* Keep GCC happy */
1515
case GAVL_PIXELFORMAT_NONE:
1522
switch(output_pixelformat)
1525
ret = tab->yuva_32_to_rgb_15;
1528
ret = tab->yuva_32_to_bgr_15;
1531
ret = tab->yuva_32_to_rgb_16;
1534
ret = tab->yuva_32_to_bgr_16;
1537
ret = tab->yuva_32_to_rgb_24;
1540
ret = tab->yuva_32_to_bgr_24;
1543
ret = tab->yuva_32_to_rgb_32;
1546
ret = tab->yuva_32_to_bgr_32;
1549
ret = tab->yuva_32_to_rgba_32;
1552
ret = tab->yuva_32_to_rgb_48;
1555
ret = tab->yuva_32_to_rgba_64;
1557
case GAVL_RGB_FLOAT:
1558
ret = tab->yuva_32_to_rgb_float;
1560
case GAVL_RGBA_FLOAT:
1561
ret = tab->yuva_32_to_rgba_float;
1563
case GAVL_YUV_420_P:
1564
ret = tab->yuva_32_to_yuv_420_p;
1566
case GAVL_YUV_410_P:
1567
ret = tab->yuva_32_to_yuv_410_p;
1569
case GAVL_YUV_422_P:
1570
ret = tab->yuva_32_to_yuv_422_p;
1572
case GAVL_YUV_422_P_16:
1573
ret = tab->yuva_32_to_yuv_422_p_16;
1575
case GAVL_YUV_411_P:
1576
ret = tab->yuva_32_to_yuv_411_p;
1578
case GAVL_YUV_444_P:
1579
ret = tab->yuva_32_to_yuv_444_p;
1581
case GAVL_YUV_444_P_16:
1582
ret = tab->yuva_32_to_yuv_444_p_16;
1584
case GAVL_YUVJ_420_P:
1585
ret = tab->yuva_32_to_yuvj_420_p;
1587
case GAVL_YUVJ_422_P:
1588
ret = tab->yuva_32_to_yuvj_422_p;
1590
case GAVL_YUVJ_444_P:
1591
ret = tab->yuva_32_to_yuvj_444_p;
1594
ret = tab->yuva_32_to_yuy2;
1597
ret = tab->yuva_32_to_uyvy;
1599
/* Keep GCC happy */
1600
case GAVL_PIXELFORMAT_NONE:
1607
case GAVL_YUV_420_P:
1608
switch(output_pixelformat)
1611
ret = tab->yuv_420_p_to_rgb_15;
1614
ret = tab->yuv_420_p_to_bgr_15;
1617
ret = tab->yuv_420_p_to_rgb_16;
1620
ret = tab->yuv_420_p_to_bgr_16;
1623
ret = tab->yuv_420_p_to_rgb_24;
1626
ret = tab->yuv_420_p_to_bgr_24;
1629
ret = tab->yuv_420_p_to_rgb_32;
1632
ret = tab->yuv_420_p_to_bgr_32;
1635
ret = tab->yuv_420_p_to_rgba_32;
1638
ret = tab->yuv_420_p_to_rgb_48;
1641
ret = tab->yuv_420_p_to_rgba_64;
1643
case GAVL_RGB_FLOAT:
1644
ret = tab->yuv_420_p_to_rgb_float;
1646
case GAVL_RGBA_FLOAT:
1647
ret = tab->yuv_420_p_to_rgba_float;
1651
ret = tab->yuv_420_p_to_yuy2;
1654
ret = tab->yuv_420_p_to_uyvy;
1657
ret = tab->yuv_420_p_to_yuva_32;
1659
case GAVL_YUV_410_P:
1660
ret = tab->yuv_420_p_to_yuv_410_p;
1662
case GAVL_YUV_422_P:
1663
ret = tab->yuv_420_p_to_yuv_422_p;
1665
case GAVL_YUV_422_P_16:
1666
ret = tab->yuv_420_p_to_yuv_422_p_16;
1668
case GAVL_YUV_411_P:
1669
ret = tab->yuv_420_p_to_yuv_411_p;
1671
case GAVL_YUV_444_P:
1672
ret = tab->yuv_420_p_to_yuv_444_p;
1674
case GAVL_YUV_444_P_16:
1675
ret = tab->yuv_420_p_to_yuv_444_p_16;
1677
case GAVL_YUVJ_420_P:
1678
ret = tab->yuv_420_p_to_yuvj_420_p;
1680
case GAVL_YUVJ_422_P:
1681
ret = tab->yuv_420_p_to_yuvj_422_p;
1683
case GAVL_YUVJ_444_P:
1684
ret = tab->yuv_420_p_to_yuvj_444_p;
1686
/* Keep GCC happy */
1687
case GAVL_PIXELFORMAT_NONE:
1688
case GAVL_YUV_420_P:
1692
case GAVL_YUV_410_P:
1693
switch(output_pixelformat)
1696
ret = tab->yuv_410_p_to_rgb_15;
1699
ret = tab->yuv_410_p_to_bgr_15;
1702
ret = tab->yuv_410_p_to_rgb_16;
1705
ret = tab->yuv_410_p_to_bgr_16;
1708
ret = tab->yuv_410_p_to_rgb_24;
1711
ret = tab->yuv_410_p_to_bgr_24;
1714
ret = tab->yuv_410_p_to_rgb_32;
1717
ret = tab->yuv_410_p_to_bgr_32;
1720
ret = tab->yuv_410_p_to_rgba_32;
1723
ret = tab->yuv_410_p_to_rgb_48;
1726
ret = tab->yuv_410_p_to_rgba_64;
1728
case GAVL_RGB_FLOAT:
1729
ret = tab->yuv_410_p_to_rgb_float;
1731
case GAVL_RGBA_FLOAT:
1732
ret = tab->yuv_410_p_to_rgba_float;
1736
ret = tab->yuv_410_p_to_yuy2;
1739
ret = tab->yuv_410_p_to_uyvy;
1742
ret = tab->yuv_410_p_to_yuva_32;
1744
case GAVL_YUV_420_P:
1745
ret = tab->yuv_410_p_to_yuv_420_p;
1747
case GAVL_YUV_422_P:
1748
ret = tab->yuv_410_p_to_yuv_422_p;
1750
case GAVL_YUV_422_P_16:
1751
ret = tab->yuv_410_p_to_yuv_422_p_16;
1753
case GAVL_YUV_411_P:
1754
ret = tab->yuv_410_p_to_yuv_411_p;
1756
case GAVL_YUV_444_P:
1757
ret = tab->yuv_410_p_to_yuv_444_p;
1759
case GAVL_YUV_444_P_16:
1760
ret = tab->yuv_410_p_to_yuv_444_p_16;
1762
case GAVL_YUVJ_420_P:
1763
ret = tab->yuv_410_p_to_yuvj_420_p;
1765
case GAVL_YUVJ_422_P:
1766
ret = tab->yuv_410_p_to_yuvj_422_p;
1768
case GAVL_YUVJ_444_P:
1769
ret = tab->yuv_410_p_to_yuvj_444_p;
1771
/* Keep GCC happy */
1772
case GAVL_PIXELFORMAT_NONE:
1773
case GAVL_YUV_410_P:
1777
case GAVL_YUV_422_P:
1778
switch(output_pixelformat)
1781
ret = tab->yuv_422_p_to_rgb_15;
1784
ret = tab->yuv_422_p_to_bgr_15;
1787
ret = tab->yuv_422_p_to_rgb_16;
1790
ret = tab->yuv_422_p_to_bgr_16;
1793
ret = tab->yuv_422_p_to_rgb_24;
1796
ret = tab->yuv_422_p_to_bgr_24;
1799
ret = tab->yuv_422_p_to_rgb_32;
1802
ret = tab->yuv_422_p_to_bgr_32;
1805
ret = tab->yuv_422_p_to_rgba_32;
1808
ret = tab->yuv_422_p_to_rgb_48;
1811
ret = tab->yuv_422_p_to_rgba_64;
1813
case GAVL_RGB_FLOAT:
1814
ret = tab->yuv_422_p_to_rgb_float;
1816
case GAVL_RGBA_FLOAT:
1817
ret = tab->yuv_422_p_to_rgba_float;
1820
ret = tab->yuv_422_p_to_yuy2;
1823
ret = tab->yuv_422_p_to_uyvy;
1826
ret = tab->yuv_422_p_to_yuva_32;
1828
case GAVL_YUV_420_P:
1829
ret = tab->yuv_422_p_to_yuv_420_p;
1831
case GAVL_YUV_410_P:
1832
ret = tab->yuv_422_p_to_yuv_410_p;
1834
case GAVL_YUV_411_P:
1835
ret = tab->yuv_422_p_to_yuv_411_p;
1837
case GAVL_YUV_444_P:
1838
ret = tab->yuv_422_p_to_yuv_444_p;
1840
case GAVL_YUV_444_P_16:
1841
ret = tab->yuv_422_p_to_yuv_444_p_16;
1843
case GAVL_YUV_422_P_16:
1844
ret = tab->yuv_422_p_to_yuv_422_p_16;
1846
case GAVL_YUVJ_420_P:
1847
ret = tab->yuv_422_p_to_yuvj_420_p;
1849
case GAVL_YUVJ_422_P:
1850
ret = tab->yuv_422_p_to_yuvj_422_p;
1852
case GAVL_YUVJ_444_P:
1853
ret = tab->yuv_422_p_to_yuvj_444_p;
1855
/* Keep GCC happy */
1856
case GAVL_PIXELFORMAT_NONE:
1857
case GAVL_YUV_422_P:
1862
case GAVL_YUV_422_P_16:
1863
switch(output_pixelformat)
1866
ret = tab->yuv_422_p_16_to_rgb_15;
1869
ret = tab->yuv_422_p_16_to_bgr_15;
1872
ret = tab->yuv_422_p_16_to_rgb_16;
1875
ret = tab->yuv_422_p_16_to_bgr_16;
1878
ret = tab->yuv_422_p_16_to_rgb_24;
1881
ret = tab->yuv_422_p_16_to_bgr_24;
1884
ret = tab->yuv_422_p_16_to_rgb_32;
1887
ret = tab->yuv_422_p_16_to_bgr_32;
1890
ret = tab->yuv_422_p_16_to_rgba_32;
1893
ret = tab->yuv_422_p_16_to_rgb_48;
1896
ret = tab->yuv_422_p_16_to_rgba_64;
1898
case GAVL_RGB_FLOAT:
1899
ret = tab->yuv_422_p_16_to_rgb_float;
1901
case GAVL_RGBA_FLOAT:
1902
ret = tab->yuv_422_p_16_to_rgba_float;
1905
ret = tab->yuv_422_p_16_to_yuy2;
1908
ret = tab->yuv_422_p_16_to_uyvy;
1911
ret = tab->yuv_422_p_16_to_yuva_32;
1913
case GAVL_YUV_420_P:
1914
ret = tab->yuv_422_p_16_to_yuv_420_p;
1916
case GAVL_YUV_410_P:
1917
ret = tab->yuv_422_p_16_to_yuv_410_p;
1919
case GAVL_YUV_411_P:
1920
ret = tab->yuv_422_p_16_to_yuv_411_p;
1922
case GAVL_YUV_444_P:
1923
ret = tab->yuv_422_p_16_to_yuv_444_p;
1925
case GAVL_YUV_444_P_16:
1926
ret = tab->yuv_422_p_16_to_yuv_444_p_16;
1928
case GAVL_YUV_422_P:
1929
ret = tab->yuv_422_p_16_to_yuv_422_p;
1931
case GAVL_YUVJ_420_P:
1932
ret = tab->yuv_422_p_16_to_yuvj_420_p;
1934
case GAVL_YUVJ_422_P:
1935
ret = tab->yuv_422_p_16_to_yuvj_422_p;
1937
case GAVL_YUVJ_444_P:
1938
ret = tab->yuv_422_p_16_to_yuvj_444_p;
1940
/* Keep GCC happy */
1941
case GAVL_PIXELFORMAT_NONE:
1942
case GAVL_YUV_422_P_16:
1947
case GAVL_YUV_411_P:
1948
switch(output_pixelformat)
1951
ret = tab->yuv_411_p_to_rgb_15;
1954
ret = tab->yuv_411_p_to_bgr_15;
1957
ret = tab->yuv_411_p_to_rgb_16;
1960
ret = tab->yuv_411_p_to_bgr_16;
1963
ret = tab->yuv_411_p_to_rgb_24;
1966
ret = tab->yuv_411_p_to_bgr_24;
1969
ret = tab->yuv_411_p_to_rgb_32;
1972
ret = tab->yuv_411_p_to_bgr_32;
1975
ret = tab->yuv_411_p_to_rgba_32;
1978
ret = tab->yuv_411_p_to_rgb_48;
1981
ret = tab->yuv_411_p_to_rgba_64;
1983
case GAVL_RGB_FLOAT:
1984
ret = tab->yuv_411_p_to_rgb_float;
1986
case GAVL_RGBA_FLOAT:
1987
ret = tab->yuv_411_p_to_rgba_float;
1991
ret = tab->yuv_411_p_to_yuy2;
1994
ret = tab->yuv_411_p_to_uyvy;
1997
ret = tab->yuv_411_p_to_yuva_32;
1999
case GAVL_YUV_420_P:
2000
ret = tab->yuv_411_p_to_yuv_420_p;
2002
case GAVL_YUV_410_P:
2003
ret = tab->yuv_411_p_to_yuv_410_p;
2005
case GAVL_YUV_422_P:
2006
ret = tab->yuv_411_p_to_yuv_422_p;
2008
case GAVL_YUV_422_P_16:
2009
ret = tab->yuv_411_p_to_yuv_422_p_16;
2011
case GAVL_YUV_444_P:
2012
ret = tab->yuv_411_p_to_yuv_444_p;
2014
case GAVL_YUV_444_P_16:
2015
ret = tab->yuv_411_p_to_yuv_444_p_16;
2017
case GAVL_YUVJ_420_P:
2018
ret = tab->yuv_411_p_to_yuvj_420_p;
2020
case GAVL_YUVJ_422_P:
2021
ret = tab->yuv_411_p_to_yuvj_422_p;
2023
case GAVL_YUVJ_444_P:
2024
ret = tab->yuv_411_p_to_yuvj_444_p;
2026
/* Keep GCC happy */
2027
case GAVL_PIXELFORMAT_NONE:
2028
case GAVL_YUV_411_P:
2032
case GAVL_YUV_444_P:
2033
switch(output_pixelformat)
2036
ret = tab->yuv_444_p_to_rgb_15;
2039
ret = tab->yuv_444_p_to_bgr_15;
2042
ret = tab->yuv_444_p_to_rgb_16;
2045
ret = tab->yuv_444_p_to_bgr_16;
2048
ret = tab->yuv_444_p_to_rgb_24;
2051
ret = tab->yuv_444_p_to_bgr_24;
2054
ret = tab->yuv_444_p_to_rgb_32;
2057
ret = tab->yuv_444_p_to_bgr_32;
2060
ret = tab->yuv_444_p_to_rgba_32;
2063
ret = tab->yuv_444_p_to_rgb_48;
2066
ret = tab->yuv_444_p_to_rgba_64;
2068
case GAVL_RGB_FLOAT:
2069
ret = tab->yuv_444_p_to_rgb_float;
2071
case GAVL_RGBA_FLOAT:
2072
ret = tab->yuv_444_p_to_rgba_float;
2076
ret = tab->yuv_444_p_to_yuy2;
2079
ret = tab->yuv_444_p_to_uyvy;
2082
ret = tab->yuv_444_p_to_yuva_32;
2084
case GAVL_YUV_410_P:
2085
ret = tab->yuv_444_p_to_yuv_410_p;
2087
case GAVL_YUV_420_P:
2088
ret = tab->yuv_444_p_to_yuv_420_p;
2090
case GAVL_YUV_422_P:
2091
ret = tab->yuv_444_p_to_yuv_422_p;
2093
case GAVL_YUV_422_P_16:
2094
ret = tab->yuv_444_p_to_yuv_422_p_16;
2096
case GAVL_YUV_444_P_16:
2097
ret = tab->yuv_444_p_to_yuv_444_p_16;
2099
case GAVL_YUV_411_P:
2100
ret = tab->yuv_444_p_to_yuv_411_p;
2102
case GAVL_YUVJ_420_P:
2103
ret = tab->yuv_444_p_to_yuvj_420_p;
2105
case GAVL_YUVJ_422_P:
2106
ret = tab->yuv_444_p_to_yuvj_422_p;
2108
case GAVL_YUVJ_444_P:
2109
ret = tab->yuv_444_p_to_yuvj_444_p;
2111
/* Keep GCC happy */
2112
case GAVL_PIXELFORMAT_NONE:
2113
case GAVL_YUV_444_P:
2118
case GAVL_YUV_444_P_16:
2119
switch(output_pixelformat)
2122
ret = tab->yuv_444_p_16_to_rgb_15;
2125
ret = tab->yuv_444_p_16_to_bgr_15;
2128
ret = tab->yuv_444_p_16_to_rgb_16;
2131
ret = tab->yuv_444_p_16_to_bgr_16;
2134
ret = tab->yuv_444_p_16_to_rgb_24;
2137
ret = tab->yuv_444_p_16_to_bgr_24;
2140
ret = tab->yuv_444_p_16_to_rgb_32;
2143
ret = tab->yuv_444_p_16_to_bgr_32;
2146
ret = tab->yuv_444_p_16_to_rgba_32;
2149
ret = tab->yuv_444_p_16_to_rgb_48;
2152
ret = tab->yuv_444_p_16_to_rgba_64;
2154
case GAVL_RGB_FLOAT:
2155
ret = tab->yuv_444_p_16_to_rgb_float;
2157
case GAVL_RGBA_FLOAT:
2158
ret = tab->yuv_444_p_16_to_rgba_float;
2162
ret = tab->yuv_444_p_16_to_yuy2;
2165
ret = tab->yuv_444_p_16_to_uyvy;
2168
ret = tab->yuv_444_p_16_to_yuva_32;
2170
case GAVL_YUV_410_P:
2171
ret = tab->yuv_444_p_16_to_yuv_410_p;
2173
case GAVL_YUV_420_P:
2174
ret = tab->yuv_444_p_16_to_yuv_420_p;
2176
case GAVL_YUV_422_P:
2177
ret = tab->yuv_444_p_16_to_yuv_422_p;
2179
case GAVL_YUV_422_P_16:
2180
ret = tab->yuv_444_p_16_to_yuv_422_p_16;
2182
case GAVL_YUV_444_P:
2183
ret = tab->yuv_444_p_16_to_yuv_444_p;
2185
case GAVL_YUV_411_P:
2186
ret = tab->yuv_444_p_16_to_yuv_411_p;
2188
case GAVL_YUVJ_420_P:
2189
ret = tab->yuv_444_p_16_to_yuvj_420_p;
2191
case GAVL_YUVJ_422_P:
2192
ret = tab->yuv_444_p_16_to_yuvj_422_p;
2194
case GAVL_YUVJ_444_P:
2195
ret = tab->yuv_444_p_16_to_yuvj_444_p;
2197
/* Keep GCC happy */
2198
case GAVL_PIXELFORMAT_NONE:
2199
case GAVL_YUV_444_P_16:
2204
case GAVL_YUVJ_420_P:
2205
switch(output_pixelformat)
2208
ret = tab->yuvj_420_p_to_rgb_15;
2211
ret = tab->yuvj_420_p_to_bgr_15;
2214
ret = tab->yuvj_420_p_to_rgb_16;
2217
ret = tab->yuvj_420_p_to_bgr_16;
2220
ret = tab->yuvj_420_p_to_rgb_24;
2223
ret = tab->yuvj_420_p_to_bgr_24;
2226
ret = tab->yuvj_420_p_to_rgb_32;
2229
ret = tab->yuvj_420_p_to_bgr_32;
2232
ret = tab->yuvj_420_p_to_rgba_32;
2235
ret = tab->yuvj_420_p_to_rgb_48;
2238
ret = tab->yuvj_420_p_to_rgba_64;
2240
case GAVL_RGB_FLOAT:
2241
ret = tab->yuvj_420_p_to_rgb_float;
2243
case GAVL_RGBA_FLOAT:
2244
ret = tab->yuvj_420_p_to_rgba_float;
2248
ret = tab->yuvj_420_p_to_yuy2;
2251
ret = tab->yuvj_420_p_to_uyvy;
2254
ret = tab->yuvj_420_p_to_yuva_32;
2256
case GAVL_YUV_422_P:
2257
ret = tab->yuvj_420_p_to_yuv_422_p;
2259
case GAVL_YUV_422_P_16:
2260
ret = tab->yuvj_420_p_to_yuv_422_p_16;
2262
case GAVL_YUV_444_P:
2263
ret = tab->yuvj_420_p_to_yuv_444_p;
2265
case GAVL_YUV_444_P_16:
2266
ret = tab->yuvj_420_p_to_yuv_444_p_16;
2268
case GAVL_YUV_420_P:
2269
ret = tab->yuvj_420_p_to_yuv_420_p;
2271
case GAVL_YUV_410_P:
2272
ret = tab->yuvj_420_p_to_yuv_410_p;
2274
case GAVL_YUVJ_422_P:
2275
ret = tab->yuv_420_p_to_yuv_422_p;
2277
case GAVL_YUV_411_P:
2278
ret = tab->yuv_420_p_to_yuv_411_p;
2280
case GAVL_YUVJ_444_P:
2281
ret = tab->yuv_420_p_to_yuv_444_p;
2283
/* Keep GCC happy */
2284
case GAVL_PIXELFORMAT_NONE:
2285
case GAVL_YUVJ_420_P:
2289
case GAVL_YUVJ_422_P:
2290
switch(output_pixelformat)
2293
ret = tab->yuvj_422_p_to_rgb_15;
2296
ret = tab->yuvj_422_p_to_bgr_15;
2299
ret = tab->yuvj_422_p_to_rgb_16;
2302
ret = tab->yuvj_422_p_to_bgr_16;
2305
ret = tab->yuvj_422_p_to_rgb_24;
2308
ret = tab->yuvj_422_p_to_bgr_24;
2311
ret = tab->yuvj_422_p_to_rgb_32;
2314
ret = tab->yuvj_422_p_to_bgr_32;
2317
ret = tab->yuvj_422_p_to_rgba_32;
2320
ret = tab->yuvj_422_p_to_rgb_48;
2323
ret = tab->yuvj_422_p_to_rgba_64;
2325
case GAVL_RGB_FLOAT:
2326
ret = tab->yuvj_422_p_to_rgb_float;
2328
case GAVL_RGBA_FLOAT:
2329
ret = tab->yuvj_422_p_to_rgba_float;
2332
ret = tab->yuvj_422_p_to_yuy2;
2335
ret = tab->yuvj_422_p_to_uyvy;
2338
ret = tab->yuvj_422_p_to_yuva_32;
2340
case GAVL_YUV_420_P:
2341
ret = tab->yuvj_422_p_to_yuv_420_p;
2343
case GAVL_YUV_411_P:
2344
ret = tab->yuvj_422_p_to_yuv_411_p;
2346
case GAVL_YUV_410_P:
2347
ret = tab->yuvj_422_p_to_yuv_410_p;
2349
case GAVL_YUV_444_P:
2350
ret = tab->yuvj_422_p_to_yuv_444_p;
2352
case GAVL_YUV_444_P_16:
2353
ret = tab->yuvj_422_p_to_yuv_444_p_16;
2355
case GAVL_YUVJ_420_P:
2356
ret = tab->yuv_422_p_to_yuv_420_p;
2358
case GAVL_YUV_422_P:
2359
ret = tab->yuvj_422_p_to_yuv_422_p;
2361
case GAVL_YUV_422_P_16:
2362
ret = tab->yuvj_422_p_to_yuv_422_p_16;
2364
case GAVL_YUVJ_444_P:
2365
ret = tab->yuv_422_p_to_yuv_444_p;
2367
/* Keep GCC happy */
2368
case GAVL_PIXELFORMAT_NONE:
2369
case GAVL_YUVJ_422_P:
2373
case GAVL_YUVJ_444_P:
2374
switch(output_pixelformat)
2377
ret = tab->yuvj_444_p_to_rgb_15;
2380
ret = tab->yuvj_444_p_to_bgr_15;
2383
ret = tab->yuvj_444_p_to_rgb_16;
2386
ret = tab->yuvj_444_p_to_bgr_16;
2389
ret = tab->yuvj_444_p_to_rgb_24;
2392
ret = tab->yuvj_444_p_to_bgr_24;
2395
ret = tab->yuvj_444_p_to_rgb_32;
2398
ret = tab->yuvj_444_p_to_bgr_32;
2401
ret = tab->yuvj_444_p_to_rgba_32;
2404
ret = tab->yuvj_444_p_to_rgb_48;
2407
ret = tab->yuvj_444_p_to_rgba_64;
2409
case GAVL_RGB_FLOAT:
2410
ret = tab->yuvj_444_p_to_rgb_float;
2412
case GAVL_RGBA_FLOAT:
2413
ret = tab->yuvj_444_p_to_rgba_float;
2416
ret = tab->yuvj_444_p_to_yuy2;
2419
ret = tab->yuvj_444_p_to_uyvy;
2422
ret = tab->yuvj_444_p_to_yuva_32;
2424
case GAVL_YUV_420_P:
2425
ret = tab->yuvj_444_p_to_yuv_420_p;
2427
case GAVL_YUV_410_P:
2428
ret = tab->yuvj_444_p_to_yuv_410_p;
2430
case GAVL_YUV_422_P:
2431
ret = tab->yuvj_444_p_to_yuv_422_p;
2433
case GAVL_YUV_422_P_16:
2434
ret = tab->yuvj_444_p_to_yuv_422_p_16;
2436
case GAVL_YUV_411_P:
2437
ret = tab->yuvj_444_p_to_yuv_411_p;
2439
case GAVL_YUVJ_420_P:
2440
ret = tab->yuv_444_p_to_yuv_420_p;
2442
case GAVL_YUVJ_422_P:
2443
ret = tab->yuv_444_p_to_yuv_422_p;
2445
case GAVL_YUV_444_P:
2446
ret = tab->yuvj_444_p_to_yuv_444_p;
2448
case GAVL_YUV_444_P_16:
2449
ret = tab->yuvj_444_p_to_yuv_444_p_16;
2451
/* Keep GCC happy */
2452
case GAVL_PIXELFORMAT_NONE:
2453
case GAVL_YUVJ_444_P:
2459
case GAVL_PIXELFORMAT_NONE:
2466
/* bytes_per_component is only valid for planar formats */
2468
int gavl_pixelformat_bytes_per_component(gavl_pixelformat_t csp)
2472
case GAVL_PIXELFORMAT_NONE:
2484
case GAVL_RGB_FLOAT:
2485
case GAVL_RGBA_FLOAT:
2491
case GAVL_YUV_420_P:
2492
case GAVL_YUV_422_P:
2493
case GAVL_YUV_444_P:
2494
case GAVL_YUV_411_P:
2495
case GAVL_YUV_410_P:
2496
case GAVL_YUVJ_420_P:
2497
case GAVL_YUVJ_422_P:
2498
case GAVL_YUVJ_444_P:
2501
case GAVL_YUV_444_P_16:
2502
case GAVL_YUV_422_P_16:
2508
/* bytes_per_pixel is only valid for packed formats */
2510
int gavl_pixelformat_bytes_per_pixel(gavl_pixelformat_t csp)
2514
case GAVL_PIXELFORMAT_NONE:
2539
case GAVL_RGB_FLOAT:
2540
return 3*sizeof(float);
2542
case GAVL_RGBA_FLOAT:
2543
return 4*sizeof(float);
2548
case GAVL_YUV_420_P:
2549
case GAVL_YUV_422_P:
2550
case GAVL_YUV_422_P_16:
2551
case GAVL_YUV_444_P:
2552
case GAVL_YUV_444_P_16:
2553
case GAVL_YUV_411_P:
2554
case GAVL_YUV_410_P:
2555
case GAVL_YUVJ_420_P:
2556
case GAVL_YUVJ_422_P:
2557
case GAVL_YUVJ_444_P:
2563
/* Check if a pixelformat can be converted by simple scaling */
2565
int gavl_pixelformat_can_scale(gavl_pixelformat_t in_csp, gavl_pixelformat_t out_csp)
2567
int sub_v_in, sub_h_in;
2568
int sub_v_out, sub_h_out;
2569
if(gavl_pixelformat_is_rgb(in_csp) ||
2570
gavl_pixelformat_is_rgb(out_csp))
2575
if(gavl_pixelformat_is_jpeg_scaled(in_csp) !=
2576
gavl_pixelformat_is_jpeg_scaled(out_csp))
2580
if(gavl_pixelformat_has_alpha(in_csp) !=
2581
gavl_pixelformat_has_alpha(out_csp))
2588
gavl_pixelformat_chroma_sub(in_csp, &sub_h_in, &sub_v_in);
2589
gavl_pixelformat_chroma_sub(out_csp, &sub_h_out, &sub_v_out);
2591
if((sub_h_in == sub_h_out) && (sub_v_in == sub_v_out))
2596
if(!gavl_pixelformat_is_planar(in_csp))
2598
fprintf(stderr, "BLUPPPP: %d %d\n", gavl_pixelformat_is_planar(out_csp),
2599
gavl_pixelformat_bytes_per_component(out_csp));
2601
if(gavl_pixelformat_is_planar(out_csp) &&
2602
(gavl_pixelformat_bytes_per_component(out_csp) == 1))
2609
if(!gavl_pixelformat_is_planar(out_csp) &&
2610
(gavl_pixelformat_bytes_per_component(in_csp) == 1))
2612
else if(gavl_pixelformat_bytes_per_component(in_csp) ==
2613
gavl_pixelformat_bytes_per_component(out_csp))
2622
* Return a pixelformat (or GAVL_PIXELFORMAT_NONE) as an intermediate pixelformat
2623
* for which the conversion quality can be improved. E.g. instead of
2624
* RGB -> YUV420P, we can do RGB -> YUV444P -> YUV420P with proper chroma scaling
2627
gavl_pixelformat_t gavl_pixelformat_get_intermediate(gavl_pixelformat_t in_csp,
2628
gavl_pixelformat_t out_csp)
2632
case GAVL_PIXELFORMAT_NONE: return GAVL_PIXELFORMAT_NONE; break;
2644
case GAVL_RGB_FLOAT:
2645
case GAVL_RGBA_FLOAT:
2650
case GAVL_PIXELFORMAT_NONE:
2661
case GAVL_RGB_FLOAT:
2662
case GAVL_RGBA_FLOAT:
2665
case GAVL_YUV_444_P:
2666
case GAVL_YUVJ_444_P:
2667
case GAVL_YUV_444_P_16:
2668
return GAVL_PIXELFORMAT_NONE; break;
2671
case GAVL_YUV_420_P:
2672
case GAVL_YUV_422_P:
2673
case GAVL_YUV_411_P:
2674
case GAVL_YUV_410_P:
2675
return GAVL_YUV_444_P; break;
2676
case GAVL_YUVJ_420_P:
2677
case GAVL_YUVJ_422_P:
2678
return GAVL_YUVJ_444_P; break;
2679
case GAVL_YUV_422_P_16:
2680
return GAVL_YUV_444_P_16; break;
2685
case GAVL_YUV_422_P:
2688
case GAVL_PIXELFORMAT_NONE:
2689
return GAVL_PIXELFORMAT_NONE; break;
2701
case GAVL_RGB_FLOAT:
2702
case GAVL_RGBA_FLOAT:
2705
return GAVL_YUV_444_P; break;
2706
case GAVL_YUV_422_P:
2707
case GAVL_YUV_422_P_16:
2708
case GAVL_YUVJ_422_P:
2711
case GAVL_YUV_420_P:
2712
case GAVL_YUV_411_P:
2713
case GAVL_YUV_410_P:
2714
return GAVL_PIXELFORMAT_NONE; break;
2715
case GAVL_YUV_444_P_16:
2716
return GAVL_YUV_422_P_16; break;
2717
case GAVL_YUV_444_P:
2718
return GAVL_YUV_422_P; break;
2719
case GAVL_YUVJ_444_P:
2720
return GAVL_YUVJ_422_P; break;
2721
case GAVL_YUVJ_420_P:
2722
return GAVL_YUVJ_422_P; break;
2725
case GAVL_YUV_420_P:
2728
case GAVL_PIXELFORMAT_NONE:
2729
return GAVL_PIXELFORMAT_NONE; break;
2741
case GAVL_RGB_FLOAT:
2742
case GAVL_RGBA_FLOAT:
2745
return GAVL_YUV_444_P; break;
2746
case GAVL_YUV_422_P:
2749
case GAVL_YUV_420_P:
2750
case GAVL_YUV_411_P:
2751
case GAVL_YUV_410_P:
2752
case GAVL_YUV_444_P:
2753
case GAVL_YUVJ_420_P:
2754
return GAVL_PIXELFORMAT_NONE; break;
2755
case GAVL_YUV_422_P_16:
2756
return GAVL_YUV_422_P; break;
2757
case GAVL_YUVJ_422_P:
2758
return GAVL_YUVJ_420_P; break;
2759
case GAVL_YUV_444_P_16:
2760
return GAVL_YUV_444_P; break;
2761
case GAVL_YUVJ_444_P:
2762
return GAVL_YUVJ_420_P; break;
2765
case GAVL_YUV_444_P:
2768
case GAVL_PIXELFORMAT_NONE:
2779
case GAVL_RGB_FLOAT:
2780
case GAVL_RGBA_FLOAT:
2783
return GAVL_PIXELFORMAT_NONE; break;
2784
case GAVL_YUV_422_P:
2787
case GAVL_YUV_420_P:
2788
case GAVL_YUV_411_P:
2789
case GAVL_YUV_410_P:
2790
case GAVL_YUV_444_P:
2791
case GAVL_YUVJ_444_P:
2792
case GAVL_YUV_444_P_16:
2793
return GAVL_PIXELFORMAT_NONE; break;
2794
case GAVL_YUV_422_P_16:
2795
return GAVL_YUV_422_P; break;
2796
case GAVL_YUVJ_422_P:
2797
return GAVL_YUVJ_420_P; break;
2798
case GAVL_YUVJ_420_P:
2799
return GAVL_YUVJ_444_P; break;
2803
case GAVL_YUV_411_P:
2804
case GAVL_YUV_410_P:
2807
case GAVL_PIXELFORMAT_NONE:
2808
return GAVL_PIXELFORMAT_NONE; break;
2819
case GAVL_RGB_FLOAT:
2820
case GAVL_RGBA_FLOAT:
2823
return GAVL_YUV_444_P; break;
2824
case GAVL_YUV_422_P:
2827
case GAVL_YUV_420_P:
2828
case GAVL_YUV_411_P:
2829
case GAVL_YUV_410_P:
2830
case GAVL_YUV_444_P:
2831
return GAVL_PIXELFORMAT_NONE; break;
2833
case GAVL_YUVJ_444_P:
2834
return GAVL_YUV_444_P; break;
2835
case GAVL_YUV_422_P_16:
2836
return GAVL_YUV_422_P; break;
2837
case GAVL_YUVJ_422_P:
2838
return GAVL_YUV_422_P; break;
2839
case GAVL_YUV_444_P_16:
2840
return GAVL_YUV_444_P; break;
2841
case GAVL_YUVJ_420_P:
2842
return GAVL_YUV_420_P; break;
2845
case GAVL_YUVJ_420_P:
2848
case GAVL_PIXELFORMAT_NONE:
2849
return GAVL_PIXELFORMAT_NONE; break;
2860
case GAVL_RGB_FLOAT:
2861
case GAVL_RGBA_FLOAT:
2864
return GAVL_YUVJ_444_P; break;
2865
case GAVL_YUV_422_P:
2868
case GAVL_YUV_411_P:
2869
case GAVL_YUV_410_P:
2870
case GAVL_YUV_444_P:
2871
return GAVL_YUV_420_P; break;
2872
case GAVL_YUV_420_P:
2873
case GAVL_YUVJ_444_P:
2874
case GAVL_YUVJ_422_P:
2875
case GAVL_YUVJ_420_P:
2876
return GAVL_PIXELFORMAT_NONE; break;
2878
case GAVL_YUV_422_P_16:
2879
return GAVL_YUVJ_422_P; break;
2880
case GAVL_YUV_444_P_16:
2881
return GAVL_YUVJ_444_P; break;
2885
case GAVL_YUVJ_422_P:
2888
case GAVL_PIXELFORMAT_NONE:
2889
return GAVL_PIXELFORMAT_NONE; break;
2900
case GAVL_RGB_FLOAT:
2901
case GAVL_RGBA_FLOAT:
2904
return GAVL_YUVJ_444_P; break;
2905
case GAVL_YUV_411_P:
2906
case GAVL_YUV_410_P:
2907
case GAVL_YUV_444_P:
2908
case GAVL_YUV_420_P:
2909
return GAVL_YUV_422_P; break;
2910
case GAVL_YUV_422_P:
2913
case GAVL_YUVJ_444_P:
2914
case GAVL_YUVJ_422_P:
2915
case GAVL_YUVJ_420_P:
2916
case GAVL_YUV_422_P_16:
2917
return GAVL_PIXELFORMAT_NONE; break;
2918
case GAVL_YUV_444_P_16:
2919
return GAVL_YUV_422_P_16; break;
2922
case GAVL_YUVJ_444_P:
2925
case GAVL_PIXELFORMAT_NONE:
2936
case GAVL_RGB_FLOAT:
2937
case GAVL_RGBA_FLOAT:
2940
case GAVL_YUV_444_P:
2941
case GAVL_YUV_444_P_16:
2942
return GAVL_PIXELFORMAT_NONE; break;
2943
case GAVL_YUV_411_P:
2944
case GAVL_YUV_410_P:
2945
case GAVL_YUV_420_P:
2946
return GAVL_YUV_444_P; break;
2947
case GAVL_YUV_422_P:
2950
case GAVL_YUVJ_444_P:
2951
case GAVL_YUVJ_422_P:
2952
case GAVL_YUVJ_420_P:
2953
return GAVL_PIXELFORMAT_NONE; break;
2955
case GAVL_YUV_422_P_16:
2956
return GAVL_YUVJ_422_P; break;
2957
return GAVL_YUV_422_P_16; break;
2960
case GAVL_YUV_444_P_16:
2963
case GAVL_PIXELFORMAT_NONE:
2974
case GAVL_RGB_FLOAT:
2975
case GAVL_RGBA_FLOAT:
2978
case GAVL_YUV_444_P:
2979
case GAVL_YUV_444_P_16:
2980
case GAVL_YUVJ_444_P:
2981
case GAVL_YUV_422_P_16:
2982
return GAVL_PIXELFORMAT_NONE; break;
2983
case GAVL_YUV_422_P:
2986
case GAVL_YUV_411_P:
2987
case GAVL_YUV_410_P:
2988
case GAVL_YUV_420_P:
2989
return GAVL_YUV_444_P; break;
2990
case GAVL_YUVJ_422_P:
2991
case GAVL_YUVJ_420_P:
2992
return GAVL_YUVJ_444_P; break;
2995
case GAVL_YUV_422_P_16:
2998
case GAVL_PIXELFORMAT_NONE:
3009
case GAVL_RGB_FLOAT:
3010
case GAVL_RGBA_FLOAT:
3013
case GAVL_YUV_444_P:
3014
case GAVL_YUVJ_444_P:
3015
return GAVL_YUV_444_P_16; break;
3016
case GAVL_YUV_444_P_16:
3017
case GAVL_YUV_422_P_16:
3018
case GAVL_YUV_422_P:
3021
case GAVL_YUVJ_422_P:
3022
return GAVL_PIXELFORMAT_NONE; break;
3023
case GAVL_YUV_411_P:
3024
case GAVL_YUV_410_P:
3025
case GAVL_YUV_420_P:
3026
return GAVL_YUV_422_P; break;
3027
case GAVL_YUVJ_420_P:
3028
return GAVL_YUVJ_422_P; break;
3033
return GAVL_PIXELFORMAT_NONE;