37 int x,
int y,
int c,
int w,
38 int read_pal_component)
42 int depth = comp.
depth;
43 int mask = (1 << depth) - 1;
49 int skip = x * step + comp.
offset;
51 int shift = 8 - depth - (skip & 7);
55 if (read_pal_component)
56 val = data[1][4*val +
c];
65 int is_8bit = shift + depth <= 8;
71 int val = is_8bit ? *p :
73 val = (val >>
shift) & mask;
74 if (read_pal_component)
75 val = data[1][4 * val +
c];
85 int x,
int y,
int c,
int w)
89 int depth = comp.
depth;
94 int skip = x * step + comp.
offset;
96 int shift = 8 - depth - (skip & 7);
99 *p |= *src++ <<
shift;
109 if (shift + depth <= 8) {
112 *p |= (*src++ <<
shift);
130 #if FF_API_PLUS1_MINUS1
140 { 0, 1, 0, 0, 8, 0, 7, 1 },
141 { 1, 1, 0, 0, 8, 0, 7, 1 },
142 { 2, 1, 0, 0, 8, 0, 7, 1 },
152 { 0, 2, 0, 0, 8, 1, 7, 1 },
153 { 0, 4, 1, 0, 8, 3, 7, 2 },
154 { 0, 4, 3, 0, 8, 3, 7, 4 },
163 { 0, 2, 0, 0, 8, 1, 7, 1 },
164 { 0, 4, 3, 0, 8, 3, 7, 4 },
165 { 0, 4, 1, 0, 8, 3, 7, 2 },
174 { 0, 3, 0, 0, 8, 2, 7, 1 },
175 { 0, 3, 1, 0, 8, 2, 7, 2 },
176 { 0, 3, 2, 0, 8, 2, 7, 3 },
186 { 0, 3, 2, 0, 8, 2, 7, 3 },
187 { 0, 3, 1, 0, 8, 2, 7, 2 },
188 { 0, 3, 0, 0, 8, 2, 7, 1 },
198 { 0, 1, 0, 0, 8, 0, 7, 1 },
199 { 1, 1, 0, 0, 8, 0, 7, 1 },
200 { 2, 1, 0, 0, 8, 0, 7, 1 },
210 { 0, 1, 0, 0, 8, 0, 7, 1 },
211 { 1, 1, 0, 0, 8, 0, 7, 1 },
212 { 2, 1, 0, 0, 8, 0, 7, 1 },
222 { 0, 1, 0, 0, 8, 0, 7, 1 },
223 { 1, 1, 0, 0, 8, 0, 7, 1 },
224 { 2, 1, 0, 0, 8, 0, 7, 1 },
234 { 0, 1, 0, 0, 8, 0, 7, 1 },
235 { 1, 1, 0, 0, 8, 0, 7, 1 },
236 { 2, 1, 0, 0, 8, 0, 7, 1 },
246 { 0, 1, 0, 0, 8, 0, 7, 1 },
247 { 1, 1, 0, 0, 8, 0, 7, 1 },
248 { 2, 1, 0, 0, 8, 0, 7, 1 },
258 { 0, 1, 0, 0, 8, 0, 7, 1 },
269 { 0, 1, 0, 0, 1, 0, 0, 1 },
279 { 0, 1, 0, 7, 1, 0, 0, 1 },
289 { 0, 1, 0, 0, 8, 0, 7, 1 },
299 { 0, 1, 0, 0, 8, 0, 7, 1 },
300 { 1, 1, 0, 0, 8, 0, 7, 1 },
301 { 2, 1, 0, 0, 8, 0, 7, 1 },
311 { 0, 1, 0, 0, 8, 0, 7, 1 },
312 { 1, 1, 0, 0, 8, 0, 7, 1 },
313 { 2, 1, 0, 0, 8, 0, 7, 1 },
323 { 0, 1, 0, 0, 8, 0, 7, 1 },
324 { 1, 1, 0, 0, 8, 0, 7, 1 },
325 { 2, 1, 0, 0, 8, 0, 7, 1 },
351 { 0, 2, 1, 0, 8, 1, 7, 2 },
352 { 0, 4, 0, 0, 8, 3, 7, 1 },
353 { 0, 4, 2, 0, 8, 3, 7, 3 },
362 { 0, 4, 1, 0, 8, 3, 7, 2 },
363 { 0, 6, 0, 0, 8, 5, 7, 1 },
364 { 0, 6, 3, 0, 8, 5, 7, 4 },
373 { 0, 1, 0, 0, 3, 0, 2, 1 },
374 { 0, 1, 0, 3, 3, 0, 2, 1 },
375 { 0, 1, 0, 6, 2, 0, 1, 1 },
385 { 0, 4, 3, 0, 1, 3, 0, 4 },
386 { 0, 4, 1, 0, 2, 3, 1, 2 },
387 { 0, 4, 0, 0, 1, 3, 0, 1 },
397 { 0, 1, 0, 0, 1, 0, 0, 1 },
398 { 0, 1, 0, 1, 2, 0, 1, 1 },
399 { 0, 1, 0, 3, 1, 0, 0, 1 },
409 { 0, 1, 0, 6, 2, 0, 1, 1 },
410 { 0, 1, 0, 3, 3, 0, 2, 1 },
411 { 0, 1, 0, 0, 3, 0, 2, 1 },
421 { 0, 4, 0, 0, 1, 3, 0, 1 },
422 { 0, 4, 1, 0, 2, 3, 1, 2 },
423 { 0, 4, 3, 0, 1, 3, 0, 4 },
433 { 0, 1, 0, 3, 1, 0, 0, 1 },
434 { 0, 1, 0, 1, 2, 0, 1, 1 },
435 { 0, 1, 0, 0, 1, 0, 0, 1 },
445 { 0, 1, 0, 0, 8, 0, 7, 1 },
446 { 1, 2, 0, 0, 8, 1, 7, 1 },
447 { 1, 2, 1, 0, 8, 1, 7, 2 },
457 { 0, 1, 0, 0, 8, 0, 7, 1 },
458 { 1, 2, 1, 0, 8, 1, 7, 2 },
459 { 1, 2, 0, 0, 8, 1, 7, 1 },
469 { 0, 4, 1, 0, 8, 3, 7, 2 },
470 { 0, 4, 2, 0, 8, 3, 7, 3 },
471 { 0, 4, 3, 0, 8, 3, 7, 4 },
472 { 0, 4, 0, 0, 8, 3, 7, 1 },
482 { 0, 4, 0, 0, 8, 3, 7, 1 },
483 { 0, 4, 1, 0, 8, 3, 7, 2 },
484 { 0, 4, 2, 0, 8, 3, 7, 3 },
485 { 0, 4, 3, 0, 8, 3, 7, 4 },
495 { 0, 4, 3, 0, 8, 3, 7, 4 },
496 { 0, 4, 2, 0, 8, 3, 7, 3 },
497 { 0, 4, 1, 0, 8, 3, 7, 2 },
498 { 0, 4, 0, 0, 8, 3, 7, 1 },
508 { 0, 4, 2, 0, 8, 3, 7, 3 },
509 { 0, 4, 1, 0, 8, 3, 7, 2 },
510 { 0, 4, 0, 0, 8, 3, 7, 1 },
511 { 0, 4, 3, 0, 8, 3, 7, 4 },
521 { 0, 4, 1, 0, 8, 3, 7, 2 },
522 { 0, 4, 2, 0, 8, 3, 7, 3 },
523 { 0, 4, 3, 0, 8, 3, 7, 4 },
533 { 0, 4, 0, 0, 8, 3, 7, 1 },
534 { 0, 4, 1, 0, 8, 3, 7, 2 },
535 { 0, 4, 2, 0, 8, 3, 7, 3 },
545 { 0, 4, 3, 0, 8, 3, 7, 4 },
546 { 0, 4, 2, 0, 8, 3, 7, 3 },
547 { 0, 4, 1, 0, 8, 3, 7, 2 },
557 { 0, 4, 2, 0, 8, 3, 7, 3 },
558 { 0, 4, 1, 0, 8, 3, 7, 2 },
559 { 0, 4, 0, 0, 8, 3, 7, 1 },
569 { 0, 2, 0, 0, 9, 1, 8, 1 },
580 { 0, 2, 0, 0, 9, 1, 8, 1 },
590 { 0, 2, 0, 0, 10, 1, 9, 1 },
601 { 0, 2, 0, 0, 10, 1, 9, 1 },
611 { 0, 2, 0, 0, 12, 1, 11, 1 },
622 { 0, 2, 0, 0, 12, 1, 11, 1 },
632 { 0, 2, 0, 0, 16, 1, 15, 1 },
643 { 0, 2, 0, 0, 16, 1, 15, 1 },
653 { 0, 1, 0, 0, 8, 0, 7, 1 },
654 { 1, 1, 0, 0, 8, 0, 7, 1 },
655 { 2, 1, 0, 0, 8, 0, 7, 1 },
665 { 0, 1, 0, 0, 8, 0, 7, 1 },
666 { 1, 1, 0, 0, 8, 0, 7, 1 },
667 { 2, 1, 0, 0, 8, 0, 7, 1 },
672 .name =
"yuv440p10le",
677 { 0, 2, 0, 0, 10, 1, 9, 1 },
678 { 1, 2, 0, 0, 10, 1, 9, 1 },
679 { 2, 2, 0, 0, 10, 1, 9, 1 },
684 .name =
"yuv440p10be",
689 { 0, 2, 0, 0, 10, 1, 9, 1 },
690 { 1, 2, 0, 0, 10, 1, 9, 1 },
691 { 2, 2, 0, 0, 10, 1, 9, 1 },
696 .name =
"yuv440p12le",
701 { 0, 2, 0, 0, 12, 1, 11, 1 },
702 { 1, 2, 0, 0, 12, 1, 11, 1 },
703 { 2, 2, 0, 0, 12, 1, 11, 1 },
708 .name =
"yuv440p12be",
713 { 0, 2, 0, 0, 12, 1, 11, 1 },
714 { 1, 2, 0, 0, 12, 1, 11, 1 },
715 { 2, 2, 0, 0, 12, 1, 11, 1 },
725 { 0, 1, 0, 0, 8, 0, 7, 1 },
726 { 1, 1, 0, 0, 8, 0, 7, 1 },
727 { 2, 1, 0, 0, 8, 0, 7, 1 },
728 { 3, 1, 0, 0, 8, 0, 7, 1 },
738 { 0, 1, 0, 0, 8, 0, 7, 1 },
739 { 1, 1, 0, 0, 8, 0, 7, 1 },
740 { 2, 1, 0, 0, 8, 0, 7, 1 },
741 { 3, 1, 0, 0, 8, 0, 7, 1 },
751 { 0, 1, 0, 0, 8, 0, 7, 1 },
752 { 1, 1, 0, 0, 8, 0, 7, 1 },
753 { 2, 1, 0, 0, 8, 0, 7, 1 },
754 { 3, 1, 0, 0, 8, 0, 7, 1 },
759 .name =
"yuva420p9be",
764 { 0, 2, 0, 0, 9, 1, 8, 1 },
765 { 1, 2, 0, 0, 9, 1, 8, 1 },
766 { 2, 2, 0, 0, 9, 1, 8, 1 },
767 { 3, 2, 0, 0, 9, 1, 8, 1 },
772 .name =
"yuva420p9le",
777 { 0, 2, 0, 0, 9, 1, 8, 1 },
778 { 1, 2, 0, 0, 9, 1, 8, 1 },
779 { 2, 2, 0, 0, 9, 1, 8, 1 },
780 { 3, 2, 0, 0, 9, 1, 8, 1 },
785 .name =
"yuva422p9be",
790 { 0, 2, 0, 0, 9, 1, 8, 1 },
791 { 1, 2, 0, 0, 9, 1, 8, 1 },
792 { 2, 2, 0, 0, 9, 1, 8, 1 },
793 { 3, 2, 0, 0, 9, 1, 8, 1 },
798 .name =
"yuva422p9le",
803 { 0, 2, 0, 0, 9, 1, 8, 1 },
804 { 1, 2, 0, 0, 9, 1, 8, 1 },
805 { 2, 2, 0, 0, 9, 1, 8, 1 },
806 { 3, 2, 0, 0, 9, 1, 8, 1 },
811 .name =
"yuva444p9be",
816 { 0, 2, 0, 0, 9, 1, 8, 1 },
817 { 1, 2, 0, 0, 9, 1, 8, 1 },
818 { 2, 2, 0, 0, 9, 1, 8, 1 },
819 { 3, 2, 0, 0, 9, 1, 8, 1 },
824 .name =
"yuva444p9le",
829 { 0, 2, 0, 0, 9, 1, 8, 1 },
830 { 1, 2, 0, 0, 9, 1, 8, 1 },
831 { 2, 2, 0, 0, 9, 1, 8, 1 },
832 { 3, 2, 0, 0, 9, 1, 8, 1 },
837 .name =
"yuva420p10be",
842 { 0, 2, 0, 0, 10, 1, 9, 1 },
843 { 1, 2, 0, 0, 10, 1, 9, 1 },
844 { 2, 2, 0, 0, 10, 1, 9, 1 },
845 { 3, 2, 0, 0, 10, 1, 9, 1 },
850 .name =
"yuva420p10le",
855 { 0, 2, 0, 0, 10, 1, 9, 1 },
856 { 1, 2, 0, 0, 10, 1, 9, 1 },
857 { 2, 2, 0, 0, 10, 1, 9, 1 },
858 { 3, 2, 0, 0, 10, 1, 9, 1 },
863 .name =
"yuva422p10be",
868 { 0, 2, 0, 0, 10, 1, 9, 1 },
869 { 1, 2, 0, 0, 10, 1, 9, 1 },
870 { 2, 2, 0, 0, 10, 1, 9, 1 },
871 { 3, 2, 0, 0, 10, 1, 9, 1 },
876 .name =
"yuva422p10le",
881 { 0, 2, 0, 0, 10, 1, 9, 1 },
882 { 1, 2, 0, 0, 10, 1, 9, 1 },
883 { 2, 2, 0, 0, 10, 1, 9, 1 },
884 { 3, 2, 0, 0, 10, 1, 9, 1 },
889 .name =
"yuva444p10be",
894 { 0, 2, 0, 0, 10, 1, 9, 1 },
895 { 1, 2, 0, 0, 10, 1, 9, 1 },
896 { 2, 2, 0, 0, 10, 1, 9, 1 },
897 { 3, 2, 0, 0, 10, 1, 9, 1 },
902 .name =
"yuva444p10le",
907 { 0, 2, 0, 0, 10, 1, 9, 1 },
908 { 1, 2, 0, 0, 10, 1, 9, 1 },
909 { 2, 2, 0, 0, 10, 1, 9, 1 },
910 { 3, 2, 0, 0, 10, 1, 9, 1 },
915 .name =
"yuva420p16be",
920 { 0, 2, 0, 0, 16, 1, 15, 1 },
921 { 1, 2, 0, 0, 16, 1, 15, 1 },
922 { 2, 2, 0, 0, 16, 1, 15, 1 },
923 { 3, 2, 0, 0, 16, 1, 15, 1 },
928 .name =
"yuva420p16le",
933 { 0, 2, 0, 0, 16, 1, 15, 1 },
934 { 1, 2, 0, 0, 16, 1, 15, 1 },
935 { 2, 2, 0, 0, 16, 1, 15, 1 },
936 { 3, 2, 0, 0, 16, 1, 15, 1 },
941 .name =
"yuva422p16be",
946 { 0, 2, 0, 0, 16, 1, 15, 1 },
947 { 1, 2, 0, 0, 16, 1, 15, 1 },
948 { 2, 2, 0, 0, 16, 1, 15, 1 },
949 { 3, 2, 0, 0, 16, 1, 15, 1 },
954 .name =
"yuva422p16le",
959 { 0, 2, 0, 0, 16, 1, 15, 1 },
960 { 1, 2, 0, 0, 16, 1, 15, 1 },
961 { 2, 2, 0, 0, 16, 1, 15, 1 },
962 { 3, 2, 0, 0, 16, 1, 15, 1 },
967 .name =
"yuva444p16be",
972 { 0, 2, 0, 0, 16, 1, 15, 1 },
973 { 1, 2, 0, 0, 16, 1, 15, 1 },
974 { 2, 2, 0, 0, 16, 1, 15, 1 },
975 { 3, 2, 0, 0, 16, 1, 15, 1 },
980 .name =
"yuva444p16le",
985 { 0, 2, 0, 0, 16, 1, 15, 1 },
986 { 1, 2, 0, 0, 16, 1, 15, 1 },
987 { 2, 2, 0, 0, 16, 1, 15, 1 },
988 { 3, 2, 0, 0, 16, 1, 15, 1 },
994 .name =
"vdpau_h264",
1000 .name =
"vdpau_mpeg1",
1006 .name =
"vdpau_mpeg2",
1012 .name =
"vdpau_wmv3",
1018 .name =
"vdpau_vc1",
1024 .name =
"vdpau_mpeg4",
1036 { 0, 6, 0, 0, 16, 5, 15, 1 },
1037 { 0, 6, 2, 0, 16, 5, 15, 3 },
1038 { 0, 6, 4, 0, 16, 5, 15, 5 },
1048 { 0, 6, 0, 0, 16, 5, 15, 1 },
1049 { 0, 6, 2, 0, 16, 5, 15, 3 },
1050 { 0, 6, 4, 0, 16, 5, 15, 5 },
1060 { 0, 8, 0, 0, 16, 7, 15, 1 },
1061 { 0, 8, 2, 0, 16, 7, 15, 3 },
1062 { 0, 8, 4, 0, 16, 7, 15, 5 },
1063 { 0, 8, 6, 0, 16, 7, 15, 7 },
1073 { 0, 8, 0, 0, 16, 7, 15, 1 },
1074 { 0, 8, 2, 0, 16, 7, 15, 3 },
1075 { 0, 8, 4, 0, 16, 7, 15, 5 },
1076 { 0, 8, 6, 0, 16, 7, 15, 7 },
1086 { 0, 2, -1, 3, 5, 1, 4, 0 },
1087 { 0, 2, 0, 5, 6, 1, 5, 1 },
1088 { 0, 2, 0, 0, 5, 1, 4, 1 },
1098 { 0, 2, 1, 3, 5, 1, 4, 2 },
1099 { 0, 2, 0, 5, 6, 1, 5, 1 },
1100 { 0, 2, 0, 0, 5, 1, 4, 1 },
1110 { 0, 2, -1, 2, 5, 1, 4, 0 },
1111 { 0, 2, 0, 5, 5, 1, 4, 1 },
1112 { 0, 2, 0, 0, 5, 1, 4, 1 },
1122 { 0, 2, 1, 2, 5, 1, 4, 2 },
1123 { 0, 2, 0, 5, 5, 1, 4, 1 },
1124 { 0, 2, 0, 0, 5, 1, 4, 1 },
1134 { 0, 2, -1, 0, 4, 1, 3, 0 },
1135 { 0, 2, 0, 4, 4, 1, 3, 1 },
1136 { 0, 2, 0, 0, 4, 1, 3, 1 },
1146 { 0, 2, 1, 0, 4, 1, 3, 2 },
1147 { 0, 2, 0, 4, 4, 1, 3, 1 },
1148 { 0, 2, 0, 0, 4, 1, 3, 1 },
1158 { 0, 6, 4, 0, 16, 5, 15, 5 },
1159 { 0, 6, 2, 0, 16, 5, 15, 3 },
1160 { 0, 6, 0, 0, 16, 5, 15, 1 },
1170 { 0, 6, 4, 0, 16, 5, 15, 5 },
1171 { 0, 6, 2, 0, 16, 5, 15, 3 },
1172 { 0, 6, 0, 0, 16, 5, 15, 1 },
1182 { 0, 8, 4, 0, 16, 7, 15, 5 },
1183 { 0, 8, 2, 0, 16, 7, 15, 3 },
1184 { 0, 8, 0, 0, 16, 7, 15, 1 },
1185 { 0, 8, 6, 0, 16, 7, 15, 7 },
1195 { 0, 8, 4, 0, 16, 7, 15, 5 },
1196 { 0, 8, 2, 0, 16, 7, 15, 3 },
1197 { 0, 8, 0, 0, 16, 7, 15, 1 },
1198 { 0, 8, 6, 0, 16, 7, 15, 7 },
1208 { 0, 2, 0, 0, 5, 1, 4, 1 },
1209 { 0, 2, 0, 5, 6, 1, 5, 1 },
1210 { 0, 2, -1, 3, 5, 1, 4, 0 },
1220 { 0, 2, 0, 0, 5, 1, 4, 1 },
1221 { 0, 2, 0, 5, 6, 1, 5, 1 },
1222 { 0, 2, 1, 3, 5, 1, 4, 2 },
1232 { 0, 2, 0, 0, 5, 1, 4, 1 },
1233 { 0, 2, 0, 5, 5, 1, 4, 1 },
1234 { 0, 2, -1, 2, 5, 1, 4, 0 },
1244 { 0, 2, 0, 0, 5, 1, 4, 1 },
1245 { 0, 2, 0, 5, 5, 1, 4, 1 },
1246 { 0, 2, 1, 2, 5, 1, 4, 2 },
1256 { 0, 2, 0, 0, 4, 1, 3, 1 },
1257 { 0, 2, 0, 4, 4, 1, 3, 1 },
1258 { 0, 2, -1, 0, 4, 1, 3, 0 },
1268 { 0, 2, 0, 0, 4, 1, 3, 1 },
1269 { 0, 2, 0, 4, 4, 1, 3, 1 },
1270 { 0, 2, 1, 0, 4, 1, 3, 2 },
1276 .name =
"vaapi_moco",
1282 .name =
"vaapi_idct",
1288 .name =
"vaapi_vld",
1302 .name =
"yuv420p9le",
1307 { 0, 2, 0, 0, 9, 1, 8, 1 },
1308 { 1, 2, 0, 0, 9, 1, 8, 1 },
1309 { 2, 2, 0, 0, 9, 1, 8, 1 },
1314 .name =
"yuv420p9be",
1319 { 0, 2, 0, 0, 9, 1, 8, 1 },
1320 { 1, 2, 0, 0, 9, 1, 8, 1 },
1321 { 2, 2, 0, 0, 9, 1, 8, 1 },
1326 .name =
"yuv420p10le",
1331 { 0, 2, 0, 0, 10, 1, 9, 1 },
1332 { 1, 2, 0, 0, 10, 1, 9, 1 },
1333 { 2, 2, 0, 0, 10, 1, 9, 1 },
1338 .name =
"yuv420p10be",
1343 { 0, 2, 0, 0, 10, 1, 9, 1 },
1344 { 1, 2, 0, 0, 10, 1, 9, 1 },
1345 { 2, 2, 0, 0, 10, 1, 9, 1 },
1350 .name =
"yuv420p12le",
1355 { 0, 2, 0, 0, 12, 1, 11, 1 },
1356 { 1, 2, 0, 0, 12, 1, 11, 1 },
1357 { 2, 2, 0, 0, 12, 1, 11, 1 },
1362 .name =
"yuv420p12be",
1367 { 0, 2, 0, 0, 12, 1, 11, 1 },
1368 { 1, 2, 0, 0, 12, 1, 11, 1 },
1369 { 2, 2, 0, 0, 12, 1, 11, 1 },
1374 .name =
"yuv420p14le",
1379 { 0, 2, 0, 0, 14, 1, 13, 1 },
1380 { 1, 2, 0, 0, 14, 1, 13, 1 },
1381 { 2, 2, 0, 0, 14, 1, 13, 1 },
1386 .name =
"yuv420p14be",
1391 { 0, 2, 0, 0, 14, 1, 13, 1 },
1392 { 1, 2, 0, 0, 14, 1, 13, 1 },
1393 { 2, 2, 0, 0, 14, 1, 13, 1 },
1398 .name =
"yuv420p16le",
1403 { 0, 2, 0, 0, 16, 1, 15, 1 },
1404 { 1, 2, 0, 0, 16, 1, 15, 1 },
1405 { 2, 2, 0, 0, 16, 1, 15, 1 },
1410 .name =
"yuv420p16be",
1415 { 0, 2, 0, 0, 16, 1, 15, 1 },
1416 { 1, 2, 0, 0, 16, 1, 15, 1 },
1417 { 2, 2, 0, 0, 16, 1, 15, 1 },
1422 .name =
"yuv422p9le",
1427 { 0, 2, 0, 0, 9, 1, 8, 1 },
1428 { 1, 2, 0, 0, 9, 1, 8, 1 },
1429 { 2, 2, 0, 0, 9, 1, 8, 1 },
1434 .name =
"yuv422p9be",
1439 { 0, 2, 0, 0, 9, 1, 8, 1 },
1440 { 1, 2, 0, 0, 9, 1, 8, 1 },
1441 { 2, 2, 0, 0, 9, 1, 8, 1 },
1446 .name =
"yuv422p10le",
1451 { 0, 2, 0, 0, 10, 1, 9, 1 },
1452 { 1, 2, 0, 0, 10, 1, 9, 1 },
1453 { 2, 2, 0, 0, 10, 1, 9, 1 },
1458 .name =
"yuv422p10be",
1463 { 0, 2, 0, 0, 10, 1, 9, 1 },
1464 { 1, 2, 0, 0, 10, 1, 9, 1 },
1465 { 2, 2, 0, 0, 10, 1, 9, 1 },
1470 .name =
"yuv422p12le",
1475 { 0, 2, 0, 0, 12, 1, 11, 1 },
1476 { 1, 2, 0, 0, 12, 1, 11, 1 },
1477 { 2, 2, 0, 0, 12, 1, 11, 1 },
1482 .name =
"yuv422p12be",
1487 { 0, 2, 0, 0, 12, 1, 11, 1 },
1488 { 1, 2, 0, 0, 12, 1, 11, 1 },
1489 { 2, 2, 0, 0, 12, 1, 11, 1 },
1494 .name =
"yuv422p14le",
1499 { 0, 2, 0, 0, 14, 1, 13, 1 },
1500 { 1, 2, 0, 0, 14, 1, 13, 1 },
1501 { 2, 2, 0, 0, 14, 1, 13, 1 },
1506 .name =
"yuv422p14be",
1511 { 0, 2, 0, 0, 14, 1, 13, 1 },
1512 { 1, 2, 0, 0, 14, 1, 13, 1 },
1513 { 2, 2, 0, 0, 14, 1, 13, 1 },
1518 .name =
"yuv422p16le",
1523 { 0, 2, 0, 0, 16, 1, 15, 1 },
1524 { 1, 2, 0, 0, 16, 1, 15, 1 },
1525 { 2, 2, 0, 0, 16, 1, 15, 1 },
1530 .name =
"yuv422p16be",
1535 { 0, 2, 0, 0, 16, 1, 15, 1 },
1536 { 1, 2, 0, 0, 16, 1, 15, 1 },
1537 { 2, 2, 0, 0, 16, 1, 15, 1 },
1542 .name =
"yuv444p16le",
1547 { 0, 2, 0, 0, 16, 1, 15, 1 },
1548 { 1, 2, 0, 0, 16, 1, 15, 1 },
1549 { 2, 2, 0, 0, 16, 1, 15, 1 },
1554 .name =
"yuv444p16be",
1559 { 0, 2, 0, 0, 16, 1, 15, 1 },
1560 { 1, 2, 0, 0, 16, 1, 15, 1 },
1561 { 2, 2, 0, 0, 16, 1, 15, 1 },
1566 .name =
"yuv444p10le",
1571 { 0, 2, 0, 0, 10, 1, 9, 1 },
1572 { 1, 2, 0, 0, 10, 1, 9, 1 },
1573 { 2, 2, 0, 0, 10, 1, 9, 1 },
1578 .name =
"yuv444p10be",
1583 { 0, 2, 0, 0, 10, 1, 9, 1 },
1584 { 1, 2, 0, 0, 10, 1, 9, 1 },
1585 { 2, 2, 0, 0, 10, 1, 9, 1 },
1590 .name =
"yuv444p9le",
1595 { 0, 2, 0, 0, 9, 1, 8, 1 },
1596 { 1, 2, 0, 0, 9, 1, 8, 1 },
1597 { 2, 2, 0, 0, 9, 1, 8, 1 },
1602 .name =
"yuv444p9be",
1607 { 0, 2, 0, 0, 9, 1, 8, 1 },
1608 { 1, 2, 0, 0, 9, 1, 8, 1 },
1609 { 2, 2, 0, 0, 9, 1, 8, 1 },
1614 .name =
"yuv444p12le",
1619 { 0, 2, 0, 0, 12, 1, 11, 1 },
1620 { 1, 2, 0, 0, 12, 1, 11, 1 },
1621 { 2, 2, 0, 0, 12, 1, 11, 1 },
1626 .name =
"yuv444p12be",
1631 { 0, 2, 0, 0, 12, 1, 11, 1 },
1632 { 1, 2, 0, 0, 12, 1, 11, 1 },
1633 { 2, 2, 0, 0, 12, 1, 11, 1 },
1638 .name =
"yuv444p14le",
1643 { 0, 2, 0, 0, 14, 1, 13, 1 },
1644 { 1, 2, 0, 0, 14, 1, 13, 1 },
1645 { 2, 2, 0, 0, 14, 1, 13, 1 },
1650 .name =
"yuv444p14be",
1655 { 0, 2, 0, 0, 14, 1, 13, 1 },
1656 { 1, 2, 0, 0, 14, 1, 13, 1 },
1657 { 2, 2, 0, 0, 14, 1, 13, 1 },
1662 .name =
"d3d11va_vld",
1668 .name =
"dxva2_vld",
1683 { 0, 2, 0, 0, 8, 1, 7, 1 },
1684 { 0, 2, 1, 0, 8, 1, 7, 2 },
1693 { 0, 4, 0, 0, 16, 3, 15, 1 },
1694 { 0, 4, 2, 0, 16, 3, 15, 3 },
1702 { 0, 4, 0, 0, 16, 3, 15, 1 },
1703 { 0, 4, 2, 0, 16, 3, 15, 3 },
1708 .name =
"videotoolbox_vld",
1717 { 2, 1, 0, 0, 8, 0, 7, 1 },
1718 { 0, 1, 0, 0, 8, 0, 7, 1 },
1719 { 1, 1, 0, 0, 8, 0, 7, 1 },
1729 { 2, 2, 0, 0, 9, 1, 8, 1 },
1730 { 0, 2, 0, 0, 9, 1, 8, 1 },
1731 { 1, 2, 0, 0, 9, 1, 8, 1 },
1741 { 2, 2, 0, 0, 9, 1, 8, 1 },
1742 { 0, 2, 0, 0, 9, 1, 8, 1 },
1743 { 1, 2, 0, 0, 9, 1, 8, 1 },
1753 { 2, 2, 0, 0, 10, 1, 9, 1 },
1754 { 0, 2, 0, 0, 10, 1, 9, 1 },
1755 { 1, 2, 0, 0, 10, 1, 9, 1 },
1765 { 2, 2, 0, 0, 10, 1, 9, 1 },
1766 { 0, 2, 0, 0, 10, 1, 9, 1 },
1767 { 1, 2, 0, 0, 10, 1, 9, 1 },
1777 { 2, 2, 0, 0, 12, 1, 11, 1 },
1778 { 0, 2, 0, 0, 12, 1, 11, 1 },
1779 { 1, 2, 0, 0, 12, 1, 11, 1 },
1789 { 2, 2, 0, 0, 12, 1, 11, 1 },
1790 { 0, 2, 0, 0, 12, 1, 11, 1 },
1791 { 1, 2, 0, 0, 12, 1, 11, 1 },
1801 { 2, 2, 0, 0, 14, 1, 13, 1 },
1802 { 0, 2, 0, 0, 14, 1, 13, 1 },
1803 { 1, 2, 0, 0, 14, 1, 13, 1 },
1813 { 2, 2, 0, 0, 14, 1, 13, 1 },
1814 { 0, 2, 0, 0, 14, 1, 13, 1 },
1815 { 1, 2, 0, 0, 14, 1, 13, 1 },
1825 { 2, 2, 0, 0, 16, 1, 15, 1 },
1826 { 0, 2, 0, 0, 16, 1, 15, 1 },
1827 { 1, 2, 0, 0, 16, 1, 15, 1 },
1837 { 2, 2, 0, 0, 16, 1, 15, 1 },
1838 { 0, 2, 0, 0, 16, 1, 15, 1 },
1839 { 1, 2, 0, 0, 16, 1, 15, 1 },
1849 { 2, 1, 0, 0, 8, 0, 7, 1 },
1850 { 0, 1, 0, 0, 8, 0, 7, 1 },
1851 { 1, 1, 0, 0, 8, 0, 7, 1 },
1852 { 3, 1, 0, 0, 8, 0, 7, 1 },
1858 .name =
"gbrap16le",
1863 { 2, 2, 0, 0, 16, 1, 15, 1 },
1864 { 0, 2, 0, 0, 16, 1, 15, 1 },
1865 { 1, 2, 0, 0, 16, 1, 15, 1 },
1866 { 3, 2, 0, 0, 16, 1, 15, 1 },
1872 .name =
"gbrap16be",
1877 { 2, 2, 0, 0, 16, 1, 15, 1 },
1878 { 0, 2, 0, 0, 16, 1, 15, 1 },
1879 { 1, 2, 0, 0, 16, 1, 15, 1 },
1880 { 3, 2, 0, 0, 16, 1, 15, 1 },
1897 { 0, 6, 0, 4, 12, 5, 11, 1 },
1898 { 0, 6, 2, 4, 12, 5, 11, 3 },
1899 { 0, 6, 4, 4, 12, 5, 11, 5 },
1909 { 0, 6, 0, 4, 12, 5, 11, 1 },
1910 { 0, 6, 2, 4, 12, 5, 11, 3 },
1911 { 0, 6, 4, 4, 12, 5, 11, 5 },
1916 #define BAYER8_DESC_COMMON \
1917 .nb_components= 3, \
1918 .log2_chroma_w= 0, \
1919 .log2_chroma_h= 0, \
1926 #define BAYER16_DESC_COMMON \
1927 .nb_components= 3, \
1928 .log2_chroma_w= 0, \
1929 .log2_chroma_h= 0, \
1937 .name =
"bayer_bggr8",
1942 .name =
"bayer_bggr16le",
1947 .name =
"bayer_bggr16be",
1952 .name =
"bayer_rggb8",
1957 .name =
"bayer_rggb16le",
1962 .name =
"bayer_rggb16be",
1967 .name =
"bayer_gbrg8",
1972 .name =
"bayer_gbrg16le",
1977 .name =
"bayer_gbrg16be",
1982 .name =
"bayer_grbg8",
1987 .name =
"bayer_grbg16le",
1992 .name =
"bayer_grbg16be",
2002 { 0, 1, 0, 0, 8, 0, 7, 1 },
2003 { 1, 2, 0, 0, 8, 1, 7, 1 },
2004 { 1, 2, 1, 0, 8, 1, 7, 2 },
2014 { 0, 2, 0, 0, 10, 1, 9, 1 },
2015 { 1, 4, 0, 0, 10, 3, 9, 1 },
2016 { 1, 4, 2, 0, 10, 3, 9, 3 },
2026 { 0, 2, 0, 0, 10, 1, 9, 1 },
2027 { 1, 4, 0, 0, 10, 3, 9, 1 },
2028 { 1, 4, 2, 0, 10, 3, 9, 3 },
2041 .name =
"mediacodec",
2058 { 0, 8, 2, 0, 16, 7, 15, 3 },
2059 { 0, 8, 4, 0, 16, 7, 15, 5 },
2060 { 0, 8, 6, 0, 16, 7, 15, 7 },
2061 { 0, 8, 0, 0, 16, 7, 15, 1 },
2071 { 0, 8, 2, 0, 16, 7, 15, 3 },
2072 { 0, 8, 4, 0, 16, 7, 15, 5 },
2073 { 0, 8, 6, 0, 16, 7, 15, 7 },
2074 { 0, 8, 0, 0, 16, 7, 15, 1 },
2084 { 0, 2, 0, 6, 10, 1, 9, 1 },
2085 { 1, 4, 0, 6, 10, 3, 9, 1 },
2086 { 1, 4, 2, 6, 10, 3, 9, 3 },
2096 { 0, 2, 0, 6, 10, 1, 9, 1 },
2097 { 1, 4, 0, 6, 10, 3, 9, 1 },
2098 { 1, 4, 2, 6, 10, 3, 9, 3 },
2108 { 0, 2, 0, 0, 16, 1, 15, 1 },
2109 { 1, 4, 0, 0, 16, 3, 15, 1 },
2110 { 1, 4, 2, 0, 16, 3, 15, 3 },
2120 { 0, 2, 0, 0, 16, 1, 15, 1 },
2121 { 1, 4, 0, 0, 16, 3, 15, 1 },
2122 { 1, 4, 2, 0, 16, 3, 15, 3 },
2127 .name =
"gbrap12le",
2132 { 2, 2, 0, 0, 12, 1, 11, 1 },
2133 { 0, 2, 0, 0, 12, 1, 11, 1 },
2134 { 1, 2, 0, 0, 12, 1, 11, 1 },
2135 { 3, 2, 0, 0, 12, 1, 11, 1 },
2141 .name =
"gbrap12be",
2146 { 2, 2, 0, 0, 12, 1, 11, 1 },
2147 { 0, 2, 0, 0, 12, 1, 11, 1 },
2148 { 1, 2, 0, 0, 12, 1, 11, 1 },
2149 { 3, 2, 0, 0, 12, 1, 11, 1 },
2155 .name =
"gbrap10le",
2160 { 2, 2, 0, 0, 10, 1, 9, 1 },
2161 { 0, 2, 0, 0, 10, 1, 9, 1 },
2162 { 1, 2, 0, 0, 10, 1, 9, 1 },
2163 { 3, 2, 0, 0, 10, 1, 9, 1 },
2169 .name =
"gbrap10be",
2174 { 2, 2, 0, 0, 10, 1, 9, 1 },
2175 { 0, 2, 0, 0, 10, 1, 9, 1 },
2176 { 1, 2, 0, 0, 10, 1, 9, 1 },
2177 { 3, 2, 0, 0, 10, 1, 9, 1 },
2187 .name =
"gbrpf32be",
2192 { 2, 4, 0, 0, 32, 3, 31, 1 },
2193 { 0, 4, 0, 0, 32, 3, 31, 1 },
2194 { 1, 4, 0, 0, 32, 3, 31, 1 },
2200 .name =
"gbrpf32le",
2205 { 2, 4, 0, 0, 32, 3, 31, 1 },
2206 { 0, 4, 0, 0, 32, 3, 31, 1 },
2207 { 1, 4, 0, 0, 32, 3, 31, 1 },
2212 .name =
"gbrapf32be",
2217 { 2, 4, 0, 0, 32, 3, 31, 1 },
2218 { 0, 4, 0, 0, 32, 3, 31, 1 },
2219 { 1, 4, 0, 0, 32, 3, 31, 1 },
2220 { 3, 4, 0, 0, 32, 3, 31, 1 },
2227 .name =
"gbrapf32le",
2232 { 2, 4, 0, 0, 32, 3, 31, 1 },
2233 { 0, 4, 0, 0, 32, 3, 31, 1 },
2234 { 1, 4, 0, 0, 32, 3, 31, 1 },
2235 { 3, 4, 0, 0, 32, 3, 31, 1 },
2241 .name =
"drm_prime",
2245 #if FF_API_PLUS1_MINUS1
2327 if (av_pix_fmt_descriptors[pix_fmt].name &&
2328 (!strcmp(av_pix_fmt_descriptors[pix_fmt].name, name) ||
2329 av_match_name(name, av_pix_fmt_descriptors[pix_fmt].alias)))
2342 # define X_NE(be, le) be
2344 # define X_NE(be, le) le
2351 if (!strcmp(name,
"rgb32"))
2352 name =
X_NE(
"argb",
"bgra");
2353 else if (!strcmp(name,
"bgr32"))
2354 name =
X_NE(
"abgr",
"rgba");
2360 snprintf(name2,
sizeof(name2),
"%s%s", name,
X_NE(
"be",
"le"));
2377 int s = c == 1 || c == 2 ? 0 : log2_pixels;
2381 return bits >> log2_pixels;
2392 int s = c == 1 || c == 2 ? 0 : log2_pixels;
2395 for (c = 0; c < 4; c++)
2401 return bits >> log2_pixels;
2409 snprintf (buf, buf_size,
"name" " nb_components" " nb_bits");
2412 snprintf(buf, buf_size,
"%-11s %7d %10d", pixdesc->
name,
2423 return &av_pix_fmt_descriptors[
pix_fmt];
2429 return &av_pix_fmt_descriptors[0];
2430 while (prev - av_pix_fmt_descriptors <
FF_ARRAY_ELEMS(av_pix_fmt_descriptors) - 1) {
2440 if (desc < av_pix_fmt_descriptors ||
2441 desc >= av_pix_fmt_descriptors +
FF_ARRAY_ELEMS(av_pix_fmt_descriptors))
2448 int *h_shift,
int *v_shift)
2462 int i, planes[4] = { 0 }, ret = 0;
2479 uint8_t fill[4][8+6+3] = {{0}};
2480 uint8_t *
data[4] = {fill[0], fill[1], fill[2], fill[3]};
2481 int linesize[4] = {0,0,0,0};
2509 tmp[0] = tmp[1] = (1<<c->
depth) - 1;
2522 if (!desc || strlen(desc->
name) < 2)
2525 i = strlen(name) - 2;
2526 if (strcmp(name + i,
"be") && strcmp(name + i,
"le"))
2529 name[i] ^=
'b' ^
'l';
2534 #define FF_COLOR_NA -1
2535 #define FF_COLOR_RGB 0
2536 #define FF_COLOR_GRAY 1
2537 #define FF_COLOR_YUV 2
2538 #define FF_COLOR_YUV_JPEG 3
2539 #define FF_COLOR_XYZ 4
2541 #define pixdesc_has_alpha(pixdesc) \
2542 ((pixdesc)->nb_components == 2 || (pixdesc)->nb_components == 4 || (pixdesc)->flags & AV_PIX_FMT_FLAG_PAL)
2552 if(desc->
name && !strncmp(desc->
name,
"yuvj", 4))
2555 if(desc->
name && !strncmp(desc->
name,
"xyz", 3))
2577 *min = INT_MAX, *max = -INT_MAX;
2587 unsigned *lossp,
unsigned consider)
2591 int src_color, dst_color;
2592 int src_min_depth, src_max_depth, dst_min_depth, dst_max_depth;
2593 int ret, loss, i, nb_components;
2594 int score = INT_MAX - 1;
2596 if (!src_desc || !dst_desc)
2601 if (dst_pix_fmt == src_pix_fmt)
2610 if (dst_pix_fmt == src_pix_fmt)
2625 for (i = 0; i < nb_components; i++) {
2629 score -= 65536 >> depth_minus1;
2672 if (src_color != dst_color)
2676 if(loss & FF_LOSS_COLORSPACE)
2710 enum AVPixelFormat src_pix_fmt,
int has_alpha,
int *loss_ptr)
2713 int loss1, loss2, loss_mask;
2719 dst_pix_fmt = dst_pix_fmt2;
2720 }
else if (!desc2) {
2721 dst_pix_fmt = dst_pix_fmt1;
2723 loss_mask= loss_ptr?~*loss_ptr:~0;
2730 if (score1 == score2) {
2737 dst_pix_fmt = score1 < score2 ? dst_pix_fmt2 : dst_pix_fmt1;
#define AV_PIX_FMT_FLAG_PAL
Pixel format has a palette in data[1], values are indexes in this palette.
ITU-R BT2020 for 12-bit system.
also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
planar GBR 4:4:4:4 40bpp, little-endian
int plane
Which of the 4 planes contains the component.
HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_r...
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
const char const char void * val
planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
static enum AVPixelFormat pix_fmt
static int shift(int a, int b)
planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
MPEG-2/4 4:2:0, H.264 default for 4:2:0.
ptrdiff_t const GLvoid * data
"Linear transfer characteristics"
planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
8 bits gray, 8 bits alpha
packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is st...
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstr...
#define FF_LOSS_ALPHA
loss of alpha bits
int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
packed RGB 8:8:8, 24bpp, RGBRGB...
packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in ...
hardware decoding through Videotoolbox
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
#define FF_LOSS_CHROMA
loss of chroma (e.g.
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel used by the pixel format described by pixdesc.
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 ...
char * av_get_pix_fmt_string(char *buf, int buf_size, enum AVPixelFormat pix_fmt)
Print in buf the string corresponding to the pixel format with number pix_fmt, or a header if pix_fmt...
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples */
SMPTE ST 432-1 (2010) / P3 D65 / Display P3.
bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples */
packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is st...
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined ...
bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian */
HW decoding through VA API, Picture.data[3] contains a VASurfaceID.
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
static const char *const chroma_location_names[]
packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
planar GBR 4:4:4 36bpp, little-endian
SMPTE ST 431-2 (2011) / DCI P3.
The following 12 formats have the disadvantage of needing 1 format for each bit depth.
packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined
packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined
bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples */
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_WB24 unsigned int_TMPL AV_RB16
Y , 12bpp, little-endian.
enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
Utility function to swap the endianness of a pixel format.
planar GBR 4:4:4 36bpp, big-endian
planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_RL16
order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB)
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
AVColorTransferCharacteristic
Color Transfer Characteristic.
packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in ...
functionally identical to above
const char * av_color_space_name(enum AVColorSpace space)
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian ...
#define av_assert0(cond)
assert() equivalent, that is always enabled.
planar GBRA 4:4:4:4 64bpp, big-endian
planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
AVComponentDescriptor comp[4]
Parameters that describe how pixels are packed.
#define AV_PIX_FMT_FLAG_ALPHA
The pixel format has an alpha channel.
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
#define BAYER16_DESC_COMMON
packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined
8 bits with AV_PIX_FMT_RGB32 palette
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as lit...
int av_color_range_from_name(const char *name)
AVColorSpace
YUV colorspace type.
bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian */
const char * av_color_range_name(enum AVColorRange range)
#define AV_PIX_FMT_FLAG_FLOAT
The pixel format contains IEEE-754 floating point values.
bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian */
Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16.
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined ...
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesize[4], const AVPixFmtDescriptor *desc, int x, int y, int c, int w)
Write the values from src to the pixel format component c of an image line.
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
planar GBR 4:4:4 48bpp, big-endian
planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range...
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstr...
WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstrea...
Y , 10bpp, little-endian.
AVColorRange
MPEG vs JPEG YUV range.
planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
AVColorPrimaries
Chromaticity coordinates of the source primaries.
bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian */
int av_color_transfer_from_name(const char *name)
planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
planar GBR 4:4:4 27bpp, big-endian
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
const char * av_chroma_location_name(enum AVChromaLocation location)
also FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
16 bits gray, 16 bits alpha (big-endian)
ITU-R BT1361 Extended Colour Gamut.
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
static const uint16_t mask[17]
like NV12, with 16bpp per component, big-endian
planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
#define AV_PIX_FMT_FLAG_RGB
The pixel format contains RGB-like data (as opposed to YUV/grayscale).
static const char *const color_space_names[]
int av_chroma_location_from_name(const char *name)
int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
Utility function to access log2_chroma_w log2_chroma_h from the pixel format AVPixFmtDescriptor.
packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel for the pixel format described by pixdesc, including any padding ...
#define FF_LOSS_DEPTH
loss due to color depth change
planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (firs...
also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
#define AV_PIX_FMT_FLAG_HWACCEL
Pixel format is an HW accelerated format.
simple assert() macros that are a bit more flexible than ISO C assert().
planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
XVideo Motion Acceleration via common packet passing.
like NV12, with 16bpp per component, little-endian
SMPTE ST 428-1 (CIE 1931 XYZ)
int av_match_name(const char *name, const char *names)
Match instances of a name in a comma-separated list of names.
planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian
Libavutil version macros.
HW acceleration through VDA, data[3] contains a CVPixelBufferRef.
planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
size_t av_strlcpy(char *dst, const char *src, size_t size)
Copy the string src to dst, but no more than size - 1 bytes, and null-terminate dst.
packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as lit...
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
const char * av_color_primaries_name(enum AVColorPrimaries primaries)
planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
static const char *const color_transfer_names[]
common internal API header
uint64_t flags
Combination of AV_PIX_FMT_FLAG_...
as above, but U and V bytes are swapped
planar GBR 4:4:4:4 48bpp, big-endian
enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc)
uint8_t nb_components
The number of components each pixel has, (1-4)
SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems.
#define BAYER8_DESC_COMMON
planar GBR 4:4:4:4 40bpp, big-endian
IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian.
packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
colour filters using Illuminant C
#define FF_COLOR_YUV_JPEG
YUV color space.
ITU-R BT2020 non-constant luminance system.
ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2.
#define AV_PIX_FMT_FLAG_PSEUDOPAL
The pixel format is "pseudo-paletted".
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb
planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian
packed RGB 8:8:8, 24bpp, BGRBGR...
planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big...
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian ...
like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian
static int get_color_type(const AVPixFmtDescriptor *desc)
#define pixdesc_has_alpha(pixdesc)
#define AV_PIX_FMT_FLAG_BAYER
The pixel format is following a Bayer pattern.
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big...
HW acceleration through CUDA.
packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
#define FF_ARRAY_ELEMS(a)
the normal 2^n-1 "JPEG" YUV ranges
HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state str...
static void comp(unsigned char *dst, ptrdiff_t dst_stride, unsigned char *src, ptrdiff_t src_stride, int add)
planar GBR 4:4:4:4 48bpp, little-endian
packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
functionally identical to above
planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
Chromaticity-derived constant luminance system.
bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian */
planar GBR 4:4:4 30bpp, big-endian
int av_color_primaries_from_name(const char *name)
bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian */
planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
static int get_pix_fmt_score(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, unsigned *lossp, unsigned consider)
#define FF_COLOR_YUV
YUV color space.
packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
planar GBR 4:4:4 42bpp, little-endian
MPEG-4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstr...
H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstre...
static FF_DISABLE_DEPRECATION_WARNINGS const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB]
Chromaticity-derived non-constant luminance system.
planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian.
HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface.
static enum AVPixelFormat get_pix_fmt_internal(const char *name)
DRM-managed buffers exposed through PRIME buffer sharing.
"Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)"
planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
int av_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, int has_alpha)
Compute what kind of losses will occur when converting from one specific pixel format to another...
HW acceleration through QSV, data[3] contains a pointer to the mfxFrameSurface1 structure.
packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined
planar GBR 4:4:4 42bpp, big-endian
static int get_pix_fmt_depth(int *min, int *max, enum AVPixelFormat pix_fmt)
planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian
packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined ...
bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian */
#define AV_PIX_FMT_FLAG_BITSTREAM
All values of a component are bit-wise packed end to end.
HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer. ...
int shift
Number of least significant bits that must be shifted away to get the value.
void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4], const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component)
Read a line from an image, and write the values of the pixel format component c to dst...
int offset
Number of elements before the component of the first pixel.
hardware decoding through MediaCodec
planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined
bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian */
#define FF_COLOR_RGB
RGB color space.
packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
Hardware surfaces for Direct3D11.
the normal 219*2^(n-8) "MPEG" YUV ranges
static FF_ENABLE_DEPRECATION_WARNINGS const char *const color_range_names[]
ITU-R BT2020 constant luminance system.
VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstrea...
#define FF_LOSS_COLORSPACE
loss due to color space conversion
hardware decoding through VDA
Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb...
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
IEC 61966-2-1 (sRGB or sYCC)
#define FF_DISABLE_DEPRECATION_WARNINGS
common internal and external API header
Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb...
planar GBRA 4:4:4:4 32bpp
IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian.
planar GBR 4:4:4 27bpp, little-endian
const char * av_color_transfer_name(enum AVColorTransferCharacteristic transfer)
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big...
planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples */
packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb)
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
static const char *const color_primaries_names[AVCOL_PRI_NB]
enum AVPixelFormat av_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
Compute what kind of losses will occur when converting from one specific pixel format to another...
planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
#define AV_PIX_FMT_FLAG_BE
Pixel format is big-endian.
ARIB STD-B67, known as "Hybrid log-gamma".
#define FF_LOSS_RESOLUTION
loss due to resolution change
IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian.
packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as lit...
packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
#define FF_ENABLE_DEPRECATION_WARNINGS
planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
Y , 16bpp, little-endian.
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor ...
16 bits gray, 16 bits alpha (little-endian)
planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
ITU-R BT2020 for 10-bit system.
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined
number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of...
planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
#define FF_LOSS_COLORQUANT
loss due to color quantization
AVChromaLocation
Location of chroma samples.
HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView p...
planar GBR 4:4:4 48bpp, little-endian
void ff_check_pixfmt_descriptors(void)
MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0.
packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined ...
enum AVPixelFormat av_get_pix_fmt(const char *name)
Return the pixel format corresponding to name.
const char * av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
Return the short name for a pixel format, NULL in case pix_fmt is unknown.
planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian
int depth
Number of bits in the component.
interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian ...
HW acceleration though MMAL, data[3] contains a pointer to the MMAL_BUFFER_HEADER_T structure...
planar GBRA 4:4:4:4 64bpp, little-endian
packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined
packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
int av_color_space_from_name(const char *name)
AVPixelFormat
Pixel format.
#define AV_PIX_FMT_FLAG_PLANAR
At least one pixel component is not in the first data plane.
planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
planar GBR 4:4:4 30bpp, little-endian
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
int step
Number of elements between 2 horizontally consecutive pixels.
packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
const AVPixFmtDescriptor * av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
Iterate over all pixel format descriptors known to libavutil.
"Logarithmic transfer characteristic (100:1 range)"
#define FF_COLOR_GRAY
gray color space
planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian