37 int x,
int y,
int c,
int w,
38 int read_pal_component,
42 int plane =
comp.plane;
43 int depth =
comp.depth;
44 unsigned mask = (1ULL << depth) - 1;
48 uint16_t *dst16 = dst;
49 uint32_t *dst32 = dst;
53 const uint8_t *p =
data[plane] + y * linesize[plane] + (skip >> 3);
54 int shift = 8 - depth - (skip & 7);
58 if (read_pal_component)
63 if (dst_element_size == 4) *dst32++ =
val;
67 const uint8_t *p =
data[plane] + y * linesize[plane] +
69 int is_8bit =
shift + depth <= 8;
70 int is_16bit=
shift + depth <=16;
77 if (is_8bit)
val = *p;
81 if (read_pal_component)
84 if (dst_element_size == 4) *dst32++ =
val;
93 int x,
int y,
int c,
int w,
94 int read_pal_component)
104 int x,
int y,
int c,
int w,
int src_element_size)
107 int plane =
comp.plane;
108 int depth =
comp.depth;
111 const uint32_t *src32 =
src;
112 const uint16_t *src16 =
src;
116 uint8_t *p =
data[plane] + y * linesize[plane] + (skip >> 3);
117 int shift = 8 - depth - (skip & 7);
120 *p |= (src_element_size == 4 ? *src32++ : *src16++) <<
shift;
130 if (
shift + depth <= 8) {
133 *p |= ((src_element_size == 4 ? *src32++ : *src16++) <<
shift);
138 unsigned s = (src_element_size == 4 ? *src32++ : *src16++);
139 if (
shift + depth <= 16) {
165 int x,
int y,
int c,
int w)
170 #if FF_API_PLUS1_MINUS1
180 { 0, 1, 0, 0, 8, 0, 7, 1 },
181 { 1, 1, 0, 0, 8, 0, 7, 1 },
182 { 2, 1, 0, 0, 8, 0, 7, 1 },
192 { 0, 2, 0, 0, 8, 1, 7, 1 },
193 { 0, 4, 1, 0, 8, 3, 7, 2 },
194 { 0, 4, 3, 0, 8, 3, 7, 4 },
203 { 0, 2, 0, 0, 8, 1, 7, 1 },
204 { 0, 4, 3, 0, 8, 3, 7, 4 },
205 { 0, 4, 1, 0, 8, 3, 7, 2 },
214 { 0, 4, 0, 6, 10, 3, 9, 1 },
215 { 0, 8, 2, 6, 10, 7, 9, 3 },
216 { 0, 8, 6, 6, 10, 7, 9, 7 },
225 { 0, 4, 0, 6, 10, 3, 9, 1 },
226 { 0, 8, 2, 6, 10, 7, 9, 3 },
227 { 0, 8, 6, 6, 10, 7, 9, 7 },
237 { 0, 3, 0, 0, 8, 2, 7, 1 },
238 { 0, 3, 1, 0, 8, 2, 7, 2 },
239 { 0, 3, 2, 0, 8, 2, 7, 3 },
249 { 0, 3, 2, 0, 8, 2, 7, 3 },
250 { 0, 3, 1, 0, 8, 2, 7, 2 },
251 { 0, 3, 0, 0, 8, 2, 7, 1 },
261 { 0, 4, 2, 4, 10, 3, 9, 2 },
262 { 0, 4, 1, 2, 10, 3, 9, 3 },
263 { 0, 4, 0, 0, 10, 3, 9, 4 },
273 { 0, 4, 0, 4, 10, 3, 9, 2 },
274 { 0, 4, 1, 2, 10, 3, 9, 3 },
275 { 0, 4, 2, 0, 10, 3, 9, 4 },
285 { 0, 1, 0, 0, 8, 0, 7, 1 },
286 { 1, 1, 0, 0, 8, 0, 7, 1 },
287 { 2, 1, 0, 0, 8, 0, 7, 1 },
297 { 0, 1, 0, 0, 8, 0, 7, 1 },
298 { 1, 1, 0, 0, 8, 0, 7, 1 },
299 { 2, 1, 0, 0, 8, 0, 7, 1 },
309 { 0, 1, 0, 0, 8, 0, 7, 1 },
310 { 1, 1, 0, 0, 8, 0, 7, 1 },
311 { 2, 1, 0, 0, 8, 0, 7, 1 },
321 { 0, 1, 0, 0, 8, 0, 7, 1 },
322 { 1, 1, 0, 0, 8, 0, 7, 1 },
323 { 2, 1, 0, 0, 8, 0, 7, 1 },
333 { 0, 1, 0, 0, 8, 0, 7, 1 },
334 { 1, 1, 0, 0, 8, 0, 7, 1 },
335 { 2, 1, 0, 0, 8, 0, 7, 1 },
345 { 0, 1, 0, 0, 8, 0, 7, 1 },
356 { 0, 1, 0, 0, 1, 0, 0, 1 },
366 { 0, 1, 0, 7, 1, 0, 0, 1 },
376 { 0, 1, 0, 0, 8, 0, 7, 1 },
386 { 0, 1, 0, 0, 8, 0, 7, 1 },
387 { 1, 1, 0, 0, 8, 0, 7, 1 },
388 { 2, 1, 0, 0, 8, 0, 7, 1 },
398 { 0, 1, 0, 0, 8, 0, 7, 1 },
399 { 1, 1, 0, 0, 8, 0, 7, 1 },
400 { 2, 1, 0, 0, 8, 0, 7, 1 },
410 { 0, 1, 0, 0, 8, 0, 7, 1 },
411 { 1, 1, 0, 0, 8, 0, 7, 1 },
412 { 2, 1, 0, 0, 8, 0, 7, 1 },
426 { 0, 2, 1, 0, 8, 1, 7, 2 },
427 { 0, 4, 0, 0, 8, 3, 7, 1 },
428 { 0, 4, 2, 0, 8, 3, 7, 3 },
437 { 0, 4, 1, 0, 8, 3, 7, 2 },
438 { 0, 6, 0, 0, 8, 5, 7, 1 },
439 { 0, 6, 3, 0, 8, 5, 7, 4 },
448 { 0, 1, 0, 0, 3, 0, 2, 1 },
449 { 0, 1, 0, 3, 3, 0, 2, 1 },
450 { 0, 1, 0, 6, 2, 0, 1, 1 },
460 { 0, 4, 3, 0, 1, 3, 0, 4 },
461 { 0, 4, 1, 0, 2, 3, 1, 2 },
462 { 0, 4, 0, 0, 1, 3, 0, 1 },
472 { 0, 1, 0, 0, 1, 0, 0, 1 },
473 { 0, 1, 0, 1, 2, 0, 1, 1 },
474 { 0, 1, 0, 3, 1, 0, 0, 1 },
484 { 0, 1, 0, 6, 2, 0, 1, 1 },
485 { 0, 1, 0, 3, 3, 0, 2, 1 },
486 { 0, 1, 0, 0, 3, 0, 2, 1 },
496 { 0, 4, 0, 0, 1, 3, 0, 1 },
497 { 0, 4, 1, 0, 2, 3, 1, 2 },
498 { 0, 4, 3, 0, 1, 3, 0, 4 },
508 { 0, 1, 0, 3, 1, 0, 0, 1 },
509 { 0, 1, 0, 1, 2, 0, 1, 1 },
510 { 0, 1, 0, 0, 1, 0, 0, 1 },
520 { 0, 1, 0, 0, 8, 0, 7, 1 },
521 { 1, 2, 0, 0, 8, 1, 7, 1 },
522 { 1, 2, 1, 0, 8, 1, 7, 2 },
532 { 0, 1, 0, 0, 8, 0, 7, 1 },
533 { 1, 2, 1, 0, 8, 1, 7, 2 },
534 { 1, 2, 0, 0, 8, 1, 7, 1 },
544 { 0, 4, 1, 0, 8, 3, 7, 2 },
545 { 0, 4, 2, 0, 8, 3, 7, 3 },
546 { 0, 4, 3, 0, 8, 3, 7, 4 },
547 { 0, 4, 0, 0, 8, 3, 7, 1 },
557 { 0, 4, 0, 0, 8, 3, 7, 1 },
558 { 0, 4, 1, 0, 8, 3, 7, 2 },
559 { 0, 4, 2, 0, 8, 3, 7, 3 },
560 { 0, 4, 3, 0, 8, 3, 7, 4 },
570 { 0, 4, 3, 0, 8, 3, 7, 4 },
571 { 0, 4, 2, 0, 8, 3, 7, 3 },
572 { 0, 4, 1, 0, 8, 3, 7, 2 },
573 { 0, 4, 0, 0, 8, 3, 7, 1 },
583 { 0, 4, 2, 0, 8, 3, 7, 3 },
584 { 0, 4, 1, 0, 8, 3, 7, 2 },
585 { 0, 4, 0, 0, 8, 3, 7, 1 },
586 { 0, 4, 3, 0, 8, 3, 7, 4 },
596 { 0, 4, 1, 0, 8, 3, 7, 2 },
597 { 0, 4, 2, 0, 8, 3, 7, 3 },
598 { 0, 4, 3, 0, 8, 3, 7, 4 },
608 { 0, 4, 0, 0, 8, 3, 7, 1 },
609 { 0, 4, 1, 0, 8, 3, 7, 2 },
610 { 0, 4, 2, 0, 8, 3, 7, 3 },
620 { 0, 4, 3, 0, 8, 3, 7, 4 },
621 { 0, 4, 2, 0, 8, 3, 7, 3 },
622 { 0, 4, 1, 0, 8, 3, 7, 2 },
632 { 0, 4, 2, 0, 8, 3, 7, 3 },
633 { 0, 4, 1, 0, 8, 3, 7, 2 },
634 { 0, 4, 0, 0, 8, 3, 7, 1 },
644 { 0, 2, 0, 0, 9, 1, 8, 1 },
655 { 0, 2, 0, 0, 9, 1, 8, 1 },
665 { 0, 2, 0, 0, 10, 1, 9, 1 },
676 { 0, 2, 0, 0, 10, 1, 9, 1 },
686 { 0, 2, 0, 0, 12, 1, 11, 1 },
697 { 0, 2, 0, 0, 12, 1, 11, 1 },
707 { 0, 2, 0, 0, 14, 1, 13, 1 },
718 { 0, 2, 0, 0, 14, 1, 13, 1 },
728 { 0, 2, 0, 0, 16, 1, 15, 1 },
739 { 0, 2, 0, 0, 16, 1, 15, 1 },
749 { 0, 1, 0, 0, 8, 0, 7, 1 },
750 { 1, 1, 0, 0, 8, 0, 7, 1 },
751 { 2, 1, 0, 0, 8, 0, 7, 1 },
761 { 0, 1, 0, 0, 8, 0, 7, 1 },
762 { 1, 1, 0, 0, 8, 0, 7, 1 },
763 { 2, 1, 0, 0, 8, 0, 7, 1 },
768 .name =
"yuv440p10le",
773 { 0, 2, 0, 0, 10, 1, 9, 1 },
774 { 1, 2, 0, 0, 10, 1, 9, 1 },
775 { 2, 2, 0, 0, 10, 1, 9, 1 },
780 .name =
"yuv440p10be",
785 { 0, 2, 0, 0, 10, 1, 9, 1 },
786 { 1, 2, 0, 0, 10, 1, 9, 1 },
787 { 2, 2, 0, 0, 10, 1, 9, 1 },
792 .name =
"yuv440p12le",
797 { 0, 2, 0, 0, 12, 1, 11, 1 },
798 { 1, 2, 0, 0, 12, 1, 11, 1 },
799 { 2, 2, 0, 0, 12, 1, 11, 1 },
804 .name =
"yuv440p12be",
809 { 0, 2, 0, 0, 12, 1, 11, 1 },
810 { 1, 2, 0, 0, 12, 1, 11, 1 },
811 { 2, 2, 0, 0, 12, 1, 11, 1 },
821 { 0, 1, 0, 0, 8, 0, 7, 1 },
822 { 1, 1, 0, 0, 8, 0, 7, 1 },
823 { 2, 1, 0, 0, 8, 0, 7, 1 },
824 { 3, 1, 0, 0, 8, 0, 7, 1 },
834 { 0, 1, 0, 0, 8, 0, 7, 1 },
835 { 1, 1, 0, 0, 8, 0, 7, 1 },
836 { 2, 1, 0, 0, 8, 0, 7, 1 },
837 { 3, 1, 0, 0, 8, 0, 7, 1 },
847 { 0, 1, 0, 0, 8, 0, 7, 1 },
848 { 1, 1, 0, 0, 8, 0, 7, 1 },
849 { 2, 1, 0, 0, 8, 0, 7, 1 },
850 { 3, 1, 0, 0, 8, 0, 7, 1 },
855 .name =
"yuva420p9be",
860 { 0, 2, 0, 0, 9, 1, 8, 1 },
861 { 1, 2, 0, 0, 9, 1, 8, 1 },
862 { 2, 2, 0, 0, 9, 1, 8, 1 },
863 { 3, 2, 0, 0, 9, 1, 8, 1 },
868 .name =
"yuva420p9le",
873 { 0, 2, 0, 0, 9, 1, 8, 1 },
874 { 1, 2, 0, 0, 9, 1, 8, 1 },
875 { 2, 2, 0, 0, 9, 1, 8, 1 },
876 { 3, 2, 0, 0, 9, 1, 8, 1 },
881 .name =
"yuva422p9be",
886 { 0, 2, 0, 0, 9, 1, 8, 1 },
887 { 1, 2, 0, 0, 9, 1, 8, 1 },
888 { 2, 2, 0, 0, 9, 1, 8, 1 },
889 { 3, 2, 0, 0, 9, 1, 8, 1 },
894 .name =
"yuva422p9le",
899 { 0, 2, 0, 0, 9, 1, 8, 1 },
900 { 1, 2, 0, 0, 9, 1, 8, 1 },
901 { 2, 2, 0, 0, 9, 1, 8, 1 },
902 { 3, 2, 0, 0, 9, 1, 8, 1 },
907 .name =
"yuva444p9be",
912 { 0, 2, 0, 0, 9, 1, 8, 1 },
913 { 1, 2, 0, 0, 9, 1, 8, 1 },
914 { 2, 2, 0, 0, 9, 1, 8, 1 },
915 { 3, 2, 0, 0, 9, 1, 8, 1 },
920 .name =
"yuva444p9le",
925 { 0, 2, 0, 0, 9, 1, 8, 1 },
926 { 1, 2, 0, 0, 9, 1, 8, 1 },
927 { 2, 2, 0, 0, 9, 1, 8, 1 },
928 { 3, 2, 0, 0, 9, 1, 8, 1 },
933 .name =
"yuva420p10be",
938 { 0, 2, 0, 0, 10, 1, 9, 1 },
939 { 1, 2, 0, 0, 10, 1, 9, 1 },
940 { 2, 2, 0, 0, 10, 1, 9, 1 },
941 { 3, 2, 0, 0, 10, 1, 9, 1 },
946 .name =
"yuva420p10le",
951 { 0, 2, 0, 0, 10, 1, 9, 1 },
952 { 1, 2, 0, 0, 10, 1, 9, 1 },
953 { 2, 2, 0, 0, 10, 1, 9, 1 },
954 { 3, 2, 0, 0, 10, 1, 9, 1 },
959 .name =
"yuva422p10be",
964 { 0, 2, 0, 0, 10, 1, 9, 1 },
965 { 1, 2, 0, 0, 10, 1, 9, 1 },
966 { 2, 2, 0, 0, 10, 1, 9, 1 },
967 { 3, 2, 0, 0, 10, 1, 9, 1 },
972 .name =
"yuva422p10le",
977 { 0, 2, 0, 0, 10, 1, 9, 1 },
978 { 1, 2, 0, 0, 10, 1, 9, 1 },
979 { 2, 2, 0, 0, 10, 1, 9, 1 },
980 { 3, 2, 0, 0, 10, 1, 9, 1 },
985 .name =
"yuva444p10be",
990 { 0, 2, 0, 0, 10, 1, 9, 1 },
991 { 1, 2, 0, 0, 10, 1, 9, 1 },
992 { 2, 2, 0, 0, 10, 1, 9, 1 },
993 { 3, 2, 0, 0, 10, 1, 9, 1 },
998 .name =
"yuva444p10le",
1003 { 0, 2, 0, 0, 10, 1, 9, 1 },
1004 { 1, 2, 0, 0, 10, 1, 9, 1 },
1005 { 2, 2, 0, 0, 10, 1, 9, 1 },
1006 { 3, 2, 0, 0, 10, 1, 9, 1 },
1011 .name =
"yuva420p16be",
1016 { 0, 2, 0, 0, 16, 1, 15, 1 },
1017 { 1, 2, 0, 0, 16, 1, 15, 1 },
1018 { 2, 2, 0, 0, 16, 1, 15, 1 },
1019 { 3, 2, 0, 0, 16, 1, 15, 1 },
1024 .name =
"yuva420p16le",
1029 { 0, 2, 0, 0, 16, 1, 15, 1 },
1030 { 1, 2, 0, 0, 16, 1, 15, 1 },
1031 { 2, 2, 0, 0, 16, 1, 15, 1 },
1032 { 3, 2, 0, 0, 16, 1, 15, 1 },
1037 .name =
"yuva422p16be",
1042 { 0, 2, 0, 0, 16, 1, 15, 1 },
1043 { 1, 2, 0, 0, 16, 1, 15, 1 },
1044 { 2, 2, 0, 0, 16, 1, 15, 1 },
1045 { 3, 2, 0, 0, 16, 1, 15, 1 },
1050 .name =
"yuva422p16le",
1055 { 0, 2, 0, 0, 16, 1, 15, 1 },
1056 { 1, 2, 0, 0, 16, 1, 15, 1 },
1057 { 2, 2, 0, 0, 16, 1, 15, 1 },
1058 { 3, 2, 0, 0, 16, 1, 15, 1 },
1063 .name =
"yuva444p16be",
1068 { 0, 2, 0, 0, 16, 1, 15, 1 },
1069 { 1, 2, 0, 0, 16, 1, 15, 1 },
1070 { 2, 2, 0, 0, 16, 1, 15, 1 },
1071 { 3, 2, 0, 0, 16, 1, 15, 1 },
1076 .name =
"yuva444p16le",
1081 { 0, 2, 0, 0, 16, 1, 15, 1 },
1082 { 1, 2, 0, 0, 16, 1, 15, 1 },
1083 { 2, 2, 0, 0, 16, 1, 15, 1 },
1084 { 3, 2, 0, 0, 16, 1, 15, 1 },
1094 { 0, 6, 0, 0, 16, 5, 15, 1 },
1095 { 0, 6, 2, 0, 16, 5, 15, 3 },
1096 { 0, 6, 4, 0, 16, 5, 15, 5 },
1106 { 0, 6, 0, 0, 16, 5, 15, 1 },
1107 { 0, 6, 2, 0, 16, 5, 15, 3 },
1108 { 0, 6, 4, 0, 16, 5, 15, 5 },
1118 { 0, 8, 0, 0, 16, 7, 15, 1 },
1119 { 0, 8, 2, 0, 16, 7, 15, 3 },
1120 { 0, 8, 4, 0, 16, 7, 15, 5 },
1121 { 0, 8, 6, 0, 16, 7, 15, 7 },
1131 { 0, 8, 0, 0, 16, 7, 15, 1 },
1132 { 0, 8, 2, 0, 16, 7, 15, 3 },
1133 { 0, 8, 4, 0, 16, 7, 15, 5 },
1134 { 0, 8, 6, 0, 16, 7, 15, 7 },
1144 { 0, 2, -1, 3, 5, 1, 4, 0 },
1145 { 0, 2, 0, 5, 6, 1, 5, 1 },
1146 { 0, 2, 0, 0, 5, 1, 4, 1 },
1156 { 0, 2, 1, 3, 5, 1, 4, 2 },
1157 { 0, 2, 0, 5, 6, 1, 5, 1 },
1158 { 0, 2, 0, 0, 5, 1, 4, 1 },
1168 { 0, 2, -1, 2, 5, 1, 4, 0 },
1169 { 0, 2, 0, 5, 5, 1, 4, 1 },
1170 { 0, 2, 0, 0, 5, 1, 4, 1 },
1180 { 0, 2, 1, 2, 5, 1, 4, 2 },
1181 { 0, 2, 0, 5, 5, 1, 4, 1 },
1182 { 0, 2, 0, 0, 5, 1, 4, 1 },
1192 { 0, 2, -1, 0, 4, 1, 3, 0 },
1193 { 0, 2, 0, 4, 4, 1, 3, 1 },
1194 { 0, 2, 0, 0, 4, 1, 3, 1 },
1204 { 0, 2, 1, 0, 4, 1, 3, 2 },
1205 { 0, 2, 0, 4, 4, 1, 3, 1 },
1206 { 0, 2, 0, 0, 4, 1, 3, 1 },
1216 { 0, 6, 4, 0, 16, 5, 15, 5 },
1217 { 0, 6, 2, 0, 16, 5, 15, 3 },
1218 { 0, 6, 0, 0, 16, 5, 15, 1 },
1228 { 0, 6, 4, 0, 16, 5, 15, 5 },
1229 { 0, 6, 2, 0, 16, 5, 15, 3 },
1230 { 0, 6, 0, 0, 16, 5, 15, 1 },
1240 { 0, 8, 4, 0, 16, 7, 15, 5 },
1241 { 0, 8, 2, 0, 16, 7, 15, 3 },
1242 { 0, 8, 0, 0, 16, 7, 15, 1 },
1243 { 0, 8, 6, 0, 16, 7, 15, 7 },
1253 { 0, 8, 4, 0, 16, 7, 15, 5 },
1254 { 0, 8, 2, 0, 16, 7, 15, 3 },
1255 { 0, 8, 0, 0, 16, 7, 15, 1 },
1256 { 0, 8, 6, 0, 16, 7, 15, 7 },
1266 { 0, 2, 0, 0, 5, 1, 4, 1 },
1267 { 0, 2, 0, 5, 6, 1, 5, 1 },
1268 { 0, 2, -1, 3, 5, 1, 4, 0 },
1278 { 0, 2, 0, 0, 5, 1, 4, 1 },
1279 { 0, 2, 0, 5, 6, 1, 5, 1 },
1280 { 0, 2, 1, 3, 5, 1, 4, 2 },
1290 { 0, 2, 0, 0, 5, 1, 4, 1 },
1291 { 0, 2, 0, 5, 5, 1, 4, 1 },
1292 { 0, 2, -1, 2, 5, 1, 4, 0 },
1302 { 0, 2, 0, 0, 5, 1, 4, 1 },
1303 { 0, 2, 0, 5, 5, 1, 4, 1 },
1304 { 0, 2, 1, 2, 5, 1, 4, 2 },
1314 { 0, 2, 0, 0, 4, 1, 3, 1 },
1315 { 0, 2, 0, 4, 4, 1, 3, 1 },
1316 { 0, 2, -1, 0, 4, 1, 3, 0 },
1326 { 0, 2, 0, 0, 4, 1, 3, 1 },
1327 { 0, 2, 0, 4, 4, 1, 3, 1 },
1328 { 0, 2, 1, 0, 4, 1, 3, 2 },
1334 .name =
"vaapi_moco",
1340 .name =
"vaapi_idct",
1346 .name =
"vaapi_vld",
1360 .name =
"yuv420p9le",
1365 { 0, 2, 0, 0, 9, 1, 8, 1 },
1366 { 1, 2, 0, 0, 9, 1, 8, 1 },
1367 { 2, 2, 0, 0, 9, 1, 8, 1 },
1372 .name =
"yuv420p9be",
1377 { 0, 2, 0, 0, 9, 1, 8, 1 },
1378 { 1, 2, 0, 0, 9, 1, 8, 1 },
1379 { 2, 2, 0, 0, 9, 1, 8, 1 },
1384 .name =
"yuv420p10le",
1389 { 0, 2, 0, 0, 10, 1, 9, 1 },
1390 { 1, 2, 0, 0, 10, 1, 9, 1 },
1391 { 2, 2, 0, 0, 10, 1, 9, 1 },
1396 .name =
"yuv420p10be",
1401 { 0, 2, 0, 0, 10, 1, 9, 1 },
1402 { 1, 2, 0, 0, 10, 1, 9, 1 },
1403 { 2, 2, 0, 0, 10, 1, 9, 1 },
1408 .name =
"yuv420p12le",
1413 { 0, 2, 0, 0, 12, 1, 11, 1 },
1414 { 1, 2, 0, 0, 12, 1, 11, 1 },
1415 { 2, 2, 0, 0, 12, 1, 11, 1 },
1420 .name =
"yuv420p12be",
1425 { 0, 2, 0, 0, 12, 1, 11, 1 },
1426 { 1, 2, 0, 0, 12, 1, 11, 1 },
1427 { 2, 2, 0, 0, 12, 1, 11, 1 },
1432 .name =
"yuv420p14le",
1437 { 0, 2, 0, 0, 14, 1, 13, 1 },
1438 { 1, 2, 0, 0, 14, 1, 13, 1 },
1439 { 2, 2, 0, 0, 14, 1, 13, 1 },
1444 .name =
"yuv420p14be",
1449 { 0, 2, 0, 0, 14, 1, 13, 1 },
1450 { 1, 2, 0, 0, 14, 1, 13, 1 },
1451 { 2, 2, 0, 0, 14, 1, 13, 1 },
1456 .name =
"yuv420p16le",
1461 { 0, 2, 0, 0, 16, 1, 15, 1 },
1462 { 1, 2, 0, 0, 16, 1, 15, 1 },
1463 { 2, 2, 0, 0, 16, 1, 15, 1 },
1468 .name =
"yuv420p16be",
1473 { 0, 2, 0, 0, 16, 1, 15, 1 },
1474 { 1, 2, 0, 0, 16, 1, 15, 1 },
1475 { 2, 2, 0, 0, 16, 1, 15, 1 },
1480 .name =
"yuv422p9le",
1485 { 0, 2, 0, 0, 9, 1, 8, 1 },
1486 { 1, 2, 0, 0, 9, 1, 8, 1 },
1487 { 2, 2, 0, 0, 9, 1, 8, 1 },
1492 .name =
"yuv422p9be",
1497 { 0, 2, 0, 0, 9, 1, 8, 1 },
1498 { 1, 2, 0, 0, 9, 1, 8, 1 },
1499 { 2, 2, 0, 0, 9, 1, 8, 1 },
1504 .name =
"yuv422p10le",
1509 { 0, 2, 0, 0, 10, 1, 9, 1 },
1510 { 1, 2, 0, 0, 10, 1, 9, 1 },
1511 { 2, 2, 0, 0, 10, 1, 9, 1 },
1516 .name =
"yuv422p10be",
1521 { 0, 2, 0, 0, 10, 1, 9, 1 },
1522 { 1, 2, 0, 0, 10, 1, 9, 1 },
1523 { 2, 2, 0, 0, 10, 1, 9, 1 },
1528 .name =
"yuv422p12le",
1533 { 0, 2, 0, 0, 12, 1, 11, 1 },
1534 { 1, 2, 0, 0, 12, 1, 11, 1 },
1535 { 2, 2, 0, 0, 12, 1, 11, 1 },
1540 .name =
"yuv422p12be",
1545 { 0, 2, 0, 0, 12, 1, 11, 1 },
1546 { 1, 2, 0, 0, 12, 1, 11, 1 },
1547 { 2, 2, 0, 0, 12, 1, 11, 1 },
1552 .name =
"yuv422p14le",
1557 { 0, 2, 0, 0, 14, 1, 13, 1 },
1558 { 1, 2, 0, 0, 14, 1, 13, 1 },
1559 { 2, 2, 0, 0, 14, 1, 13, 1 },
1564 .name =
"yuv422p14be",
1569 { 0, 2, 0, 0, 14, 1, 13, 1 },
1570 { 1, 2, 0, 0, 14, 1, 13, 1 },
1571 { 2, 2, 0, 0, 14, 1, 13, 1 },
1576 .name =
"yuv422p16le",
1581 { 0, 2, 0, 0, 16, 1, 15, 1 },
1582 { 1, 2, 0, 0, 16, 1, 15, 1 },
1583 { 2, 2, 0, 0, 16, 1, 15, 1 },
1588 .name =
"yuv422p16be",
1593 { 0, 2, 0, 0, 16, 1, 15, 1 },
1594 { 1, 2, 0, 0, 16, 1, 15, 1 },
1595 { 2, 2, 0, 0, 16, 1, 15, 1 },
1600 .name =
"yuv444p16le",
1605 { 0, 2, 0, 0, 16, 1, 15, 1 },
1606 { 1, 2, 0, 0, 16, 1, 15, 1 },
1607 { 2, 2, 0, 0, 16, 1, 15, 1 },
1612 .name =
"yuv444p16be",
1617 { 0, 2, 0, 0, 16, 1, 15, 1 },
1618 { 1, 2, 0, 0, 16, 1, 15, 1 },
1619 { 2, 2, 0, 0, 16, 1, 15, 1 },
1624 .name =
"yuv444p10le",
1629 { 0, 2, 0, 0, 10, 1, 9, 1 },
1630 { 1, 2, 0, 0, 10, 1, 9, 1 },
1631 { 2, 2, 0, 0, 10, 1, 9, 1 },
1636 .name =
"yuv444p10be",
1641 { 0, 2, 0, 0, 10, 1, 9, 1 },
1642 { 1, 2, 0, 0, 10, 1, 9, 1 },
1643 { 2, 2, 0, 0, 10, 1, 9, 1 },
1648 .name =
"yuv444p9le",
1653 { 0, 2, 0, 0, 9, 1, 8, 1 },
1654 { 1, 2, 0, 0, 9, 1, 8, 1 },
1655 { 2, 2, 0, 0, 9, 1, 8, 1 },
1660 .name =
"yuv444p9be",
1665 { 0, 2, 0, 0, 9, 1, 8, 1 },
1666 { 1, 2, 0, 0, 9, 1, 8, 1 },
1667 { 2, 2, 0, 0, 9, 1, 8, 1 },
1672 .name =
"yuv444p12le",
1677 { 0, 2, 0, 0, 12, 1, 11, 1 },
1678 { 1, 2, 0, 0, 12, 1, 11, 1 },
1679 { 2, 2, 0, 0, 12, 1, 11, 1 },
1684 .name =
"yuv444p12be",
1689 { 0, 2, 0, 0, 12, 1, 11, 1 },
1690 { 1, 2, 0, 0, 12, 1, 11, 1 },
1691 { 2, 2, 0, 0, 12, 1, 11, 1 },
1696 .name =
"yuv444p14le",
1701 { 0, 2, 0, 0, 14, 1, 13, 1 },
1702 { 1, 2, 0, 0, 14, 1, 13, 1 },
1703 { 2, 2, 0, 0, 14, 1, 13, 1 },
1708 .name =
"yuv444p14be",
1713 { 0, 2, 0, 0, 14, 1, 13, 1 },
1714 { 1, 2, 0, 0, 14, 1, 13, 1 },
1715 { 2, 2, 0, 0, 14, 1, 13, 1 },
1720 .name =
"d3d11va_vld",
1726 .name =
"dxva2_vld",
1735 { 0, 2, 0, 0, 8, 1, 7, 1 },
1736 { 0, 2, 1, 0, 8, 1, 7, 2 },
1745 { 0, 4, 0, 0, 16, 3, 15, 1 },
1746 { 0, 4, 2, 0, 16, 3, 15, 3 },
1754 { 0, 4, 0, 0, 16, 3, 15, 1 },
1755 { 0, 4, 2, 0, 16, 3, 15, 3 },
1760 .name =
"videotoolbox_vld",
1769 { 2, 1, 0, 0, 8, 0, 7, 1 },
1770 { 0, 1, 0, 0, 8, 0, 7, 1 },
1771 { 1, 1, 0, 0, 8, 0, 7, 1 },
1781 { 2, 2, 0, 0, 9, 1, 8, 1 },
1782 { 0, 2, 0, 0, 9, 1, 8, 1 },
1783 { 1, 2, 0, 0, 9, 1, 8, 1 },
1793 { 2, 2, 0, 0, 9, 1, 8, 1 },
1794 { 0, 2, 0, 0, 9, 1, 8, 1 },
1795 { 1, 2, 0, 0, 9, 1, 8, 1 },
1805 { 2, 2, 0, 0, 10, 1, 9, 1 },
1806 { 0, 2, 0, 0, 10, 1, 9, 1 },
1807 { 1, 2, 0, 0, 10, 1, 9, 1 },
1817 { 2, 2, 0, 0, 10, 1, 9, 1 },
1818 { 0, 2, 0, 0, 10, 1, 9, 1 },
1819 { 1, 2, 0, 0, 10, 1, 9, 1 },
1829 { 2, 2, 0, 0, 12, 1, 11, 1 },
1830 { 0, 2, 0, 0, 12, 1, 11, 1 },
1831 { 1, 2, 0, 0, 12, 1, 11, 1 },
1841 { 2, 2, 0, 0, 12, 1, 11, 1 },
1842 { 0, 2, 0, 0, 12, 1, 11, 1 },
1843 { 1, 2, 0, 0, 12, 1, 11, 1 },
1853 { 2, 2, 0, 0, 14, 1, 13, 1 },
1854 { 0, 2, 0, 0, 14, 1, 13, 1 },
1855 { 1, 2, 0, 0, 14, 1, 13, 1 },
1865 { 2, 2, 0, 0, 14, 1, 13, 1 },
1866 { 0, 2, 0, 0, 14, 1, 13, 1 },
1867 { 1, 2, 0, 0, 14, 1, 13, 1 },
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 },
1889 { 2, 2, 0, 0, 16, 1, 15, 1 },
1890 { 0, 2, 0, 0, 16, 1, 15, 1 },
1891 { 1, 2, 0, 0, 16, 1, 15, 1 },
1901 { 2, 1, 0, 0, 8, 0, 7, 1 },
1902 { 0, 1, 0, 0, 8, 0, 7, 1 },
1903 { 1, 1, 0, 0, 8, 0, 7, 1 },
1904 { 3, 1, 0, 0, 8, 0, 7, 1 },
1910 .name =
"gbrap16le",
1915 { 2, 2, 0, 0, 16, 1, 15, 1 },
1916 { 0, 2, 0, 0, 16, 1, 15, 1 },
1917 { 1, 2, 0, 0, 16, 1, 15, 1 },
1918 { 3, 2, 0, 0, 16, 1, 15, 1 },
1924 .name =
"gbrap16be",
1929 { 2, 2, 0, 0, 16, 1, 15, 1 },
1930 { 0, 2, 0, 0, 16, 1, 15, 1 },
1931 { 1, 2, 0, 0, 16, 1, 15, 1 },
1932 { 3, 2, 0, 0, 16, 1, 15, 1 },
1949 { 0, 6, 0, 4, 12, 5, 11, 1 },
1950 { 0, 6, 2, 4, 12, 5, 11, 3 },
1951 { 0, 6, 4, 4, 12, 5, 11, 5 },
1961 { 0, 6, 0, 4, 12, 5, 11, 1 },
1962 { 0, 6, 2, 4, 12, 5, 11, 3 },
1963 { 0, 6, 4, 4, 12, 5, 11, 5 },
1968 #define BAYER8_DESC_COMMON \
1969 .nb_components= 3, \
1970 .log2_chroma_w= 0, \
1971 .log2_chroma_h= 0, \
1978 #define BAYER16_DESC_COMMON \
1979 .nb_components= 3, \
1980 .log2_chroma_w= 0, \
1981 .log2_chroma_h= 0, \
1989 .name =
"bayer_bggr8",
1994 .name =
"bayer_bggr16le",
1999 .name =
"bayer_bggr16be",
2004 .name =
"bayer_rggb8",
2009 .name =
"bayer_rggb16le",
2014 .name =
"bayer_rggb16be",
2019 .name =
"bayer_gbrg8",
2024 .name =
"bayer_gbrg16le",
2029 .name =
"bayer_gbrg16be",
2034 .name =
"bayer_grbg8",
2039 .name =
"bayer_grbg16le",
2044 .name =
"bayer_grbg16be",
2054 { 0, 1, 0, 0, 8, 0, 7, 1 },
2055 { 1, 2, 0, 0, 8, 1, 7, 1 },
2056 { 1, 2, 1, 0, 8, 1, 7, 2 },
2066 { 0, 2, 0, 0, 10, 1, 9, 1 },
2067 { 1, 4, 0, 0, 10, 3, 9, 1 },
2068 { 1, 4, 2, 0, 10, 3, 9, 3 },
2078 { 0, 2, 0, 0, 10, 1, 9, 1 },
2079 { 1, 4, 0, 0, 10, 3, 9, 1 },
2080 { 1, 4, 2, 0, 10, 3, 9, 3 },
2089 .name =
"mediacodec",
2106 { 0, 8, 2, 0, 16, 7, 15, 3 },
2107 { 0, 8, 4, 0, 16, 7, 15, 5 },
2108 { 0, 8, 6, 0, 16, 7, 15, 7 },
2109 { 0, 8, 0, 0, 16, 7, 15, 1 },
2119 { 0, 8, 2, 0, 16, 7, 15, 3 },
2120 { 0, 8, 4, 0, 16, 7, 15, 5 },
2121 { 0, 8, 6, 0, 16, 7, 15, 7 },
2122 { 0, 8, 0, 0, 16, 7, 15, 1 },
2132 { 0, 2, 0, 6, 10, 1, 9, 1 },
2133 { 1, 4, 0, 6, 10, 3, 9, 1 },
2134 { 1, 4, 2, 6, 10, 3, 9, 3 },
2144 { 0, 2, 0, 6, 10, 1, 9, 1 },
2145 { 1, 4, 0, 6, 10, 3, 9, 1 },
2146 { 1, 4, 2, 6, 10, 3, 9, 3 },
2156 { 0, 2, 0, 0, 16, 1, 15, 1 },
2157 { 1, 4, 0, 0, 16, 3, 15, 1 },
2158 { 1, 4, 2, 0, 16, 3, 15, 3 },
2168 { 0, 2, 0, 0, 16, 1, 15, 1 },
2169 { 1, 4, 0, 0, 16, 3, 15, 1 },
2170 { 1, 4, 2, 0, 16, 3, 15, 3 },
2175 .name =
"gbrap12le",
2180 { 2, 2, 0, 0, 12, 1, 11, 1 },
2181 { 0, 2, 0, 0, 12, 1, 11, 1 },
2182 { 1, 2, 0, 0, 12, 1, 11, 1 },
2183 { 3, 2, 0, 0, 12, 1, 11, 1 },
2189 .name =
"gbrap12be",
2194 { 2, 2, 0, 0, 12, 1, 11, 1 },
2195 { 0, 2, 0, 0, 12, 1, 11, 1 },
2196 { 1, 2, 0, 0, 12, 1, 11, 1 },
2197 { 3, 2, 0, 0, 12, 1, 11, 1 },
2203 .name =
"gbrap10le",
2208 { 2, 2, 0, 0, 10, 1, 9, 1 },
2209 { 0, 2, 0, 0, 10, 1, 9, 1 },
2210 { 1, 2, 0, 0, 10, 1, 9, 1 },
2211 { 3, 2, 0, 0, 10, 1, 9, 1 },
2217 .name =
"gbrap10be",
2222 { 2, 2, 0, 0, 10, 1, 9, 1 },
2223 { 0, 2, 0, 0, 10, 1, 9, 1 },
2224 { 1, 2, 0, 0, 10, 1, 9, 1 },
2225 { 3, 2, 0, 0, 10, 1, 9, 1 },
2235 .name =
"gbrpf32be",
2240 { 2, 4, 0, 0, 32, 3, 31, 1 },
2241 { 0, 4, 0, 0, 32, 3, 31, 1 },
2242 { 1, 4, 0, 0, 32, 3, 31, 1 },
2248 .name =
"gbrpf32le",
2253 { 2, 4, 0, 0, 32, 3, 31, 1 },
2254 { 0, 4, 0, 0, 32, 3, 31, 1 },
2255 { 1, 4, 0, 0, 32, 3, 31, 1 },
2260 .name =
"gbrapf32be",
2265 { 2, 4, 0, 0, 32, 3, 31, 1 },
2266 { 0, 4, 0, 0, 32, 3, 31, 1 },
2267 { 1, 4, 0, 0, 32, 3, 31, 1 },
2268 { 3, 4, 0, 0, 32, 3, 31, 1 },
2275 .name =
"gbrapf32le",
2280 { 2, 4, 0, 0, 32, 3, 31, 1 },
2281 { 0, 4, 0, 0, 32, 3, 31, 1 },
2282 { 1, 4, 0, 0, 32, 3, 31, 1 },
2283 { 3, 4, 0, 0, 32, 3, 31, 1 },
2289 .name =
"drm_prime",
2297 .name =
"grayf32be",
2302 { 0, 4, 0, 0, 32, 3, 31, 1 },
2308 .name =
"grayf32le",
2313 { 0, 4, 0, 0, 32, 3, 31, 1 },
2319 .name =
"yuva422p12be",
2324 { 0, 2, 0, 0, 12, 1, 11, 1 },
2325 { 1, 2, 0, 0, 12, 1, 11, 1 },
2326 { 2, 2, 0, 0, 12, 1, 11, 1 },
2327 { 3, 2, 0, 0, 12, 1, 11, 1 },
2332 .name =
"yuva422p12le",
2337 { 0, 2, 0, 0, 12, 1, 11, 1 },
2338 { 1, 2, 0, 0, 12, 1, 11, 1 },
2339 { 2, 2, 0, 0, 12, 1, 11, 1 },
2340 { 3, 2, 0, 0, 12, 1, 11, 1 },
2345 .name =
"yuva444p12be",
2350 { 0, 2, 0, 0, 12, 1, 11, 1 },
2351 { 1, 2, 0, 0, 12, 1, 11, 1 },
2352 { 2, 2, 0, 0, 12, 1, 11, 1 },
2353 { 3, 2, 0, 0, 12, 1, 11, 1 },
2358 .name =
"yuva444p12le",
2363 { 0, 2, 0, 0, 12, 1, 11, 1 },
2364 { 1, 2, 0, 0, 12, 1, 11, 1 },
2365 { 2, 2, 0, 0, 12, 1, 11, 1 },
2366 { 3, 2, 0, 0, 12, 1, 11, 1 },
2376 { 0, 1, 0, 0, 8, 0, 7, 1 },
2377 { 1, 2, 0, 0, 8, 1, 7, 1 },
2378 { 1, 2, 1, 0, 8, 1, 7, 2 },
2388 { 0, 1, 0, 0, 8, 0, 7, 1 },
2389 { 1, 2, 1, 0, 8, 1, 7, 2 },
2390 { 1, 2, 0, 0, 8, 1, 7, 1 },
2399 #if FF_API_PLUS1_MINUS1
2496 # define X_NE(be, le) be
2498 # define X_NE(be, le) le
2505 if (!strcmp(
name,
"rgb32"))
2507 else if (!strcmp(
name,
"bgr32"))
2531 int s =
c == 1 ||
c == 2 ? 0 : log2_pixels;
2535 return bits >> log2_pixels;
2546 int s =
c == 1 ||
c == 2 ? 0 : log2_pixels;
2549 for (
c = 0;
c < 4;
c++)
2555 return bits >> log2_pixels;
2563 snprintf (buf, buf_size,
"name" " nb_components" " nb_bits");
2566 snprintf(buf, buf_size,
"%-11s %7d %10d", pixdesc->
name,
2602 int *h_shift,
int *v_shift)
2607 *h_shift =
desc->log2_chroma_w;
2608 *v_shift =
desc->log2_chroma_h;
2621 for (
i = 0;
i <
desc->nb_components;
i++)
2633 uint8_t fill[4][8+6+3] = {{0}};
2634 uint8_t *
data[4] = {fill[0], fill[1], fill[2], fill[3]};
2635 int linesize[4] = {0,0,0,0};
2650 av_assert0(!
c->plane && !
c->step && !
c->offset && !
c->shift && !
c->depth);
2662 tmp[0] =
tmp[1] = (1ULL <<
c->depth) - 1;
2675 if (!
desc || strlen(
desc->name) < 2)
2678 i = strlen(
name) - 2;
2679 if (strcmp(
name +
i,
"be") && strcmp(
name +
i,
"le"))
2682 name[
i] ^=
'b' ^
'l';
2687 #define FF_COLOR_NA -1
2688 #define FF_COLOR_RGB 0
2689 #define FF_COLOR_GRAY 1
2690 #define FF_COLOR_YUV 2
2691 #define FF_COLOR_YUV_JPEG 3
2692 #define FF_COLOR_XYZ 4
2694 #define pixdesc_has_alpha(pixdesc) \
2695 ((pixdesc)->flags & AV_PIX_FMT_FLAG_ALPHA)
2702 if(
desc->nb_components == 1 ||
desc->nb_components == 2)
2716 if(
desc->nb_components == 0)
2727 if (!
desc || !
desc->nb_components) {
2732 *
min = INT_MAX, *
max = -INT_MAX;
2733 for (
i = 0;
i <
desc->nb_components;
i++) {
2742 unsigned *lossp,
unsigned consider)
2746 int src_color, dst_color;
2747 int src_min_depth, src_max_depth, dst_min_depth, dst_max_depth;
2748 int ret, loss,
i, nb_components;
2749 int score = INT_MAX - 1;
2751 if (!src_desc || !dst_desc)
2756 if (dst_pix_fmt == src_pix_fmt)
2765 if (dst_pix_fmt == src_pix_fmt)
2780 for (
i = 0;
i < nb_components;
i++) {
2784 score -= 65536 >> depth_minus1;
2827 if (src_color != dst_color)
2865 enum AVPixelFormat src_pix_fmt,
int has_alpha,
int *loss_ptr)
2868 int loss1, loss2, loss_mask;
2874 dst_pix_fmt = dst_pix_fmt2;
2875 }
else if (!desc2) {
2876 dst_pix_fmt = dst_pix_fmt1;
2878 loss_mask= loss_ptr?~*loss_ptr:~0;
2885 if (score1 == score2) {
2892 dst_pix_fmt = score1 < score2 ? dst_pix_fmt2 : dst_pix_fmt1;