1use std::error;
2use std::ffi::{CStr, CString, NulError};
3use std::fmt;
4use std::str::{FromStr, from_utf8_unchecked};
5
6use crate::ffi::AVPixelFormat::*;
7use crate::ffi::*;
8
9#[derive(Eq, PartialEq, Copy, Clone, Debug)]
10pub enum Pixel {
11 None,
12
13 YUV420P,
14 YUYV422,
15 RGB24,
16 BGR24,
17 YUV422P,
18 YUV444P,
19 YUV410P,
20 YUV411P,
21 GRAY8,
22 MonoWhite,
23 MonoBlack,
24 PAL8,
25 YUVJ420P,
26 YUVJ422P,
27 YUVJ444P,
28 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
29 XVMC_MPEG2_MC,
30 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
31 XVMC_MPEG2_IDCT,
32 UYVY422,
33 UYYVYY411,
34 BGR8,
35 BGR4,
36 BGR4_BYTE,
37 RGB8,
38 RGB4,
39 RGB4_BYTE,
40 NV12,
41 NV21,
42
43 ARGB,
44 RGBA,
45 ABGR,
46 BGRA,
47
48 GRAY16BE,
49 GRAY16LE,
50 YUV440P,
51 YUVJ440P,
52 YUVA420P,
53 #[cfg(feature = "ff_api_vdpau")]
54 VDPAU_H264,
55 #[cfg(feature = "ff_api_vdpau")]
56 VDPAU_MPEG1,
57 #[cfg(feature = "ff_api_vdpau")]
58 VDPAU_MPEG2,
59 #[cfg(feature = "ff_api_vdpau")]
60 VDPAU_WMV3,
61 #[cfg(feature = "ff_api_vdpau")]
62 VDPAU_VC1,
63 RGB48BE,
64 RGB48LE,
65
66 RGB565BE,
67 RGB565LE,
68 RGB555BE,
69 RGB555LE,
70
71 BGR565BE,
72 BGR565LE,
73 BGR555BE,
74 BGR555LE,
75
76 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
77 VAAPI_MOCO,
78 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
79 VAAPI_IDCT,
80 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
81 VAAPI_VLD,
82 #[cfg(any(not(feature = "ff_api_vaapi"), feature = "ffmpeg_5_0"))]
83 VAAPI,
84
85 YUV420P16LE,
86 YUV420P16BE,
87 YUV422P16LE,
88 YUV422P16BE,
89 YUV444P16LE,
90 YUV444P16BE,
91 #[cfg(feature = "ff_api_vdpau")]
92 VDPAU_MPEG4,
93 DXVA2_VLD,
94
95 RGB444LE,
96 RGB444BE,
97 BGR444LE,
98 BGR444BE,
99 YA8,
100
101 BGR48BE,
102 BGR48LE,
103
104 YUV420P9BE,
105 YUV420P9LE,
106 YUV420P10BE,
107 YUV420P10LE,
108 YUV422P10BE,
109 YUV422P10LE,
110 YUV444P9BE,
111 YUV444P9LE,
112 YUV444P10BE,
113 YUV444P10LE,
114 YUV422P9BE,
115 YUV422P9LE,
116 #[cfg(not(feature = "ffmpeg_4_0"))]
117 VDA_VLD,
118
119 GBRP,
120 GBRP9BE,
121 GBRP9LE,
122 GBRP10BE,
123 GBRP10LE,
124 GBRP16BE,
125 GBRP16LE,
126
127 YUVA420P9BE,
128 YUVA420P9LE,
129 YUVA422P9BE,
130 YUVA422P9LE,
131 YUVA444P9BE,
132 YUVA444P9LE,
133 YUVA420P10BE,
134 YUVA420P10LE,
135 YUVA422P10BE,
136 YUVA422P10LE,
137 YUVA444P10BE,
138 YUVA444P10LE,
139 YUVA420P16BE,
140 YUVA420P16LE,
141 YUVA422P16BE,
142 YUVA422P16LE,
143 YUVA444P16BE,
144 YUVA444P16LE,
145
146 VDPAU,
147
148 XYZ12LE,
149 XYZ12BE,
150 NV16,
151 NV20LE,
152 NV20BE,
153
154 RGBA64BE,
155 RGBA64LE,
156 BGRA64BE,
157 BGRA64LE,
158
159 YVYU422,
160
161 #[cfg(not(feature = "ffmpeg_4_0"))]
162 VDA,
163
164 YA16BE,
165 YA16LE,
166
167 QSV,
168 MMAL,
169
170 D3D11VA_VLD,
171
172 CUDA,
173
174 ZRGB,
175 RGBZ,
176 ZBGR,
177 BGRZ,
178 YUVA444P,
179 YUVA422P,
180
181 YUV420P12BE,
182 YUV420P12LE,
183 YUV420P14BE,
184 YUV420P14LE,
185 YUV422P12BE,
186 YUV422P12LE,
187 YUV422P14BE,
188 YUV422P14LE,
189 YUV444P12BE,
190 YUV444P12LE,
191 YUV444P14BE,
192 YUV444P14LE,
193 GBRP12BE,
194 GBRP12LE,
195 GBRP14BE,
196 GBRP14LE,
197 GBRAP,
198 GBRAP16BE,
199 GBRAP16LE,
200 YUVJ411P,
201
202 BAYER_BGGR8,
203 BAYER_RGGB8,
204 BAYER_GBRG8,
205 BAYER_GRBG8,
206 BAYER_BGGR16LE,
207 BAYER_BGGR16BE,
208 BAYER_RGGB16LE,
209 BAYER_RGGB16BE,
210 BAYER_GBRG16LE,
211 BAYER_GBRG16BE,
212 BAYER_GRBG16LE,
213 BAYER_GRBG16BE,
214
215 YUV440P10LE,
216 YUV440P10BE,
217 YUV440P12LE,
218 YUV440P12BE,
219 AYUV64LE,
220 AYUV64BE,
221
222 VIDEOTOOLBOX,
223
224 #[cfg(all(feature = "ffmpeg_4_0", not(feature = "ffmpeg_7_0")))]
226 XVMC,
227
228 RGB32,
229 RGB32_1,
230 BGR32,
231 BGR32_1,
232 ZRGB32,
233 ZBGR32,
234
235 GRAY16,
236 YA16,
237 RGB48,
238 RGB565,
239 RGB555,
240 RGB444,
241 BGR48,
242 BGR565,
243 BGR555,
244 BGR444,
245
246 YUV420P9,
247 YUV422P9,
248 YUV444P9,
249 YUV420P10,
250 YUV422P10,
251 YUV440P10,
252 YUV444P10,
253 YUV420P12,
254 YUV422P12,
255 YUV440P12,
256 YUV444P12,
257 YUV420P14,
258 YUV422P14,
259 YUV444P14,
260 YUV420P16,
261 YUV422P16,
262 YUV444P16,
263
264 GBRP9,
265 GBRP10,
266 GBRP12,
267 GBRP14,
268 GBRP16,
269 GBRAP16,
270
271 BAYER_BGGR16,
272 BAYER_RGGB16,
273 BAYER_GBRG16,
274 BAYER_GRBG16,
275
276 YUVA420P9,
277 YUVA422P9,
278 YUVA444P9,
279 YUVA420P10,
280 YUVA422P10,
281 YUVA444P10,
282 YUVA420P16,
283 YUVA422P16,
284 YUVA444P16,
285
286 XYZ12,
287 NV20,
288 AYUV64,
289
290 P010LE,
291 P010BE,
292 GBRAP12BE,
293 GBRAP12LE,
294 GBRAP10LE,
295 GBRAP10BE,
296 MEDIACODEC,
297 GRAY12BE,
298 GRAY12LE,
299 GRAY10BE,
300 GRAY10LE,
301 P016LE,
302 P016BE,
303
304 D3D11,
305 GRAY9BE,
306 GRAY9LE,
307 GBRPF32BE,
308 GBRPF32LE,
309 GBRAPF32BE,
310 GBRAPF32LE,
311 DRM_PRIME,
312
313 #[cfg(feature = "ffmpeg_4_0")]
314 OPENCL,
315
316 #[cfg(feature = "ffmpeg_4_1")]
317 GRAY14BE,
318 #[cfg(feature = "ffmpeg_4_1")]
319 GRAY14LE,
320 #[cfg(feature = "ffmpeg_4_1")]
321 GRAYF32BE,
322 #[cfg(feature = "ffmpeg_4_1")]
323 GRAYF32LE,
324
325 #[cfg(feature = "ffmpeg_4_2")]
326 YUVA422P12BE,
327 #[cfg(feature = "ffmpeg_4_2")]
328 YUVA422P12LE,
329 #[cfg(feature = "ffmpeg_4_2")]
330 YUVA444P12BE,
331 #[cfg(feature = "ffmpeg_4_2")]
332 YUVA444P12LE,
333 #[cfg(feature = "ffmpeg_4_2")]
334 NV24,
335 #[cfg(feature = "ffmpeg_4_2")]
336 NV42,
337
338 #[cfg(feature = "ffmpeg_4_3")]
339 VULKAN,
340 #[cfg(feature = "ffmpeg_4_3")]
341 Y210BE,
342 #[cfg(feature = "ffmpeg_4_3")]
343 Y210LE,
344
345 #[cfg(feature = "ffmpeg_4_4")]
346 X2RGB10LE,
347 #[cfg(feature = "ffmpeg_4_4")]
348 X2RGB10BE,
349
350 #[cfg(feature = "ffmpeg_5_0")]
351 X2BGR10LE,
352 #[cfg(feature = "ffmpeg_5_0")]
353 X2BGR10BE,
354 #[cfg(feature = "ffmpeg_5_0")]
355 P210BE,
356 #[cfg(feature = "ffmpeg_5_0")]
357 P210LE,
358 #[cfg(feature = "ffmpeg_5_0")]
359 P410BE,
360 #[cfg(feature = "ffmpeg_5_0")]
361 P410LE,
362 #[cfg(feature = "ffmpeg_5_0")]
363 P216BE,
364 #[cfg(feature = "ffmpeg_5_0")]
365 P216LE,
366 #[cfg(feature = "ffmpeg_5_0")]
367 P416BE,
368 #[cfg(feature = "ffmpeg_5_0")]
369 P416LE,
370
371 #[cfg(feature = "ffmpeg_6_0")]
372 VUYA,
373 #[cfg(feature = "ffmpeg_6_0")]
374 RGBAF16BE,
375 #[cfg(feature = "ffmpeg_6_0")]
376 RGBAF16LE,
377 #[cfg(feature = "ffmpeg_6_0")]
378 VUYX,
379 #[cfg(feature = "ffmpeg_6_0")]
380 P012LE,
381 #[cfg(feature = "ffmpeg_6_0")]
382 P012BE,
383 #[cfg(feature = "ffmpeg_6_0")]
384 Y212BE,
385 #[cfg(feature = "ffmpeg_6_0")]
386 Y212LE,
387 #[cfg(feature = "ffmpeg_6_0")]
388 XV30BE,
389 #[cfg(feature = "ffmpeg_6_0")]
390 XV30LE,
391 #[cfg(feature = "ffmpeg_6_0")]
392 XV36BE,
393 #[cfg(feature = "ffmpeg_6_0")]
394 XV36LE,
395 #[cfg(feature = "ffmpeg_6_0")]
396 RGBF32BE,
397 #[cfg(feature = "ffmpeg_6_0")]
398 RGBF32LE,
399 #[cfg(feature = "ffmpeg_6_0")]
400 RGBAF32BE,
401 #[cfg(feature = "ffmpeg_6_0")]
402 RGBAF32LE,
403
404 #[cfg(feature = "ffmpeg_6_1")]
405 P212BE,
406 #[cfg(feature = "ffmpeg_6_1")]
407 P212LE,
408 #[cfg(feature = "ffmpeg_6_1")]
409 P412BE,
410 #[cfg(feature = "ffmpeg_6_1")]
411 P412LE,
412 #[cfg(feature = "ffmpeg_6_1")]
413 GBRAP14BE,
414 #[cfg(feature = "ffmpeg_6_1")]
415 GBRAP14LE,
416
417 #[cfg(feature = "ffmpeg_7_0")]
418 D3D12,
419
420 #[cfg(feature = "ffmpeg_8_0")]
421 AYUV,
422 #[cfg(feature = "ffmpeg_8_0")]
423 UYVA,
424 #[cfg(feature = "ffmpeg_8_0")]
425 VYU444,
426 #[cfg(feature = "ffmpeg_8_0")]
427 V30X,
428 #[cfg(feature = "ffmpeg_8_0")]
429 V30XLE,
430 #[cfg(feature = "ffmpeg_8_0")]
431 V30XBE,
432 #[cfg(feature = "ffmpeg_8_0")]
433 RGBF16,
434 #[cfg(feature = "ffmpeg_8_0")]
435 RGBF16LE,
436 #[cfg(feature = "ffmpeg_8_0")]
437 RGBF16BE,
438 #[cfg(feature = "ffmpeg_8_0")]
439 RGB96,
440 #[cfg(feature = "ffmpeg_8_0")]
441 RGB96LE,
442 #[cfg(feature = "ffmpeg_8_0")]
443 RGB96BE,
444 #[cfg(feature = "ffmpeg_8_0")]
445 RGBA128,
446 #[cfg(feature = "ffmpeg_8_0")]
447 RGBA128LE,
448 #[cfg(feature = "ffmpeg_8_0")]
449 RGBA128BE,
450 #[cfg(feature = "ffmpeg_8_0")]
451 Y216,
452 #[cfg(feature = "ffmpeg_8_0")]
453 Y216LE,
454 #[cfg(feature = "ffmpeg_8_0")]
455 Y216BE,
456 #[cfg(feature = "ffmpeg_8_0")]
457 XV48,
458 #[cfg(feature = "ffmpeg_8_0")]
459 XV48LE,
460 #[cfg(feature = "ffmpeg_8_0")]
461 XV48BE,
462 #[cfg(feature = "ffmpeg_8_0")]
463 GBRPF16BE,
464 #[cfg(feature = "ffmpeg_8_0")]
465 GBRPF16LE,
466 #[cfg(feature = "ffmpeg_8_0")]
467 GBRAPF16BE,
468 #[cfg(feature = "ffmpeg_8_0")]
469 GBRAPF16LE,
470 #[cfg(feature = "ffmpeg_8_0")]
471 GRAYF16BE,
472 #[cfg(feature = "ffmpeg_8_0")]
473 GRAYF16LE,
474 #[cfg(feature = "ffmpeg_8_0")]
475 AMF_SURFACE,
476 #[cfg(feature = "ffmpeg_8_0")]
477 GRAY32BE,
478 #[cfg(feature = "ffmpeg_8_0")]
479 GRAY32LE,
480 #[cfg(feature = "ffmpeg_8_0")]
481 YAF16BE,
482 #[cfg(feature = "ffmpeg_8_0")]
483 YAF16LE,
484 #[cfg(feature = "ffmpeg_8_0")]
485 YAF32BE,
486 #[cfg(feature = "ffmpeg_8_0")]
487 YAF32LE,
488 #[cfg(feature = "ffmpeg_8_0")]
489 GBRAP32BE,
490 #[cfg(feature = "ffmpeg_8_0")]
491 GBRAP32LE,
492 #[cfg(feature = "ffmpeg_8_0")]
493 OHCODEC,
494 #[cfg(feature = "ffmpeg_8_0")]
495 YUV444P10MSB,
496 #[cfg(feature = "ffmpeg_8_0")]
497 YUV444P10MSBBE,
498 #[cfg(feature = "ffmpeg_8_0")]
499 YUV444P10MSBLE,
500 #[cfg(feature = "ffmpeg_8_0")]
501 YUV444P12MSB,
502 #[cfg(feature = "ffmpeg_8_0")]
503 YUV444P12MSBBE,
504 #[cfg(feature = "ffmpeg_8_0")]
505 YUV444P12MSBLE,
506 #[cfg(feature = "ffmpeg_8_0")]
507 GBRP10MSB,
508 #[cfg(feature = "ffmpeg_8_0")]
509 GBRP10MSBBE,
510 #[cfg(feature = "ffmpeg_8_0")]
511 GBRP10MSBLE,
512 #[cfg(feature = "ffmpeg_8_0")]
513 GBRP12MSB,
514 #[cfg(feature = "ffmpeg_8_0")]
515 GBRP12MSBBE,
516 #[cfg(feature = "ffmpeg_8_0")]
517 GBRP12MSBLE,
518
519 #[cfg(feature = "rpi")]
520 SAND128,
521 #[cfg(feature = "rpi")]
522 SAND64_10,
523 #[cfg(feature = "rpi")]
524 SAND64_16,
525 #[cfg(feature = "rpi")]
526 RPI4_8,
527 #[cfg(feature = "rpi")]
528 RPI4_10,
529}
530
531#[derive(Clone, Copy, PartialEq, Eq)]
532pub struct Descriptor {
533 ptr: *const AVPixFmtDescriptor,
534}
535
536unsafe impl Send for Descriptor {}
537unsafe impl Sync for Descriptor {}
538
539impl Pixel {
540 pub const Y400A: Pixel = Pixel::YA8;
541 pub const GRAY8A: Pixel = Pixel::YA8;
542 pub const GBR24P: Pixel = Pixel::GBRP;
543 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
544 pub const XVMC: Pixel = Pixel::XVMC_MPEG2_IDCT;
545
546 pub fn descriptor(self) -> Option<Descriptor> {
547 unsafe {
548 let ptr = av_pix_fmt_desc_get(self.into());
549
550 ptr.as_ref().map(|ptr| Descriptor { ptr })
551 }
552 }
553}
554
555impl Descriptor {
556 pub fn as_ptr(self) -> *const AVPixFmtDescriptor {
557 self.ptr
558 }
559
560 pub fn name(self) -> &'static str {
561 unsafe { from_utf8_unchecked(CStr::from_ptr((*self.as_ptr()).name).to_bytes()) }
562 }
563
564 pub fn nb_components(self) -> u8 {
565 unsafe { (*self.as_ptr()).nb_components }
566 }
567
568 pub fn log2_chroma_w(self) -> u8 {
569 unsafe { (*self.as_ptr()).log2_chroma_w }
570 }
571
572 pub fn log2_chroma_h(self) -> u8 {
573 unsafe { (*self.as_ptr()).log2_chroma_h }
574 }
575
576 pub fn bits_per_pixel(&self) -> i32 {
577 unsafe { av_get_bits_per_pixel(self.as_ptr()) }
578 }
579}
580
581impl From<AVPixelFormat> for Pixel {
582 #[inline]
583 fn from(value: AVPixelFormat) -> Self {
584 match value {
585 AV_PIX_FMT_NONE => Pixel::None,
586
587 AV_PIX_FMT_YUV420P => Pixel::YUV420P,
588 AV_PIX_FMT_YUYV422 => Pixel::YUYV422,
589 AV_PIX_FMT_RGB24 => Pixel::RGB24,
590 AV_PIX_FMT_BGR24 => Pixel::BGR24,
591 AV_PIX_FMT_YUV422P => Pixel::YUV422P,
592 AV_PIX_FMT_YUV444P => Pixel::YUV444P,
593 AV_PIX_FMT_YUV410P => Pixel::YUV410P,
594 AV_PIX_FMT_YUV411P => Pixel::YUV411P,
595 AV_PIX_FMT_GRAY8 => Pixel::GRAY8,
596 AV_PIX_FMT_MONOWHITE => Pixel::MonoWhite,
597 AV_PIX_FMT_MONOBLACK => Pixel::MonoBlack,
598 AV_PIX_FMT_PAL8 => Pixel::PAL8,
599 AV_PIX_FMT_YUVJ420P => Pixel::YUVJ420P,
600 AV_PIX_FMT_YUVJ422P => Pixel::YUVJ422P,
601 AV_PIX_FMT_YUVJ444P => Pixel::YUVJ444P,
602 #[cfg(all(feature = "ffmpeg_4_0", not(feature = "ffmpeg_7_0")))]
603 AV_PIX_FMT_XVMC => Pixel::XVMC,
604 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
605 AV_PIX_FMT_XVMC_MPEG2_MC => Pixel::XVMC_MPEG2_MC,
606 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
607 AV_PIX_FMT_XVMC_MPEG2_IDCT => Pixel::XVMC_MPEG2_IDCT,
608 AV_PIX_FMT_UYVY422 => Pixel::UYVY422,
609 AV_PIX_FMT_UYYVYY411 => Pixel::UYYVYY411,
610 AV_PIX_FMT_BGR8 => Pixel::BGR8,
611 AV_PIX_FMT_BGR4 => Pixel::BGR4,
612 AV_PIX_FMT_BGR4_BYTE => Pixel::BGR4_BYTE,
613 AV_PIX_FMT_RGB8 => Pixel::RGB8,
614 AV_PIX_FMT_RGB4 => Pixel::RGB4,
615 AV_PIX_FMT_RGB4_BYTE => Pixel::RGB4_BYTE,
616 AV_PIX_FMT_NV12 => Pixel::NV12,
617 AV_PIX_FMT_NV21 => Pixel::NV21,
618
619 AV_PIX_FMT_ARGB => Pixel::ARGB,
620 AV_PIX_FMT_RGBA => Pixel::RGBA,
621 AV_PIX_FMT_ABGR => Pixel::ABGR,
622 AV_PIX_FMT_BGRA => Pixel::BGRA,
623
624 AV_PIX_FMT_GRAY16BE => Pixel::GRAY16BE,
625 AV_PIX_FMT_GRAY16LE => Pixel::GRAY16LE,
626 AV_PIX_FMT_YUV440P => Pixel::YUV440P,
627 AV_PIX_FMT_YUVJ440P => Pixel::YUVJ440P,
628 AV_PIX_FMT_YUVA420P => Pixel::YUVA420P,
629 #[cfg(feature = "ff_api_vdpau")]
630 AV_PIX_FMT_VDPAU_H264 => Pixel::VDPAU_H264,
631 #[cfg(feature = "ff_api_vdpau")]
632 AV_PIX_FMT_VDPAU_MPEG1 => Pixel::VDPAU_MPEG1,
633 #[cfg(feature = "ff_api_vdpau")]
634 AV_PIX_FMT_VDPAU_MPEG2 => Pixel::VDPAU_MPEG2,
635 #[cfg(feature = "ff_api_vdpau")]
636 AV_PIX_FMT_VDPAU_WMV3 => Pixel::VDPAU_WMV3,
637 #[cfg(feature = "ff_api_vdpau")]
638 AV_PIX_FMT_VDPAU_VC1 => Pixel::VDPAU_VC1,
639 AV_PIX_FMT_RGB48BE => Pixel::RGB48BE,
640 AV_PIX_FMT_RGB48LE => Pixel::RGB48LE,
641
642 AV_PIX_FMT_RGB565BE => Pixel::RGB565BE,
643 AV_PIX_FMT_RGB565LE => Pixel::RGB565LE,
644 AV_PIX_FMT_RGB555BE => Pixel::RGB555BE,
645 AV_PIX_FMT_RGB555LE => Pixel::RGB555LE,
646
647 AV_PIX_FMT_BGR565BE => Pixel::BGR565BE,
648 AV_PIX_FMT_BGR565LE => Pixel::BGR565LE,
649 AV_PIX_FMT_BGR555BE => Pixel::BGR555BE,
650 AV_PIX_FMT_BGR555LE => Pixel::BGR555LE,
651
652 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
653 AV_PIX_FMT_VAAPI_MOCO => Pixel::VAAPI_MOCO,
654 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
655 AV_PIX_FMT_VAAPI_IDCT => Pixel::VAAPI_IDCT,
656 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
657 AV_PIX_FMT_VAAPI_VLD => Pixel::VAAPI_VLD,
658 #[cfg(any(not(feature = "ff_api_vaapi"), feature = "ffmpeg_5_0"))]
659 AV_PIX_FMT_VAAPI => Pixel::VAAPI,
660
661 AV_PIX_FMT_YUV420P16LE => Pixel::YUV420P16LE,
662 AV_PIX_FMT_YUV420P16BE => Pixel::YUV420P16BE,
663 AV_PIX_FMT_YUV422P16LE => Pixel::YUV422P16LE,
664 AV_PIX_FMT_YUV422P16BE => Pixel::YUV422P16BE,
665 AV_PIX_FMT_YUV444P16LE => Pixel::YUV444P16LE,
666 AV_PIX_FMT_YUV444P16BE => Pixel::YUV444P16BE,
667 #[cfg(feature = "ff_api_vdpau")]
668 AV_PIX_FMT_VDPAU_MPEG4 => Pixel::VDPAU_MPEG4,
669 AV_PIX_FMT_DXVA2_VLD => Pixel::DXVA2_VLD,
670
671 AV_PIX_FMT_RGB444LE => Pixel::RGB444LE,
672 AV_PIX_FMT_RGB444BE => Pixel::RGB444BE,
673 AV_PIX_FMT_BGR444LE => Pixel::BGR444LE,
674 AV_PIX_FMT_BGR444BE => Pixel::BGR444BE,
675 AV_PIX_FMT_YA8 => Pixel::YA8,
676
677 AV_PIX_FMT_BGR48BE => Pixel::BGR48BE,
678 AV_PIX_FMT_BGR48LE => Pixel::BGR48LE,
679
680 AV_PIX_FMT_YUV420P9BE => Pixel::YUV420P9BE,
681 AV_PIX_FMT_YUV420P9LE => Pixel::YUV420P9LE,
682 AV_PIX_FMT_YUV420P10BE => Pixel::YUV420P10BE,
683 AV_PIX_FMT_YUV420P10LE => Pixel::YUV420P10LE,
684 AV_PIX_FMT_YUV422P10BE => Pixel::YUV422P10BE,
685 AV_PIX_FMT_YUV422P10LE => Pixel::YUV422P10LE,
686 AV_PIX_FMT_YUV444P9BE => Pixel::YUV444P9BE,
687 AV_PIX_FMT_YUV444P9LE => Pixel::YUV444P9LE,
688 AV_PIX_FMT_YUV444P10BE => Pixel::YUV444P10BE,
689 AV_PIX_FMT_YUV444P10LE => Pixel::YUV444P10LE,
690 AV_PIX_FMT_YUV422P9BE => Pixel::YUV422P9BE,
691 AV_PIX_FMT_YUV422P9LE => Pixel::YUV422P9LE,
692 #[cfg(not(feature = "ffmpeg_4_0"))]
693 AV_PIX_FMT_VDA_VLD => Pixel::VDA_VLD,
694
695 AV_PIX_FMT_GBRP => Pixel::GBRP,
696 AV_PIX_FMT_GBRP9BE => Pixel::GBRP9BE,
697 AV_PIX_FMT_GBRP9LE => Pixel::GBRP9LE,
698 AV_PIX_FMT_GBRP10BE => Pixel::GBRP10BE,
699 AV_PIX_FMT_GBRP10LE => Pixel::GBRP10LE,
700 AV_PIX_FMT_GBRP16BE => Pixel::GBRP16BE,
701 AV_PIX_FMT_GBRP16LE => Pixel::GBRP16LE,
702
703 AV_PIX_FMT_YUVA420P9BE => Pixel::YUVA420P9BE,
704 AV_PIX_FMT_YUVA420P9LE => Pixel::YUVA420P9LE,
705 AV_PIX_FMT_YUVA422P9BE => Pixel::YUVA422P9BE,
706 AV_PIX_FMT_YUVA422P9LE => Pixel::YUVA422P9LE,
707 AV_PIX_FMT_YUVA444P9BE => Pixel::YUVA444P9BE,
708 AV_PIX_FMT_YUVA444P9LE => Pixel::YUVA444P9LE,
709 AV_PIX_FMT_YUVA420P10BE => Pixel::YUVA420P10BE,
710 AV_PIX_FMT_YUVA420P10LE => Pixel::YUVA420P10LE,
711 AV_PIX_FMT_YUVA422P10BE => Pixel::YUVA422P10BE,
712 AV_PIX_FMT_YUVA422P10LE => Pixel::YUVA422P10LE,
713 AV_PIX_FMT_YUVA444P10BE => Pixel::YUVA444P10BE,
714 AV_PIX_FMT_YUVA444P10LE => Pixel::YUVA444P10LE,
715 AV_PIX_FMT_YUVA420P16BE => Pixel::YUVA420P16BE,
716 AV_PIX_FMT_YUVA420P16LE => Pixel::YUVA420P16LE,
717 AV_PIX_FMT_YUVA422P16BE => Pixel::YUVA422P16BE,
718 AV_PIX_FMT_YUVA422P16LE => Pixel::YUVA422P16LE,
719 AV_PIX_FMT_YUVA444P16BE => Pixel::YUVA444P16BE,
720 AV_PIX_FMT_YUVA444P16LE => Pixel::YUVA444P16LE,
721
722 AV_PIX_FMT_VDPAU => Pixel::VDPAU,
723
724 AV_PIX_FMT_XYZ12LE => Pixel::XYZ12LE,
725 AV_PIX_FMT_XYZ12BE => Pixel::XYZ12BE,
726 AV_PIX_FMT_NV16 => Pixel::NV16,
727 AV_PIX_FMT_NV20LE => Pixel::NV20LE,
728 AV_PIX_FMT_NV20BE => Pixel::NV20BE,
729
730 AV_PIX_FMT_RGBA64BE => Pixel::RGBA64BE,
731 AV_PIX_FMT_RGBA64LE => Pixel::RGBA64LE,
732 AV_PIX_FMT_BGRA64BE => Pixel::BGRA64BE,
733 AV_PIX_FMT_BGRA64LE => Pixel::BGRA64LE,
734
735 AV_PIX_FMT_YVYU422 => Pixel::YVYU422,
736
737 #[cfg(not(feature = "ffmpeg_4_0"))]
738 AV_PIX_FMT_VDA => Pixel::VDA,
739
740 AV_PIX_FMT_YA16BE => Pixel::YA16BE,
741 AV_PIX_FMT_YA16LE => Pixel::YA16LE,
742
743 AV_PIX_FMT_QSV => Pixel::QSV,
744 AV_PIX_FMT_MMAL => Pixel::MMAL,
745
746 AV_PIX_FMT_D3D11VA_VLD => Pixel::D3D11VA_VLD,
747
748 AV_PIX_FMT_CUDA => Pixel::CUDA,
749
750 AV_PIX_FMT_0RGB => Pixel::ZRGB,
751 AV_PIX_FMT_RGB0 => Pixel::RGBZ,
752 AV_PIX_FMT_0BGR => Pixel::ZBGR,
753 AV_PIX_FMT_BGR0 => Pixel::BGRZ,
754 AV_PIX_FMT_YUVA444P => Pixel::YUVA444P,
755 AV_PIX_FMT_YUVA422P => Pixel::YUVA422P,
756
757 AV_PIX_FMT_YUV420P12BE => Pixel::YUV420P12BE,
758 AV_PIX_FMT_YUV420P12LE => Pixel::YUV420P12LE,
759 AV_PIX_FMT_YUV420P14BE => Pixel::YUV420P14BE,
760 AV_PIX_FMT_YUV420P14LE => Pixel::YUV420P14LE,
761 AV_PIX_FMT_YUV422P12BE => Pixel::YUV422P12BE,
762 AV_PIX_FMT_YUV422P12LE => Pixel::YUV422P12LE,
763 AV_PIX_FMT_YUV422P14BE => Pixel::YUV422P14BE,
764 AV_PIX_FMT_YUV422P14LE => Pixel::YUV422P14LE,
765 AV_PIX_FMT_YUV444P12BE => Pixel::YUV444P12BE,
766 AV_PIX_FMT_YUV444P12LE => Pixel::YUV444P12LE,
767 AV_PIX_FMT_YUV444P14BE => Pixel::YUV444P14BE,
768 AV_PIX_FMT_YUV444P14LE => Pixel::YUV444P14LE,
769 AV_PIX_FMT_GBRP12BE => Pixel::GBRP12BE,
770 AV_PIX_FMT_GBRP12LE => Pixel::GBRP12LE,
771 AV_PIX_FMT_GBRP14BE => Pixel::GBRP14BE,
772 AV_PIX_FMT_GBRP14LE => Pixel::GBRP14LE,
773 AV_PIX_FMT_GBRAP => Pixel::GBRAP,
774 AV_PIX_FMT_GBRAP16BE => Pixel::GBRAP16BE,
775 AV_PIX_FMT_GBRAP16LE => Pixel::GBRAP16LE,
776 AV_PIX_FMT_YUVJ411P => Pixel::YUVJ411P,
777
778 AV_PIX_FMT_BAYER_BGGR8 => Pixel::BAYER_BGGR8,
779 AV_PIX_FMT_BAYER_RGGB8 => Pixel::BAYER_RGGB8,
780 AV_PIX_FMT_BAYER_GBRG8 => Pixel::BAYER_GBRG8,
781 AV_PIX_FMT_BAYER_GRBG8 => Pixel::BAYER_GRBG8,
782 AV_PIX_FMT_BAYER_BGGR16LE => Pixel::BAYER_BGGR16LE,
783 AV_PIX_FMT_BAYER_BGGR16BE => Pixel::BAYER_BGGR16BE,
784 AV_PIX_FMT_BAYER_RGGB16LE => Pixel::BAYER_RGGB16LE,
785 AV_PIX_FMT_BAYER_RGGB16BE => Pixel::BAYER_RGGB16BE,
786 AV_PIX_FMT_BAYER_GBRG16LE => Pixel::BAYER_GBRG16LE,
787 AV_PIX_FMT_BAYER_GBRG16BE => Pixel::BAYER_GBRG16BE,
788 AV_PIX_FMT_BAYER_GRBG16LE => Pixel::BAYER_GRBG16LE,
789 AV_PIX_FMT_BAYER_GRBG16BE => Pixel::BAYER_GRBG16BE,
790
791 AV_PIX_FMT_YUV440P10LE => Pixel::YUV440P10LE,
792 AV_PIX_FMT_YUV440P10BE => Pixel::YUV440P10BE,
793 AV_PIX_FMT_YUV440P12LE => Pixel::YUV440P12LE,
794 AV_PIX_FMT_YUV440P12BE => Pixel::YUV440P12BE,
795 AV_PIX_FMT_AYUV64LE => Pixel::AYUV64LE,
796 AV_PIX_FMT_AYUV64BE => Pixel::AYUV64BE,
797
798 AV_PIX_FMT_VIDEOTOOLBOX => Pixel::VIDEOTOOLBOX,
799
800 AV_PIX_FMT_P010LE => Pixel::P010LE,
801 AV_PIX_FMT_P010BE => Pixel::P010BE,
802 AV_PIX_FMT_GBRAP12BE => Pixel::GBRAP12BE,
803 AV_PIX_FMT_GBRAP12LE => Pixel::GBRAP12LE,
804 AV_PIX_FMT_GBRAP10LE => Pixel::GBRAP10LE,
805 AV_PIX_FMT_GBRAP10BE => Pixel::GBRAP10BE,
806 AV_PIX_FMT_MEDIACODEC => Pixel::MEDIACODEC,
807 AV_PIX_FMT_GRAY12BE => Pixel::GRAY12BE,
808 AV_PIX_FMT_GRAY12LE => Pixel::GRAY12LE,
809 AV_PIX_FMT_GRAY10BE => Pixel::GRAY10BE,
810 AV_PIX_FMT_GRAY10LE => Pixel::GRAY10LE,
811 AV_PIX_FMT_P016LE => Pixel::P016LE,
812 AV_PIX_FMT_P016BE => Pixel::P016BE,
813
814 AV_PIX_FMT_NB => Pixel::None,
815
816 AV_PIX_FMT_D3D11 => Pixel::D3D11,
817 AV_PIX_FMT_GRAY9BE => Pixel::GRAY9BE,
818 AV_PIX_FMT_GRAY9LE => Pixel::GRAY9LE,
819 AV_PIX_FMT_GBRPF32BE => Pixel::GBRPF32BE,
820 AV_PIX_FMT_GBRPF32LE => Pixel::GBRPF32LE,
821 AV_PIX_FMT_GBRAPF32BE => Pixel::GBRAPF32BE,
822 AV_PIX_FMT_GBRAPF32LE => Pixel::GBRAPF32LE,
823 AV_PIX_FMT_DRM_PRIME => Pixel::DRM_PRIME,
824
825 #[cfg(feature = "ffmpeg_4_0")]
826 AV_PIX_FMT_OPENCL => Pixel::OPENCL,
827
828 #[cfg(feature = "ffmpeg_4_1")]
829 AV_PIX_FMT_GRAY14BE => Pixel::GRAY14BE,
830 #[cfg(feature = "ffmpeg_4_1")]
831 AV_PIX_FMT_GRAY14LE => Pixel::GRAY14LE,
832 #[cfg(feature = "ffmpeg_4_1")]
833 AV_PIX_FMT_GRAYF32BE => Pixel::GRAYF32BE,
834 #[cfg(feature = "ffmpeg_4_1")]
835 AV_PIX_FMT_GRAYF32LE => Pixel::GRAYF32LE,
836
837 #[cfg(feature = "ffmpeg_4_2")]
838 AV_PIX_FMT_YUVA422P12BE => Pixel::YUVA422P12BE,
839 #[cfg(feature = "ffmpeg_4_2")]
840 AV_PIX_FMT_YUVA422P12LE => Pixel::YUVA422P12LE,
841 #[cfg(feature = "ffmpeg_4_2")]
842 AV_PIX_FMT_YUVA444P12BE => Pixel::YUVA444P12BE,
843 #[cfg(feature = "ffmpeg_4_2")]
844 AV_PIX_FMT_YUVA444P12LE => Pixel::YUVA444P12LE,
845 #[cfg(feature = "ffmpeg_4_2")]
846 AV_PIX_FMT_NV24 => Pixel::NV24,
847 #[cfg(feature = "ffmpeg_4_2")]
848 AV_PIX_FMT_NV42 => Pixel::NV42,
849
850 #[cfg(feature = "ffmpeg_4_3")]
851 AV_PIX_FMT_VULKAN => Pixel::VULKAN,
852 #[cfg(feature = "ffmpeg_4_3")]
853 AV_PIX_FMT_Y210BE => Pixel::Y210BE,
854 #[cfg(feature = "ffmpeg_4_3")]
855 AV_PIX_FMT_Y210LE => Pixel::Y210LE,
856
857 #[cfg(feature = "ffmpeg_4_4")]
858 AV_PIX_FMT_X2RGB10LE => Pixel::X2RGB10LE,
859 #[cfg(feature = "ffmpeg_4_4")]
860 AV_PIX_FMT_X2RGB10BE => Pixel::X2RGB10BE,
861
862 #[cfg(feature = "ffmpeg_5_0")]
863 AV_PIX_FMT_X2BGR10LE => Pixel::X2BGR10LE,
864 #[cfg(feature = "ffmpeg_5_0")]
865 AV_PIX_FMT_X2BGR10BE => Pixel::X2BGR10BE,
866 #[cfg(feature = "ffmpeg_5_0")]
867 AV_PIX_FMT_P210BE => Pixel::P210BE,
868 #[cfg(feature = "ffmpeg_5_0")]
869 AV_PIX_FMT_P210LE => Pixel::P210LE,
870 #[cfg(feature = "ffmpeg_5_0")]
871 AV_PIX_FMT_P410BE => Pixel::P410BE,
872 #[cfg(feature = "ffmpeg_5_0")]
873 AV_PIX_FMT_P410LE => Pixel::P410LE,
874 #[cfg(feature = "ffmpeg_5_0")]
875 AV_PIX_FMT_P216BE => Pixel::P216BE,
876 #[cfg(feature = "ffmpeg_5_0")]
877 AV_PIX_FMT_P216LE => Pixel::P216LE,
878 #[cfg(feature = "ffmpeg_5_0")]
879 AV_PIX_FMT_P416BE => Pixel::P416BE,
880 #[cfg(feature = "ffmpeg_5_0")]
881 AV_PIX_FMT_P416LE => Pixel::P416LE,
882
883 #[cfg(feature = "ffmpeg_6_0")]
884 AV_PIX_FMT_VUYA => Pixel::VUYA,
885 #[cfg(feature = "ffmpeg_6_0")]
886 AV_PIX_FMT_RGBAF16BE => Pixel::RGBAF16BE,
887 #[cfg(feature = "ffmpeg_6_0")]
888 AV_PIX_FMT_RGBAF16LE => Pixel::RGBAF16LE,
889 #[cfg(feature = "ffmpeg_6_0")]
890 AV_PIX_FMT_VUYX => Pixel::VUYX,
891 #[cfg(feature = "ffmpeg_6_0")]
892 AV_PIX_FMT_P012LE => Pixel::P012LE,
893 #[cfg(feature = "ffmpeg_6_0")]
894 AV_PIX_FMT_P012BE => Pixel::P012BE,
895 #[cfg(feature = "ffmpeg_6_0")]
896 AV_PIX_FMT_Y212BE => Pixel::Y212BE,
897 #[cfg(feature = "ffmpeg_6_0")]
898 AV_PIX_FMT_Y212LE => Pixel::Y212LE,
899 #[cfg(feature = "ffmpeg_6_0")]
900 AV_PIX_FMT_XV30BE => Pixel::XV30BE,
901 #[cfg(feature = "ffmpeg_6_0")]
902 AV_PIX_FMT_XV30LE => Pixel::XV30LE,
903 #[cfg(feature = "ffmpeg_6_0")]
904 AV_PIX_FMT_XV36BE => Pixel::XV36BE,
905 #[cfg(feature = "ffmpeg_6_0")]
906 AV_PIX_FMT_XV36LE => Pixel::XV36LE,
907 #[cfg(feature = "ffmpeg_6_0")]
908 AV_PIX_FMT_RGBF32BE => Pixel::RGBF32BE,
909 #[cfg(feature = "ffmpeg_6_0")]
910 AV_PIX_FMT_RGBF32LE => Pixel::RGBF32LE,
911 #[cfg(feature = "ffmpeg_6_0")]
912 AV_PIX_FMT_RGBAF32BE => Pixel::RGBAF32BE,
913 #[cfg(feature = "ffmpeg_6_0")]
914 AV_PIX_FMT_RGBAF32LE => Pixel::RGBAF32LE,
915
916 #[cfg(feature = "ffmpeg_6_1")]
917 AV_PIX_FMT_P212BE => Pixel::P212BE,
918 #[cfg(feature = "ffmpeg_6_1")]
919 AV_PIX_FMT_P212LE => Pixel::P212LE,
920 #[cfg(feature = "ffmpeg_6_1")]
921 AV_PIX_FMT_P412BE => Pixel::P412BE,
922 #[cfg(feature = "ffmpeg_6_1")]
923 AV_PIX_FMT_P412LE => Pixel::P412LE,
924 #[cfg(feature = "ffmpeg_6_1")]
925 AV_PIX_FMT_GBRAP14BE => Pixel::GBRAP14BE,
926 #[cfg(feature = "ffmpeg_6_1")]
927 AV_PIX_FMT_GBRAP14LE => Pixel::GBRAP14LE,
928
929 #[cfg(feature = "ffmpeg_7_0")]
930 AV_PIX_FMT_D3D12 => Pixel::D3D12,
931
932 #[cfg(feature = "ffmpeg_8_0")]
933 AV_PIX_FMT_AYUV => Pixel::AYUV,
934 #[cfg(feature = "ffmpeg_8_0")]
935 AV_PIX_FMT_UYVA => Pixel::UYVA,
936 #[cfg(feature = "ffmpeg_8_0")]
937 AV_PIX_FMT_VYU444 => Pixel::VYU444,
938 #[cfg(feature = "ffmpeg_8_0")]
939 AV_PIX_FMT_V30XLE => Pixel::V30XLE,
940 #[cfg(feature = "ffmpeg_8_0")]
941 AV_PIX_FMT_V30XBE => Pixel::V30XBE,
942 #[cfg(feature = "ffmpeg_8_0")]
943 AV_PIX_FMT_RGBF16LE => Pixel::RGBF16LE,
944 #[cfg(feature = "ffmpeg_8_0")]
945 AV_PIX_FMT_RGBF16BE => Pixel::RGBF16BE,
946 #[cfg(feature = "ffmpeg_8_0")]
947 AV_PIX_FMT_RGB96LE => Pixel::RGB96LE,
948 #[cfg(feature = "ffmpeg_8_0")]
949 AV_PIX_FMT_RGB96BE => Pixel::RGB96BE,
950 #[cfg(feature = "ffmpeg_8_0")]
951 AV_PIX_FMT_RGBA128LE => Pixel::RGBA128LE,
952 #[cfg(feature = "ffmpeg_8_0")]
953 AV_PIX_FMT_RGBA128BE => Pixel::RGBA128BE,
954 #[cfg(feature = "ffmpeg_8_0")]
955 AV_PIX_FMT_Y216LE => Pixel::Y216LE,
956 #[cfg(feature = "ffmpeg_8_0")]
957 AV_PIX_FMT_Y216BE => Pixel::Y216BE,
958 #[cfg(feature = "ffmpeg_8_0")]
959 AV_PIX_FMT_XV48LE => Pixel::XV48LE,
960 #[cfg(feature = "ffmpeg_8_0")]
961 AV_PIX_FMT_XV48BE => Pixel::XV48BE,
962 #[cfg(feature = "ffmpeg_8_0")]
963 AV_PIX_FMT_GBRPF16BE => Pixel::GBRPF16BE,
964 #[cfg(feature = "ffmpeg_8_0")]
965 AV_PIX_FMT_GBRPF16LE => Pixel::GBRPF16LE,
966 #[cfg(feature = "ffmpeg_8_0")]
967 AV_PIX_FMT_GBRAPF16BE => Pixel::GBRAPF16BE,
968 #[cfg(feature = "ffmpeg_8_0")]
969 AV_PIX_FMT_GBRAPF16LE => Pixel::GBRAPF16LE,
970 #[cfg(feature = "ffmpeg_8_0")]
971 AV_PIX_FMT_GRAYF16BE => Pixel::GRAYF16BE,
972 #[cfg(feature = "ffmpeg_8_0")]
973 AV_PIX_FMT_GRAYF16LE => Pixel::GRAYF16LE,
974 #[cfg(feature = "ffmpeg_8_0")]
975 AV_PIX_FMT_AMF_SURFACE => Pixel::AMF_SURFACE,
976 #[cfg(feature = "ffmpeg_8_0")]
977 AV_PIX_FMT_GRAY32BE => Pixel::GRAY32BE,
978 #[cfg(feature = "ffmpeg_8_0")]
979 AV_PIX_FMT_GRAY32LE => Pixel::GRAY32LE,
980 #[cfg(feature = "ffmpeg_8_0")]
981 AV_PIX_FMT_YAF16BE => Pixel::YAF16BE,
982 #[cfg(feature = "ffmpeg_8_0")]
983 AV_PIX_FMT_YAF16LE => Pixel::YAF16LE,
984 #[cfg(feature = "ffmpeg_8_0")]
985 AV_PIX_FMT_YAF32BE => Pixel::YAF32BE,
986 #[cfg(feature = "ffmpeg_8_0")]
987 AV_PIX_FMT_YAF32LE => Pixel::YAF32LE,
988 #[cfg(feature = "ffmpeg_8_0")]
989 AV_PIX_FMT_GBRAP32BE => Pixel::GBRAP32BE,
990 #[cfg(feature = "ffmpeg_8_0")]
991 AV_PIX_FMT_GBRAP32LE => Pixel::GBRAP32LE,
992 #[cfg(feature = "ffmpeg_8_0")]
993 AV_PIX_FMT_OHCODEC => Pixel::OHCODEC,
994 #[cfg(feature = "ffmpeg_8_0")]
995 AV_PIX_FMT_YUV444P10MSBBE => Pixel::YUV444P10MSBBE,
996 #[cfg(feature = "ffmpeg_8_0")]
997 AV_PIX_FMT_YUV444P10MSBLE => Pixel::YUV444P10MSBLE,
998 #[cfg(feature = "ffmpeg_8_0")]
999 AV_PIX_FMT_YUV444P12MSBBE => Pixel::YUV444P12MSBBE,
1000 #[cfg(feature = "ffmpeg_8_0")]
1001 AV_PIX_FMT_YUV444P12MSBLE => Pixel::YUV444P12MSBLE,
1002 #[cfg(feature = "ffmpeg_8_0")]
1003 AV_PIX_FMT_GBRP10MSBBE => Pixel::GBRP10MSBBE,
1004 #[cfg(feature = "ffmpeg_8_0")]
1005 AV_PIX_FMT_GBRP10MSBLE => Pixel::GBRP10MSBLE,
1006 #[cfg(feature = "ffmpeg_8_0")]
1007 AV_PIX_FMT_GBRP12MSBBE => Pixel::GBRP12MSBBE,
1008 #[cfg(feature = "ffmpeg_8_0")]
1009 AV_PIX_FMT_GBRP12MSBLE => Pixel::GBRP12MSBLE,
1010
1011 #[cfg(feature = "rpi")]
1012 AV_PIX_FMT_SAND128 => Pixel::SAND128,
1013 #[cfg(feature = "rpi")]
1014 AV_PIX_FMT_SAND64_10 => Pixel::SAND64_10,
1015 #[cfg(feature = "rpi")]
1016 AV_PIX_FMT_SAND64_16 => Pixel::SAND64_16,
1017 #[cfg(feature = "rpi")]
1018 AV_PIX_FMT_RPI4_8 => Pixel::RPI4_8,
1019 #[cfg(feature = "rpi")]
1020 AV_PIX_FMT_RPI4_10 => Pixel::RPI4_10,
1021
1022 #[cfg(feature = "non-exhaustive-enums")]
1023 _ => unimplemented!(),
1024 }
1025 }
1026}
1027
1028impl From<Pixel> for AVPixelFormat {
1029 #[inline]
1030 fn from(value: Pixel) -> AVPixelFormat {
1031 match value {
1032 Pixel::None => AV_PIX_FMT_NONE,
1033
1034 Pixel::YUV420P => AV_PIX_FMT_YUV420P,
1035 Pixel::YUYV422 => AV_PIX_FMT_YUYV422,
1036 Pixel::RGB24 => AV_PIX_FMT_RGB24,
1037 Pixel::BGR24 => AV_PIX_FMT_BGR24,
1038 Pixel::YUV422P => AV_PIX_FMT_YUV422P,
1039 Pixel::YUV444P => AV_PIX_FMT_YUV444P,
1040 Pixel::YUV410P => AV_PIX_FMT_YUV410P,
1041 Pixel::YUV411P => AV_PIX_FMT_YUV411P,
1042 Pixel::GRAY8 => AV_PIX_FMT_GRAY8,
1043 Pixel::MonoWhite => AV_PIX_FMT_MONOWHITE,
1044 Pixel::MonoBlack => AV_PIX_FMT_MONOBLACK,
1045 Pixel::PAL8 => AV_PIX_FMT_PAL8,
1046 Pixel::YUVJ420P => AV_PIX_FMT_YUVJ420P,
1047 Pixel::YUVJ422P => AV_PIX_FMT_YUVJ422P,
1048 Pixel::YUVJ444P => AV_PIX_FMT_YUVJ444P,
1049 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
1050 Pixel::XVMC_MPEG2_MC => AV_PIX_FMT_XVMC_MPEG2_MC,
1051 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
1052 Pixel::XVMC_MPEG2_IDCT => AV_PIX_FMT_XVMC_MPEG2_IDCT,
1053 Pixel::UYVY422 => AV_PIX_FMT_UYVY422,
1054 Pixel::UYYVYY411 => AV_PIX_FMT_UYYVYY411,
1055 Pixel::BGR8 => AV_PIX_FMT_BGR8,
1056 Pixel::BGR4 => AV_PIX_FMT_BGR4,
1057 Pixel::BGR4_BYTE => AV_PIX_FMT_BGR4_BYTE,
1058 Pixel::RGB8 => AV_PIX_FMT_RGB8,
1059 Pixel::RGB4 => AV_PIX_FMT_RGB4,
1060 Pixel::RGB4_BYTE => AV_PIX_FMT_RGB4_BYTE,
1061 Pixel::NV12 => AV_PIX_FMT_NV12,
1062 Pixel::NV21 => AV_PIX_FMT_NV21,
1063
1064 Pixel::ARGB => AV_PIX_FMT_ARGB,
1065 Pixel::RGBA => AV_PIX_FMT_RGBA,
1066 Pixel::ABGR => AV_PIX_FMT_ABGR,
1067 Pixel::BGRA => AV_PIX_FMT_BGRA,
1068
1069 Pixel::GRAY16BE => AV_PIX_FMT_GRAY16BE,
1070 Pixel::GRAY16LE => AV_PIX_FMT_GRAY16LE,
1071 Pixel::YUV440P => AV_PIX_FMT_YUV440P,
1072 Pixel::YUVJ440P => AV_PIX_FMT_YUVJ440P,
1073 Pixel::YUVA420P => AV_PIX_FMT_YUVA420P,
1074 #[cfg(feature = "ff_api_vdpau")]
1075 Pixel::VDPAU_H264 => AV_PIX_FMT_VDPAU_H264,
1076 #[cfg(feature = "ff_api_vdpau")]
1077 Pixel::VDPAU_MPEG1 => AV_PIX_FMT_VDPAU_MPEG1,
1078 #[cfg(feature = "ff_api_vdpau")]
1079 Pixel::VDPAU_MPEG2 => AV_PIX_FMT_VDPAU_MPEG2,
1080 #[cfg(feature = "ff_api_vdpau")]
1081 Pixel::VDPAU_WMV3 => AV_PIX_FMT_VDPAU_WMV3,
1082 #[cfg(feature = "ff_api_vdpau")]
1083 Pixel::VDPAU_VC1 => AV_PIX_FMT_VDPAU_VC1,
1084 Pixel::RGB48BE => AV_PIX_FMT_RGB48BE,
1085 Pixel::RGB48LE => AV_PIX_FMT_RGB48LE,
1086
1087 Pixel::RGB565BE => AV_PIX_FMT_RGB565BE,
1088 Pixel::RGB565LE => AV_PIX_FMT_RGB565LE,
1089 Pixel::RGB555BE => AV_PIX_FMT_RGB555BE,
1090 Pixel::RGB555LE => AV_PIX_FMT_RGB555LE,
1091
1092 Pixel::BGR565BE => AV_PIX_FMT_BGR565BE,
1093 Pixel::BGR565LE => AV_PIX_FMT_BGR565LE,
1094 Pixel::BGR555BE => AV_PIX_FMT_BGR555BE,
1095 Pixel::BGR555LE => AV_PIX_FMT_BGR555LE,
1096
1097 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
1098 Pixel::VAAPI_MOCO => AV_PIX_FMT_VAAPI_MOCO,
1099 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
1100 Pixel::VAAPI_IDCT => AV_PIX_FMT_VAAPI_IDCT,
1101 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
1102 Pixel::VAAPI_VLD => AV_PIX_FMT_VAAPI_VLD,
1103 #[cfg(not(feature = "ff_api_vaapi"))]
1104 Pixel::VAAPI => AV_PIX_FMT_VAAPI,
1105
1106 Pixel::YUV420P16LE => AV_PIX_FMT_YUV420P16LE,
1107 Pixel::YUV420P16BE => AV_PIX_FMT_YUV420P16BE,
1108 Pixel::YUV422P16LE => AV_PIX_FMT_YUV422P16LE,
1109 Pixel::YUV422P16BE => AV_PIX_FMT_YUV422P16BE,
1110 Pixel::YUV444P16LE => AV_PIX_FMT_YUV444P16LE,
1111 Pixel::YUV444P16BE => AV_PIX_FMT_YUV444P16BE,
1112 #[cfg(feature = "ff_api_vdpau")]
1113 Pixel::VDPAU_MPEG4 => AV_PIX_FMT_VDPAU_MPEG4,
1114 Pixel::DXVA2_VLD => AV_PIX_FMT_DXVA2_VLD,
1115
1116 Pixel::RGB444LE => AV_PIX_FMT_RGB444LE,
1117 Pixel::RGB444BE => AV_PIX_FMT_RGB444BE,
1118 Pixel::BGR444LE => AV_PIX_FMT_BGR444LE,
1119 Pixel::BGR444BE => AV_PIX_FMT_BGR444BE,
1120 Pixel::YA8 => AV_PIX_FMT_YA8,
1121
1122 Pixel::BGR48BE => AV_PIX_FMT_BGR48BE,
1123 Pixel::BGR48LE => AV_PIX_FMT_BGR48LE,
1124
1125 Pixel::YUV420P9BE => AV_PIX_FMT_YUV420P9BE,
1126 Pixel::YUV420P9LE => AV_PIX_FMT_YUV420P9LE,
1127 Pixel::YUV420P10BE => AV_PIX_FMT_YUV420P10BE,
1128 Pixel::YUV420P10LE => AV_PIX_FMT_YUV420P10LE,
1129 Pixel::YUV422P10BE => AV_PIX_FMT_YUV422P10BE,
1130 Pixel::YUV422P10LE => AV_PIX_FMT_YUV422P10LE,
1131 Pixel::YUV444P9BE => AV_PIX_FMT_YUV444P9BE,
1132 Pixel::YUV444P9LE => AV_PIX_FMT_YUV444P9LE,
1133 Pixel::YUV444P10BE => AV_PIX_FMT_YUV444P10BE,
1134 Pixel::YUV444P10LE => AV_PIX_FMT_YUV444P10LE,
1135 Pixel::YUV422P9BE => AV_PIX_FMT_YUV422P9BE,
1136 Pixel::YUV422P9LE => AV_PIX_FMT_YUV422P9LE,
1137 #[cfg(not(feature = "ffmpeg_4_0"))]
1138 Pixel::VDA_VLD => AV_PIX_FMT_VDA_VLD,
1139
1140 Pixel::GBRP => AV_PIX_FMT_GBRP,
1141 Pixel::GBRP9BE => AV_PIX_FMT_GBRP9BE,
1142 Pixel::GBRP9LE => AV_PIX_FMT_GBRP9LE,
1143 Pixel::GBRP10BE => AV_PIX_FMT_GBRP10BE,
1144 Pixel::GBRP10LE => AV_PIX_FMT_GBRP10LE,
1145 Pixel::GBRP16BE => AV_PIX_FMT_GBRP16BE,
1146 Pixel::GBRP16LE => AV_PIX_FMT_GBRP16LE,
1147
1148 Pixel::YUVA420P9BE => AV_PIX_FMT_YUVA420P9BE,
1149 Pixel::YUVA420P9LE => AV_PIX_FMT_YUVA420P9LE,
1150 Pixel::YUVA422P9BE => AV_PIX_FMT_YUVA422P9BE,
1151 Pixel::YUVA422P9LE => AV_PIX_FMT_YUVA422P9LE,
1152 Pixel::YUVA444P9BE => AV_PIX_FMT_YUVA444P9BE,
1153 Pixel::YUVA444P9LE => AV_PIX_FMT_YUVA444P9LE,
1154 Pixel::YUVA420P10BE => AV_PIX_FMT_YUVA420P10BE,
1155 Pixel::YUVA420P10LE => AV_PIX_FMT_YUVA420P10LE,
1156 Pixel::YUVA422P10BE => AV_PIX_FMT_YUVA422P10BE,
1157 Pixel::YUVA422P10LE => AV_PIX_FMT_YUVA422P10LE,
1158 Pixel::YUVA444P10BE => AV_PIX_FMT_YUVA444P10BE,
1159 Pixel::YUVA444P10LE => AV_PIX_FMT_YUVA444P10LE,
1160 Pixel::YUVA420P16BE => AV_PIX_FMT_YUVA420P16BE,
1161 Pixel::YUVA420P16LE => AV_PIX_FMT_YUVA420P16LE,
1162 Pixel::YUVA422P16BE => AV_PIX_FMT_YUVA422P16BE,
1163 Pixel::YUVA422P16LE => AV_PIX_FMT_YUVA422P16LE,
1164 Pixel::YUVA444P16BE => AV_PIX_FMT_YUVA444P16BE,
1165 Pixel::YUVA444P16LE => AV_PIX_FMT_YUVA444P16LE,
1166
1167 Pixel::VDPAU => AV_PIX_FMT_VDPAU,
1168
1169 Pixel::XYZ12LE => AV_PIX_FMT_XYZ12LE,
1170 Pixel::XYZ12BE => AV_PIX_FMT_XYZ12BE,
1171 Pixel::NV16 => AV_PIX_FMT_NV16,
1172 Pixel::NV20LE => AV_PIX_FMT_NV20LE,
1173 Pixel::NV20BE => AV_PIX_FMT_NV20BE,
1174
1175 Pixel::RGBA64BE => AV_PIX_FMT_RGBA64BE,
1176 Pixel::RGBA64LE => AV_PIX_FMT_RGBA64LE,
1177 Pixel::BGRA64BE => AV_PIX_FMT_BGRA64BE,
1178 Pixel::BGRA64LE => AV_PIX_FMT_BGRA64LE,
1179
1180 Pixel::YVYU422 => AV_PIX_FMT_YVYU422,
1181
1182 #[cfg(not(feature = "ffmpeg_4_0"))]
1183 Pixel::VDA => AV_PIX_FMT_VDA,
1184
1185 Pixel::YA16BE => AV_PIX_FMT_YA16BE,
1186 Pixel::YA16LE => AV_PIX_FMT_YA16LE,
1187
1188 Pixel::QSV => AV_PIX_FMT_QSV,
1189 Pixel::MMAL => AV_PIX_FMT_MMAL,
1190
1191 Pixel::D3D11VA_VLD => AV_PIX_FMT_D3D11VA_VLD,
1192
1193 Pixel::CUDA => AV_PIX_FMT_CUDA,
1194
1195 Pixel::ZRGB => AV_PIX_FMT_0RGB,
1196 Pixel::RGBZ => AV_PIX_FMT_RGB0,
1197 Pixel::ZBGR => AV_PIX_FMT_0BGR,
1198 Pixel::BGRZ => AV_PIX_FMT_BGR0,
1199 Pixel::YUVA444P => AV_PIX_FMT_YUVA444P,
1200 Pixel::YUVA422P => AV_PIX_FMT_YUVA422P,
1201
1202 Pixel::YUV420P12BE => AV_PIX_FMT_YUV420P12BE,
1203 Pixel::YUV420P12LE => AV_PIX_FMT_YUV420P12LE,
1204 Pixel::YUV420P14BE => AV_PIX_FMT_YUV420P14BE,
1205 Pixel::YUV420P14LE => AV_PIX_FMT_YUV420P14LE,
1206 Pixel::YUV422P12BE => AV_PIX_FMT_YUV422P12BE,
1207 Pixel::YUV422P12LE => AV_PIX_FMT_YUV422P12LE,
1208 Pixel::YUV422P14BE => AV_PIX_FMT_YUV422P14BE,
1209 Pixel::YUV422P14LE => AV_PIX_FMT_YUV422P14LE,
1210 Pixel::YUV444P12BE => AV_PIX_FMT_YUV444P12BE,
1211 Pixel::YUV444P12LE => AV_PIX_FMT_YUV444P12LE,
1212 Pixel::YUV444P14BE => AV_PIX_FMT_YUV444P14BE,
1213 Pixel::YUV444P14LE => AV_PIX_FMT_YUV444P14LE,
1214 Pixel::GBRP12BE => AV_PIX_FMT_GBRP12BE,
1215 Pixel::GBRP12LE => AV_PIX_FMT_GBRP12LE,
1216 Pixel::GBRP14BE => AV_PIX_FMT_GBRP14BE,
1217 Pixel::GBRP14LE => AV_PIX_FMT_GBRP14LE,
1218 Pixel::GBRAP => AV_PIX_FMT_GBRAP,
1219 Pixel::GBRAP16BE => AV_PIX_FMT_GBRAP16BE,
1220 Pixel::GBRAP16LE => AV_PIX_FMT_GBRAP16LE,
1221 Pixel::YUVJ411P => AV_PIX_FMT_YUVJ411P,
1222
1223 Pixel::BAYER_BGGR8 => AV_PIX_FMT_BAYER_BGGR8,
1224 Pixel::BAYER_RGGB8 => AV_PIX_FMT_BAYER_RGGB8,
1225 Pixel::BAYER_GBRG8 => AV_PIX_FMT_BAYER_GBRG8,
1226 Pixel::BAYER_GRBG8 => AV_PIX_FMT_BAYER_GRBG8,
1227 Pixel::BAYER_BGGR16LE => AV_PIX_FMT_BAYER_BGGR16LE,
1228 Pixel::BAYER_BGGR16BE => AV_PIX_FMT_BAYER_BGGR16BE,
1229 Pixel::BAYER_RGGB16LE => AV_PIX_FMT_BAYER_RGGB16LE,
1230 Pixel::BAYER_RGGB16BE => AV_PIX_FMT_BAYER_RGGB16BE,
1231 Pixel::BAYER_GBRG16LE => AV_PIX_FMT_BAYER_GBRG16LE,
1232 Pixel::BAYER_GBRG16BE => AV_PIX_FMT_BAYER_GBRG16BE,
1233 Pixel::BAYER_GRBG16LE => AV_PIX_FMT_BAYER_GRBG16LE,
1234 Pixel::BAYER_GRBG16BE => AV_PIX_FMT_BAYER_GRBG16BE,
1235
1236 Pixel::YUV440P10LE => AV_PIX_FMT_YUV440P10LE,
1237 Pixel::YUV440P10BE => AV_PIX_FMT_YUV440P10BE,
1238 Pixel::YUV440P12LE => AV_PIX_FMT_YUV440P12LE,
1239 Pixel::YUV440P12BE => AV_PIX_FMT_YUV440P12BE,
1240 Pixel::AYUV64LE => AV_PIX_FMT_AYUV64LE,
1241 Pixel::AYUV64BE => AV_PIX_FMT_AYUV64BE,
1242
1243 Pixel::VIDEOTOOLBOX => AV_PIX_FMT_VIDEOTOOLBOX,
1244
1245 #[cfg(all(feature = "ffmpeg_4_0", not(feature = "ffmpeg_7_0")))]
1247 Pixel::XVMC => AV_PIX_FMT_XVMC,
1248
1249 Pixel::RGB32 => AV_PIX_FMT_RGB32,
1250 Pixel::RGB32_1 => AV_PIX_FMT_RGB32_1,
1251 Pixel::BGR32 => AV_PIX_FMT_BGR32,
1252 Pixel::BGR32_1 => AV_PIX_FMT_BGR32_1,
1253 Pixel::ZRGB32 => AV_PIX_FMT_0RGB32,
1254 Pixel::ZBGR32 => AV_PIX_FMT_0BGR32,
1255
1256 Pixel::GRAY16 => AV_PIX_FMT_GRAY16,
1257 Pixel::YA16 => AV_PIX_FMT_YA16,
1258 Pixel::RGB48 => AV_PIX_FMT_RGB48,
1259 Pixel::RGB565 => AV_PIX_FMT_RGB565,
1260 Pixel::RGB555 => AV_PIX_FMT_RGB555,
1261 Pixel::RGB444 => AV_PIX_FMT_RGB444,
1262 Pixel::BGR48 => AV_PIX_FMT_BGR48,
1263 Pixel::BGR565 => AV_PIX_FMT_BGR565,
1264 Pixel::BGR555 => AV_PIX_FMT_BGR555,
1265 Pixel::BGR444 => AV_PIX_FMT_BGR444,
1266
1267 Pixel::YUV420P9 => AV_PIX_FMT_YUV420P9,
1268 Pixel::YUV422P9 => AV_PIX_FMT_YUV422P9,
1269 Pixel::YUV444P9 => AV_PIX_FMT_YUV444P9,
1270 Pixel::YUV420P10 => AV_PIX_FMT_YUV420P10,
1271 Pixel::YUV422P10 => AV_PIX_FMT_YUV422P10,
1272 Pixel::YUV440P10 => AV_PIX_FMT_YUV440P10,
1273 Pixel::YUV444P10 => AV_PIX_FMT_YUV444P10,
1274 Pixel::YUV420P12 => AV_PIX_FMT_YUV420P12,
1275 Pixel::YUV422P12 => AV_PIX_FMT_YUV422P12,
1276 Pixel::YUV440P12 => AV_PIX_FMT_YUV440P12,
1277 Pixel::YUV444P12 => AV_PIX_FMT_YUV444P12,
1278 Pixel::YUV420P14 => AV_PIX_FMT_YUV420P14,
1279 Pixel::YUV422P14 => AV_PIX_FMT_YUV422P14,
1280 Pixel::YUV444P14 => AV_PIX_FMT_YUV444P14,
1281 Pixel::YUV420P16 => AV_PIX_FMT_YUV420P16,
1282 Pixel::YUV422P16 => AV_PIX_FMT_YUV422P16,
1283 Pixel::YUV444P16 => AV_PIX_FMT_YUV444P16,
1284
1285 Pixel::GBRP9 => AV_PIX_FMT_GBRP9,
1286 Pixel::GBRP10 => AV_PIX_FMT_GBRP10,
1287 Pixel::GBRP12 => AV_PIX_FMT_GBRP12,
1288 Pixel::GBRP14 => AV_PIX_FMT_GBRP14,
1289 Pixel::GBRP16 => AV_PIX_FMT_GBRP16,
1290 Pixel::GBRAP16 => AV_PIX_FMT_GBRAP16,
1291
1292 Pixel::BAYER_BGGR16 => AV_PIX_FMT_BAYER_BGGR16,
1293 Pixel::BAYER_RGGB16 => AV_PIX_FMT_BAYER_RGGB16,
1294 Pixel::BAYER_GBRG16 => AV_PIX_FMT_BAYER_GBRG16,
1295 Pixel::BAYER_GRBG16 => AV_PIX_FMT_BAYER_GRBG16,
1296
1297 Pixel::YUVA420P9 => AV_PIX_FMT_YUVA420P9,
1298 Pixel::YUVA422P9 => AV_PIX_FMT_YUVA422P9,
1299 Pixel::YUVA444P9 => AV_PIX_FMT_YUVA444P9,
1300 Pixel::YUVA420P10 => AV_PIX_FMT_YUVA420P10,
1301 Pixel::YUVA422P10 => AV_PIX_FMT_YUVA422P10,
1302 Pixel::YUVA444P10 => AV_PIX_FMT_YUVA444P10,
1303 Pixel::YUVA420P16 => AV_PIX_FMT_YUVA420P16,
1304 Pixel::YUVA422P16 => AV_PIX_FMT_YUVA422P16,
1305 Pixel::YUVA444P16 => AV_PIX_FMT_YUVA444P16,
1306
1307 Pixel::XYZ12 => AV_PIX_FMT_XYZ12,
1308 Pixel::NV20 => AV_PIX_FMT_NV20,
1309 Pixel::AYUV64 => AV_PIX_FMT_AYUV64,
1310
1311 Pixel::P010LE => AV_PIX_FMT_P010LE,
1312 Pixel::P010BE => AV_PIX_FMT_P010BE,
1313 Pixel::GBRAP12BE => AV_PIX_FMT_GBRAP12BE,
1314 Pixel::GBRAP12LE => AV_PIX_FMT_GBRAP12LE,
1315 Pixel::GBRAP10LE => AV_PIX_FMT_GBRAP10LE,
1316 Pixel::GBRAP10BE => AV_PIX_FMT_GBRAP10BE,
1317 Pixel::MEDIACODEC => AV_PIX_FMT_MEDIACODEC,
1318 Pixel::GRAY12BE => AV_PIX_FMT_GRAY12BE,
1319 Pixel::GRAY12LE => AV_PIX_FMT_GRAY12LE,
1320 Pixel::GRAY10BE => AV_PIX_FMT_GRAY10BE,
1321 Pixel::GRAY10LE => AV_PIX_FMT_GRAY10LE,
1322 Pixel::P016LE => AV_PIX_FMT_P016LE,
1323 Pixel::P016BE => AV_PIX_FMT_P016BE,
1324
1325 Pixel::D3D11 => AV_PIX_FMT_D3D11,
1326 Pixel::GRAY9BE => AV_PIX_FMT_GRAY9BE,
1327 Pixel::GRAY9LE => AV_PIX_FMT_GRAY9LE,
1328 Pixel::GBRPF32BE => AV_PIX_FMT_GBRPF32BE,
1329 Pixel::GBRPF32LE => AV_PIX_FMT_GBRPF32LE,
1330 Pixel::GBRAPF32BE => AV_PIX_FMT_GBRAPF32BE,
1331 Pixel::GBRAPF32LE => AV_PIX_FMT_GBRAPF32LE,
1332 Pixel::DRM_PRIME => AV_PIX_FMT_DRM_PRIME,
1333
1334 #[cfg(feature = "ffmpeg_4_0")]
1335 Pixel::OPENCL => AV_PIX_FMT_OPENCL,
1336
1337 #[cfg(feature = "ffmpeg_4_1")]
1338 Pixel::GRAY14BE => AV_PIX_FMT_GRAY14BE,
1339 #[cfg(feature = "ffmpeg_4_1")]
1340 Pixel::GRAY14LE => AV_PIX_FMT_GRAY14LE,
1341 #[cfg(feature = "ffmpeg_4_1")]
1342 Pixel::GRAYF32BE => AV_PIX_FMT_GRAYF32BE,
1343 #[cfg(feature = "ffmpeg_4_1")]
1344 Pixel::GRAYF32LE => AV_PIX_FMT_GRAYF32LE,
1345
1346 #[cfg(feature = "ffmpeg_4_2")]
1347 Pixel::YUVA422P12BE => AV_PIX_FMT_YUVA422P12BE,
1348 #[cfg(feature = "ffmpeg_4_2")]
1349 Pixel::YUVA422P12LE => AV_PIX_FMT_YUVA422P12LE,
1350 #[cfg(feature = "ffmpeg_4_2")]
1351 Pixel::YUVA444P12BE => AV_PIX_FMT_YUVA444P12BE,
1352 #[cfg(feature = "ffmpeg_4_2")]
1353 Pixel::YUVA444P12LE => AV_PIX_FMT_YUVA444P12LE,
1354 #[cfg(feature = "ffmpeg_4_2")]
1355 Pixel::NV24 => AV_PIX_FMT_NV24,
1356 #[cfg(feature = "ffmpeg_4_2")]
1357 Pixel::NV42 => AV_PIX_FMT_NV42,
1358
1359 #[cfg(feature = "ffmpeg_4_3")]
1360 Pixel::VULKAN => AV_PIX_FMT_VULKAN,
1361 #[cfg(feature = "ffmpeg_4_3")]
1362 Pixel::Y210BE => AV_PIX_FMT_Y210BE,
1363 #[cfg(feature = "ffmpeg_4_3")]
1364 Pixel::Y210LE => AV_PIX_FMT_Y210LE,
1365
1366 #[cfg(feature = "ffmpeg_4_4")]
1367 Pixel::X2RGB10LE => AV_PIX_FMT_X2RGB10LE,
1368 #[cfg(feature = "ffmpeg_4_4")]
1369 Pixel::X2RGB10BE => AV_PIX_FMT_X2RGB10BE,
1370
1371 #[cfg(feature = "ffmpeg_5_0")]
1372 Pixel::X2BGR10LE => AV_PIX_FMT_X2BGR10LE,
1373 #[cfg(feature = "ffmpeg_5_0")]
1374 Pixel::X2BGR10BE => AV_PIX_FMT_X2BGR10BE,
1375 #[cfg(feature = "ffmpeg_5_0")]
1376 Pixel::P210BE => AV_PIX_FMT_P210BE,
1377 #[cfg(feature = "ffmpeg_5_0")]
1378 Pixel::P210LE => AV_PIX_FMT_P210LE,
1379 #[cfg(feature = "ffmpeg_5_0")]
1380 Pixel::P410BE => AV_PIX_FMT_P410BE,
1381 #[cfg(feature = "ffmpeg_5_0")]
1382 Pixel::P410LE => AV_PIX_FMT_P410LE,
1383 #[cfg(feature = "ffmpeg_5_0")]
1384 Pixel::P216BE => AV_PIX_FMT_P216BE,
1385 #[cfg(feature = "ffmpeg_5_0")]
1386 Pixel::P216LE => AV_PIX_FMT_P216LE,
1387 #[cfg(feature = "ffmpeg_5_0")]
1388 Pixel::P416BE => AV_PIX_FMT_P416BE,
1389 #[cfg(feature = "ffmpeg_5_0")]
1390 Pixel::P416LE => AV_PIX_FMT_P416LE,
1391
1392 #[cfg(feature = "ffmpeg_6_0")]
1393 Pixel::VUYA => AV_PIX_FMT_VUYA,
1394 #[cfg(feature = "ffmpeg_6_0")]
1395 Pixel::RGBAF16BE => AV_PIX_FMT_RGBAF16BE,
1396 #[cfg(feature = "ffmpeg_6_0")]
1397 Pixel::RGBAF16LE => AV_PIX_FMT_RGBAF16LE,
1398 #[cfg(feature = "ffmpeg_6_0")]
1399 Pixel::VUYX => AV_PIX_FMT_VUYX,
1400 #[cfg(feature = "ffmpeg_6_0")]
1401 Pixel::P012LE => AV_PIX_FMT_P012LE,
1402 #[cfg(feature = "ffmpeg_6_0")]
1403 Pixel::P012BE => AV_PIX_FMT_P012BE,
1404 #[cfg(feature = "ffmpeg_6_0")]
1405 Pixel::Y212BE => AV_PIX_FMT_Y212BE,
1406 #[cfg(feature = "ffmpeg_6_0")]
1407 Pixel::Y212LE => AV_PIX_FMT_Y212LE,
1408 #[cfg(feature = "ffmpeg_6_0")]
1409 Pixel::XV30BE => AV_PIX_FMT_XV30BE,
1410 #[cfg(feature = "ffmpeg_6_0")]
1411 Pixel::XV30LE => AV_PIX_FMT_XV30LE,
1412 #[cfg(feature = "ffmpeg_6_0")]
1413 Pixel::XV36BE => AV_PIX_FMT_XV36BE,
1414 #[cfg(feature = "ffmpeg_6_0")]
1415 Pixel::XV36LE => AV_PIX_FMT_XV36LE,
1416 #[cfg(feature = "ffmpeg_6_0")]
1417 Pixel::RGBF32BE => AV_PIX_FMT_RGBF32BE,
1418 #[cfg(feature = "ffmpeg_6_0")]
1419 Pixel::RGBF32LE => AV_PIX_FMT_RGBF32LE,
1420 #[cfg(feature = "ffmpeg_6_0")]
1421 Pixel::RGBAF32BE => AV_PIX_FMT_RGBAF32BE,
1422 #[cfg(feature = "ffmpeg_6_0")]
1423 Pixel::RGBAF32LE => AV_PIX_FMT_RGBAF32LE,
1424
1425 #[cfg(feature = "ffmpeg_6_1")]
1426 Pixel::P212BE => AV_PIX_FMT_P212BE,
1427 #[cfg(feature = "ffmpeg_6_1")]
1428 Pixel::P212LE => AV_PIX_FMT_P212LE,
1429 #[cfg(feature = "ffmpeg_6_1")]
1430 Pixel::P412BE => AV_PIX_FMT_P412BE,
1431 #[cfg(feature = "ffmpeg_6_1")]
1432 Pixel::P412LE => AV_PIX_FMT_P412LE,
1433 #[cfg(feature = "ffmpeg_6_1")]
1434 Pixel::GBRAP14BE => AV_PIX_FMT_GBRAP14BE,
1435 #[cfg(feature = "ffmpeg_6_1")]
1436 Pixel::GBRAP14LE => AV_PIX_FMT_GBRAP14LE,
1437
1438 #[cfg(feature = "ffmpeg_7_0")]
1439 Pixel::D3D12 => AV_PIX_FMT_D3D12,
1440
1441 #[cfg(feature = "ffmpeg_8_0")]
1442 Pixel::AYUV => AV_PIX_FMT_AYUV,
1443 #[cfg(feature = "ffmpeg_8_0")]
1444 Pixel::UYVA => AV_PIX_FMT_UYVA,
1445 #[cfg(feature = "ffmpeg_8_0")]
1446 Pixel::VYU444 => AV_PIX_FMT_VYU444,
1447 #[cfg(feature = "ffmpeg_8_0")]
1448 Pixel::V30X => AV_PIX_FMT_V30X,
1449 #[cfg(feature = "ffmpeg_8_0")]
1450 Pixel::V30XLE => AV_PIX_FMT_V30XLE,
1451 #[cfg(feature = "ffmpeg_8_0")]
1452 Pixel::V30XBE => AV_PIX_FMT_V30XBE,
1453 #[cfg(feature = "ffmpeg_8_0")]
1454 Pixel::RGBF16 => AV_PIX_FMT_RGBF16,
1455 #[cfg(feature = "ffmpeg_8_0")]
1456 Pixel::RGBF16LE => AV_PIX_FMT_RGBF16LE,
1457 #[cfg(feature = "ffmpeg_8_0")]
1458 Pixel::RGBF16BE => AV_PIX_FMT_RGBF16BE,
1459 #[cfg(feature = "ffmpeg_8_0")]
1460 Pixel::RGB96 => AV_PIX_FMT_RGB96,
1461 #[cfg(feature = "ffmpeg_8_0")]
1462 Pixel::RGB96LE => AV_PIX_FMT_RGB96LE,
1463 #[cfg(feature = "ffmpeg_8_0")]
1464 Pixel::RGB96BE => AV_PIX_FMT_RGB96BE,
1465 #[cfg(feature = "ffmpeg_8_0")]
1466 Pixel::RGBA128 => AV_PIX_FMT_RGBA128,
1467 #[cfg(feature = "ffmpeg_8_0")]
1468 Pixel::RGBA128LE => AV_PIX_FMT_RGBA128LE,
1469 #[cfg(feature = "ffmpeg_8_0")]
1470 Pixel::RGBA128BE => AV_PIX_FMT_RGBA128BE,
1471 #[cfg(feature = "ffmpeg_8_0")]
1472 Pixel::Y216 => AV_PIX_FMT_Y216,
1473 #[cfg(feature = "ffmpeg_8_0")]
1474 Pixel::Y216LE => AV_PIX_FMT_Y216LE,
1475 #[cfg(feature = "ffmpeg_8_0")]
1476 Pixel::Y216BE => AV_PIX_FMT_Y216BE,
1477 #[cfg(feature = "ffmpeg_8_0")]
1478 Pixel::XV48 => AV_PIX_FMT_XV48,
1479 #[cfg(feature = "ffmpeg_8_0")]
1480 Pixel::XV48LE => AV_PIX_FMT_XV48LE,
1481 #[cfg(feature = "ffmpeg_8_0")]
1482 Pixel::XV48BE => AV_PIX_FMT_XV48BE,
1483 #[cfg(feature = "ffmpeg_8_0")]
1484 Pixel::GBRPF16BE => AV_PIX_FMT_GBRPF16BE,
1485 #[cfg(feature = "ffmpeg_8_0")]
1486 Pixel::GBRPF16LE => AV_PIX_FMT_GBRPF16LE,
1487 #[cfg(feature = "ffmpeg_8_0")]
1488 Pixel::GBRAPF16BE => AV_PIX_FMT_GBRAPF16BE,
1489 #[cfg(feature = "ffmpeg_8_0")]
1490 Pixel::GBRAPF16LE => AV_PIX_FMT_GBRAPF16LE,
1491 #[cfg(feature = "ffmpeg_8_0")]
1492 Pixel::GRAYF16BE => AV_PIX_FMT_GRAYF16BE,
1493 #[cfg(feature = "ffmpeg_8_0")]
1494 Pixel::GRAYF16LE => AV_PIX_FMT_GRAYF16LE,
1495 #[cfg(feature = "ffmpeg_8_0")]
1496 Pixel::AMF_SURFACE => AV_PIX_FMT_AMF_SURFACE,
1497 #[cfg(feature = "ffmpeg_8_0")]
1498 Pixel::GRAY32BE => AV_PIX_FMT_GRAY32BE,
1499 #[cfg(feature = "ffmpeg_8_0")]
1500 Pixel::GRAY32LE => AV_PIX_FMT_GRAY32LE,
1501 #[cfg(feature = "ffmpeg_8_0")]
1502 Pixel::YAF16BE => AV_PIX_FMT_YAF16BE,
1503 #[cfg(feature = "ffmpeg_8_0")]
1504 Pixel::YAF16LE => AV_PIX_FMT_YAF16LE,
1505 #[cfg(feature = "ffmpeg_8_0")]
1506 Pixel::YAF32BE => AV_PIX_FMT_YAF32BE,
1507 #[cfg(feature = "ffmpeg_8_0")]
1508 Pixel::YAF32LE => AV_PIX_FMT_YAF32LE,
1509 #[cfg(feature = "ffmpeg_8_0")]
1510 Pixel::GBRAP32BE => AV_PIX_FMT_GBRAP32BE,
1511 #[cfg(feature = "ffmpeg_8_0")]
1512 Pixel::GBRAP32LE => AV_PIX_FMT_GBRAP32LE,
1513 #[cfg(feature = "ffmpeg_8_0")]
1514 Pixel::OHCODEC => AV_PIX_FMT_OHCODEC,
1515 #[cfg(feature = "ffmpeg_8_0")]
1516 Pixel::YUV444P10MSB => AV_PIX_FMT_YUV444P10MSB,
1517 #[cfg(feature = "ffmpeg_8_0")]
1518 Pixel::YUV444P10MSBBE => AV_PIX_FMT_YUV444P10MSBBE,
1519 #[cfg(feature = "ffmpeg_8_0")]
1520 Pixel::YUV444P10MSBLE => AV_PIX_FMT_YUV444P10MSBLE,
1521 #[cfg(feature = "ffmpeg_8_0")]
1522 Pixel::YUV444P12MSB => AV_PIX_FMT_YUV444P12MSB,
1523 #[cfg(feature = "ffmpeg_8_0")]
1524 Pixel::YUV444P12MSBBE => AV_PIX_FMT_YUV444P12MSBBE,
1525 #[cfg(feature = "ffmpeg_8_0")]
1526 Pixel::YUV444P12MSBLE => AV_PIX_FMT_YUV444P12MSBLE,
1527 #[cfg(feature = "ffmpeg_8_0")]
1528 Pixel::GBRP10MSB => AV_PIX_FMT_GBRP10MSB,
1529 #[cfg(feature = "ffmpeg_8_0")]
1530 Pixel::GBRP10MSBBE => AV_PIX_FMT_GBRP10MSBBE,
1531 #[cfg(feature = "ffmpeg_8_0")]
1532 Pixel::GBRP10MSBLE => AV_PIX_FMT_GBRP10MSBLE,
1533 #[cfg(feature = "ffmpeg_8_0")]
1534 Pixel::GBRP12MSB => AV_PIX_FMT_GBRP12MSB,
1535 #[cfg(feature = "ffmpeg_8_0")]
1536 Pixel::GBRP12MSBBE => AV_PIX_FMT_GBRP12MSBBE,
1537 #[cfg(feature = "ffmpeg_8_0")]
1538 Pixel::GBRP12MSBLE => AV_PIX_FMT_GBRP12MSBLE,
1539
1540 #[cfg(feature = "rpi")]
1541 Pixel::SAND128 => AV_PIX_FMT_SAND128,
1542 #[cfg(feature = "rpi")]
1543 Pixel::SAND64_10 => AV_PIX_FMT_SAND64_10,
1544 #[cfg(feature = "rpi")]
1545 Pixel::SAND64_16 => AV_PIX_FMT_SAND64_16,
1546 #[cfg(feature = "rpi")]
1547 Pixel::RPI4_8 => AV_PIX_FMT_RPI4_8,
1548 #[cfg(feature = "rpi")]
1549 Pixel::RPI4_10 => AV_PIX_FMT_RPI4_10,
1550 }
1551 }
1552}
1553
1554#[derive(Debug)]
1555pub enum ParsePixelError {
1556 NulError(NulError),
1557 UnknownFormat,
1558}
1559
1560impl fmt::Display for ParsePixelError {
1561 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1562 match *self {
1563 ParsePixelError::NulError(ref e) => e.fmt(f),
1564 ParsePixelError::UnknownFormat => write!(f, "unknown pixel format"),
1565 }
1566 }
1567}
1568
1569impl error::Error for ParsePixelError {
1570 fn cause(&self) -> Option<&dyn error::Error> {
1571 match *self {
1572 ParsePixelError::NulError(ref e) => Some(e),
1573 ParsePixelError::UnknownFormat => None,
1574 }
1575 }
1576}
1577
1578impl From<NulError> for ParsePixelError {
1579 fn from(x: NulError) -> ParsePixelError {
1580 ParsePixelError::NulError(x)
1581 }
1582}
1583
1584impl FromStr for Pixel {
1585 type Err = ParsePixelError;
1586
1587 #[inline(always)]
1588 fn from_str(s: &str) -> Result<Pixel, ParsePixelError> {
1589 let cstring = CString::new(s)?;
1590 let format = unsafe { av_get_pix_fmt(cstring.as_ptr()) }.into();
1591
1592 if format == Pixel::None {
1593 Err(ParsePixelError::UnknownFormat)
1594 } else {
1595 Ok(format)
1596 }
1597 }
1598}