1use std::error;
2use std::ffi::{CStr, CString, NulError};
3use std::fmt;
4use std::str::{from_utf8_unchecked, FromStr};
5
6use ffi::AVPixelFormat::*;
7use 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
577impl From<AVPixelFormat> for Pixel {
578 #[inline]
579 fn from(value: AVPixelFormat) -> Self {
580 match value {
581 AV_PIX_FMT_NONE => Pixel::None,
582
583 AV_PIX_FMT_YUV420P => Pixel::YUV420P,
584 AV_PIX_FMT_YUYV422 => Pixel::YUYV422,
585 AV_PIX_FMT_RGB24 => Pixel::RGB24,
586 AV_PIX_FMT_BGR24 => Pixel::BGR24,
587 AV_PIX_FMT_YUV422P => Pixel::YUV422P,
588 AV_PIX_FMT_YUV444P => Pixel::YUV444P,
589 AV_PIX_FMT_YUV410P => Pixel::YUV410P,
590 AV_PIX_FMT_YUV411P => Pixel::YUV411P,
591 AV_PIX_FMT_GRAY8 => Pixel::GRAY8,
592 AV_PIX_FMT_MONOWHITE => Pixel::MonoWhite,
593 AV_PIX_FMT_MONOBLACK => Pixel::MonoBlack,
594 AV_PIX_FMT_PAL8 => Pixel::PAL8,
595 AV_PIX_FMT_YUVJ420P => Pixel::YUVJ420P,
596 AV_PIX_FMT_YUVJ422P => Pixel::YUVJ422P,
597 AV_PIX_FMT_YUVJ444P => Pixel::YUVJ444P,
598 #[cfg(all(feature = "ffmpeg_4_0", not(feature = "ffmpeg_7_0")))]
599 AV_PIX_FMT_XVMC => Pixel::XVMC,
600 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
601 AV_PIX_FMT_XVMC_MPEG2_MC => Pixel::XVMC_MPEG2_MC,
602 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
603 AV_PIX_FMT_XVMC_MPEG2_IDCT => Pixel::XVMC_MPEG2_IDCT,
604 AV_PIX_FMT_UYVY422 => Pixel::UYVY422,
605 AV_PIX_FMT_UYYVYY411 => Pixel::UYYVYY411,
606 AV_PIX_FMT_BGR8 => Pixel::BGR8,
607 AV_PIX_FMT_BGR4 => Pixel::BGR4,
608 AV_PIX_FMT_BGR4_BYTE => Pixel::BGR4_BYTE,
609 AV_PIX_FMT_RGB8 => Pixel::RGB8,
610 AV_PIX_FMT_RGB4 => Pixel::RGB4,
611 AV_PIX_FMT_RGB4_BYTE => Pixel::RGB4_BYTE,
612 AV_PIX_FMT_NV12 => Pixel::NV12,
613 AV_PIX_FMT_NV21 => Pixel::NV21,
614
615 AV_PIX_FMT_ARGB => Pixel::ARGB,
616 AV_PIX_FMT_RGBA => Pixel::RGBA,
617 AV_PIX_FMT_ABGR => Pixel::ABGR,
618 AV_PIX_FMT_BGRA => Pixel::BGRA,
619
620 AV_PIX_FMT_GRAY16BE => Pixel::GRAY16BE,
621 AV_PIX_FMT_GRAY16LE => Pixel::GRAY16LE,
622 AV_PIX_FMT_YUV440P => Pixel::YUV440P,
623 AV_PIX_FMT_YUVJ440P => Pixel::YUVJ440P,
624 AV_PIX_FMT_YUVA420P => Pixel::YUVA420P,
625 #[cfg(feature = "ff_api_vdpau")]
626 AV_PIX_FMT_VDPAU_H264 => Pixel::VDPAU_H264,
627 #[cfg(feature = "ff_api_vdpau")]
628 AV_PIX_FMT_VDPAU_MPEG1 => Pixel::VDPAU_MPEG1,
629 #[cfg(feature = "ff_api_vdpau")]
630 AV_PIX_FMT_VDPAU_MPEG2 => Pixel::VDPAU_MPEG2,
631 #[cfg(feature = "ff_api_vdpau")]
632 AV_PIX_FMT_VDPAU_WMV3 => Pixel::VDPAU_WMV3,
633 #[cfg(feature = "ff_api_vdpau")]
634 AV_PIX_FMT_VDPAU_VC1 => Pixel::VDPAU_VC1,
635 AV_PIX_FMT_RGB48BE => Pixel::RGB48BE,
636 AV_PIX_FMT_RGB48LE => Pixel::RGB48LE,
637
638 AV_PIX_FMT_RGB565BE => Pixel::RGB565BE,
639 AV_PIX_FMT_RGB565LE => Pixel::RGB565LE,
640 AV_PIX_FMT_RGB555BE => Pixel::RGB555BE,
641 AV_PIX_FMT_RGB555LE => Pixel::RGB555LE,
642
643 AV_PIX_FMT_BGR565BE => Pixel::BGR565BE,
644 AV_PIX_FMT_BGR565LE => Pixel::BGR565LE,
645 AV_PIX_FMT_BGR555BE => Pixel::BGR555BE,
646 AV_PIX_FMT_BGR555LE => Pixel::BGR555LE,
647
648 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
649 AV_PIX_FMT_VAAPI_MOCO => Pixel::VAAPI_MOCO,
650 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
651 AV_PIX_FMT_VAAPI_IDCT => Pixel::VAAPI_IDCT,
652 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
653 AV_PIX_FMT_VAAPI_VLD => Pixel::VAAPI_VLD,
654 #[cfg(any(not(feature = "ff_api_vaapi"), feature = "ffmpeg_5_0"))]
655 AV_PIX_FMT_VAAPI => Pixel::VAAPI,
656
657 AV_PIX_FMT_YUV420P16LE => Pixel::YUV420P16LE,
658 AV_PIX_FMT_YUV420P16BE => Pixel::YUV420P16BE,
659 AV_PIX_FMT_YUV422P16LE => Pixel::YUV422P16LE,
660 AV_PIX_FMT_YUV422P16BE => Pixel::YUV422P16BE,
661 AV_PIX_FMT_YUV444P16LE => Pixel::YUV444P16LE,
662 AV_PIX_FMT_YUV444P16BE => Pixel::YUV444P16BE,
663 #[cfg(feature = "ff_api_vdpau")]
664 AV_PIX_FMT_VDPAU_MPEG4 => Pixel::VDPAU_MPEG4,
665 AV_PIX_FMT_DXVA2_VLD => Pixel::DXVA2_VLD,
666
667 AV_PIX_FMT_RGB444LE => Pixel::RGB444LE,
668 AV_PIX_FMT_RGB444BE => Pixel::RGB444BE,
669 AV_PIX_FMT_BGR444LE => Pixel::BGR444LE,
670 AV_PIX_FMT_BGR444BE => Pixel::BGR444BE,
671 AV_PIX_FMT_YA8 => Pixel::YA8,
672
673 AV_PIX_FMT_BGR48BE => Pixel::BGR48BE,
674 AV_PIX_FMT_BGR48LE => Pixel::BGR48LE,
675
676 AV_PIX_FMT_YUV420P9BE => Pixel::YUV420P9BE,
677 AV_PIX_FMT_YUV420P9LE => Pixel::YUV420P9LE,
678 AV_PIX_FMT_YUV420P10BE => Pixel::YUV420P10BE,
679 AV_PIX_FMT_YUV420P10LE => Pixel::YUV420P10LE,
680 AV_PIX_FMT_YUV422P10BE => Pixel::YUV422P10BE,
681 AV_PIX_FMT_YUV422P10LE => Pixel::YUV422P10LE,
682 AV_PIX_FMT_YUV444P9BE => Pixel::YUV444P9BE,
683 AV_PIX_FMT_YUV444P9LE => Pixel::YUV444P9LE,
684 AV_PIX_FMT_YUV444P10BE => Pixel::YUV444P10BE,
685 AV_PIX_FMT_YUV444P10LE => Pixel::YUV444P10LE,
686 AV_PIX_FMT_YUV422P9BE => Pixel::YUV422P9BE,
687 AV_PIX_FMT_YUV422P9LE => Pixel::YUV422P9LE,
688 #[cfg(not(feature = "ffmpeg_4_0"))]
689 AV_PIX_FMT_VDA_VLD => Pixel::VDA_VLD,
690
691 AV_PIX_FMT_GBRP => Pixel::GBRP,
692 AV_PIX_FMT_GBRP9BE => Pixel::GBRP9BE,
693 AV_PIX_FMT_GBRP9LE => Pixel::GBRP9LE,
694 AV_PIX_FMT_GBRP10BE => Pixel::GBRP10BE,
695 AV_PIX_FMT_GBRP10LE => Pixel::GBRP10LE,
696 AV_PIX_FMT_GBRP16BE => Pixel::GBRP16BE,
697 AV_PIX_FMT_GBRP16LE => Pixel::GBRP16LE,
698
699 AV_PIX_FMT_YUVA420P9BE => Pixel::YUVA420P9BE,
700 AV_PIX_FMT_YUVA420P9LE => Pixel::YUVA420P9LE,
701 AV_PIX_FMT_YUVA422P9BE => Pixel::YUVA422P9BE,
702 AV_PIX_FMT_YUVA422P9LE => Pixel::YUVA422P9LE,
703 AV_PIX_FMT_YUVA444P9BE => Pixel::YUVA444P9BE,
704 AV_PIX_FMT_YUVA444P9LE => Pixel::YUVA444P9LE,
705 AV_PIX_FMT_YUVA420P10BE => Pixel::YUVA420P10BE,
706 AV_PIX_FMT_YUVA420P10LE => Pixel::YUVA420P10LE,
707 AV_PIX_FMT_YUVA422P10BE => Pixel::YUVA422P10BE,
708 AV_PIX_FMT_YUVA422P10LE => Pixel::YUVA422P10LE,
709 AV_PIX_FMT_YUVA444P10BE => Pixel::YUVA444P10BE,
710 AV_PIX_FMT_YUVA444P10LE => Pixel::YUVA444P10LE,
711 AV_PIX_FMT_YUVA420P16BE => Pixel::YUVA420P16BE,
712 AV_PIX_FMT_YUVA420P16LE => Pixel::YUVA420P16LE,
713 AV_PIX_FMT_YUVA422P16BE => Pixel::YUVA422P16BE,
714 AV_PIX_FMT_YUVA422P16LE => Pixel::YUVA422P16LE,
715 AV_PIX_FMT_YUVA444P16BE => Pixel::YUVA444P16BE,
716 AV_PIX_FMT_YUVA444P16LE => Pixel::YUVA444P16LE,
717
718 AV_PIX_FMT_VDPAU => Pixel::VDPAU,
719
720 AV_PIX_FMT_XYZ12LE => Pixel::XYZ12LE,
721 AV_PIX_FMT_XYZ12BE => Pixel::XYZ12BE,
722 AV_PIX_FMT_NV16 => Pixel::NV16,
723 AV_PIX_FMT_NV20LE => Pixel::NV20LE,
724 AV_PIX_FMT_NV20BE => Pixel::NV20BE,
725
726 AV_PIX_FMT_RGBA64BE => Pixel::RGBA64BE,
727 AV_PIX_FMT_RGBA64LE => Pixel::RGBA64LE,
728 AV_PIX_FMT_BGRA64BE => Pixel::BGRA64BE,
729 AV_PIX_FMT_BGRA64LE => Pixel::BGRA64LE,
730
731 AV_PIX_FMT_YVYU422 => Pixel::YVYU422,
732
733 #[cfg(not(feature = "ffmpeg_4_0"))]
734 AV_PIX_FMT_VDA => Pixel::VDA,
735
736 AV_PIX_FMT_YA16BE => Pixel::YA16BE,
737 AV_PIX_FMT_YA16LE => Pixel::YA16LE,
738
739 AV_PIX_FMT_QSV => Pixel::QSV,
740 AV_PIX_FMT_MMAL => Pixel::MMAL,
741
742 AV_PIX_FMT_D3D11VA_VLD => Pixel::D3D11VA_VLD,
743
744 AV_PIX_FMT_CUDA => Pixel::CUDA,
745
746 AV_PIX_FMT_0RGB => Pixel::ZRGB,
747 AV_PIX_FMT_RGB0 => Pixel::RGBZ,
748 AV_PIX_FMT_0BGR => Pixel::ZBGR,
749 AV_PIX_FMT_BGR0 => Pixel::BGRZ,
750 AV_PIX_FMT_YUVA444P => Pixel::YUVA444P,
751 AV_PIX_FMT_YUVA422P => Pixel::YUVA422P,
752
753 AV_PIX_FMT_YUV420P12BE => Pixel::YUV420P12BE,
754 AV_PIX_FMT_YUV420P12LE => Pixel::YUV420P12LE,
755 AV_PIX_FMT_YUV420P14BE => Pixel::YUV420P14BE,
756 AV_PIX_FMT_YUV420P14LE => Pixel::YUV420P14LE,
757 AV_PIX_FMT_YUV422P12BE => Pixel::YUV422P12BE,
758 AV_PIX_FMT_YUV422P12LE => Pixel::YUV422P12LE,
759 AV_PIX_FMT_YUV422P14BE => Pixel::YUV422P14BE,
760 AV_PIX_FMT_YUV422P14LE => Pixel::YUV422P14LE,
761 AV_PIX_FMT_YUV444P12BE => Pixel::YUV444P12BE,
762 AV_PIX_FMT_YUV444P12LE => Pixel::YUV444P12LE,
763 AV_PIX_FMT_YUV444P14BE => Pixel::YUV444P14BE,
764 AV_PIX_FMT_YUV444P14LE => Pixel::YUV444P14LE,
765 AV_PIX_FMT_GBRP12BE => Pixel::GBRP12BE,
766 AV_PIX_FMT_GBRP12LE => Pixel::GBRP12LE,
767 AV_PIX_FMT_GBRP14BE => Pixel::GBRP14BE,
768 AV_PIX_FMT_GBRP14LE => Pixel::GBRP14LE,
769 AV_PIX_FMT_GBRAP => Pixel::GBRAP,
770 AV_PIX_FMT_GBRAP16BE => Pixel::GBRAP16BE,
771 AV_PIX_FMT_GBRAP16LE => Pixel::GBRAP16LE,
772 AV_PIX_FMT_YUVJ411P => Pixel::YUVJ411P,
773
774 AV_PIX_FMT_BAYER_BGGR8 => Pixel::BAYER_BGGR8,
775 AV_PIX_FMT_BAYER_RGGB8 => Pixel::BAYER_RGGB8,
776 AV_PIX_FMT_BAYER_GBRG8 => Pixel::BAYER_GBRG8,
777 AV_PIX_FMT_BAYER_GRBG8 => Pixel::BAYER_GRBG8,
778 AV_PIX_FMT_BAYER_BGGR16LE => Pixel::BAYER_BGGR16LE,
779 AV_PIX_FMT_BAYER_BGGR16BE => Pixel::BAYER_BGGR16BE,
780 AV_PIX_FMT_BAYER_RGGB16LE => Pixel::BAYER_RGGB16LE,
781 AV_PIX_FMT_BAYER_RGGB16BE => Pixel::BAYER_RGGB16BE,
782 AV_PIX_FMT_BAYER_GBRG16LE => Pixel::BAYER_GBRG16LE,
783 AV_PIX_FMT_BAYER_GBRG16BE => Pixel::BAYER_GBRG16BE,
784 AV_PIX_FMT_BAYER_GRBG16LE => Pixel::BAYER_GRBG16LE,
785 AV_PIX_FMT_BAYER_GRBG16BE => Pixel::BAYER_GRBG16BE,
786
787 AV_PIX_FMT_YUV440P10LE => Pixel::YUV440P10LE,
788 AV_PIX_FMT_YUV440P10BE => Pixel::YUV440P10BE,
789 AV_PIX_FMT_YUV440P12LE => Pixel::YUV440P12LE,
790 AV_PIX_FMT_YUV440P12BE => Pixel::YUV440P12BE,
791 AV_PIX_FMT_AYUV64LE => Pixel::AYUV64LE,
792 AV_PIX_FMT_AYUV64BE => Pixel::AYUV64BE,
793
794 AV_PIX_FMT_VIDEOTOOLBOX => Pixel::VIDEOTOOLBOX,
795
796 AV_PIX_FMT_P010LE => Pixel::P010LE,
797 AV_PIX_FMT_P010BE => Pixel::P010BE,
798 AV_PIX_FMT_GBRAP12BE => Pixel::GBRAP12BE,
799 AV_PIX_FMT_GBRAP12LE => Pixel::GBRAP12LE,
800 AV_PIX_FMT_GBRAP10LE => Pixel::GBRAP10LE,
801 AV_PIX_FMT_GBRAP10BE => Pixel::GBRAP10BE,
802 AV_PIX_FMT_MEDIACODEC => Pixel::MEDIACODEC,
803 AV_PIX_FMT_GRAY12BE => Pixel::GRAY12BE,
804 AV_PIX_FMT_GRAY12LE => Pixel::GRAY12LE,
805 AV_PIX_FMT_GRAY10BE => Pixel::GRAY10BE,
806 AV_PIX_FMT_GRAY10LE => Pixel::GRAY10LE,
807 AV_PIX_FMT_P016LE => Pixel::P016LE,
808 AV_PIX_FMT_P016BE => Pixel::P016BE,
809
810 AV_PIX_FMT_NB => Pixel::None,
811
812 AV_PIX_FMT_D3D11 => Pixel::D3D11,
813 AV_PIX_FMT_GRAY9BE => Pixel::GRAY9BE,
814 AV_PIX_FMT_GRAY9LE => Pixel::GRAY9LE,
815 AV_PIX_FMT_GBRPF32BE => Pixel::GBRPF32BE,
816 AV_PIX_FMT_GBRPF32LE => Pixel::GBRPF32LE,
817 AV_PIX_FMT_GBRAPF32BE => Pixel::GBRAPF32BE,
818 AV_PIX_FMT_GBRAPF32LE => Pixel::GBRAPF32LE,
819 AV_PIX_FMT_DRM_PRIME => Pixel::DRM_PRIME,
820
821 #[cfg(feature = "ffmpeg_4_0")]
822 AV_PIX_FMT_OPENCL => Pixel::OPENCL,
823
824 #[cfg(feature = "ffmpeg_4_1")]
825 AV_PIX_FMT_GRAY14BE => Pixel::GRAY14BE,
826 #[cfg(feature = "ffmpeg_4_1")]
827 AV_PIX_FMT_GRAY14LE => Pixel::GRAY14LE,
828 #[cfg(feature = "ffmpeg_4_1")]
829 AV_PIX_FMT_GRAYF32BE => Pixel::GRAYF32BE,
830 #[cfg(feature = "ffmpeg_4_1")]
831 AV_PIX_FMT_GRAYF32LE => Pixel::GRAYF32LE,
832
833 #[cfg(feature = "ffmpeg_4_2")]
834 AV_PIX_FMT_YUVA422P12BE => Pixel::YUVA422P12BE,
835 #[cfg(feature = "ffmpeg_4_2")]
836 AV_PIX_FMT_YUVA422P12LE => Pixel::YUVA422P12LE,
837 #[cfg(feature = "ffmpeg_4_2")]
838 AV_PIX_FMT_YUVA444P12BE => Pixel::YUVA444P12BE,
839 #[cfg(feature = "ffmpeg_4_2")]
840 AV_PIX_FMT_YUVA444P12LE => Pixel::YUVA444P12LE,
841 #[cfg(feature = "ffmpeg_4_2")]
842 AV_PIX_FMT_NV24 => Pixel::NV24,
843 #[cfg(feature = "ffmpeg_4_2")]
844 AV_PIX_FMT_NV42 => Pixel::NV42,
845
846 #[cfg(feature = "ffmpeg_4_3")]
847 AV_PIX_FMT_VULKAN => Pixel::VULKAN,
848 #[cfg(feature = "ffmpeg_4_3")]
849 AV_PIX_FMT_Y210BE => Pixel::Y210BE,
850 #[cfg(feature = "ffmpeg_4_3")]
851 AV_PIX_FMT_Y210LE => Pixel::Y210LE,
852
853 #[cfg(feature = "ffmpeg_4_4")]
854 AV_PIX_FMT_X2RGB10LE => Pixel::X2RGB10LE,
855 #[cfg(feature = "ffmpeg_4_4")]
856 AV_PIX_FMT_X2RGB10BE => Pixel::X2RGB10BE,
857
858 #[cfg(feature = "ffmpeg_5_0")]
859 AV_PIX_FMT_X2BGR10LE => Pixel::X2BGR10LE,
860 #[cfg(feature = "ffmpeg_5_0")]
861 AV_PIX_FMT_X2BGR10BE => Pixel::X2BGR10BE,
862 #[cfg(feature = "ffmpeg_5_0")]
863 AV_PIX_FMT_P210BE => Pixel::P210BE,
864 #[cfg(feature = "ffmpeg_5_0")]
865 AV_PIX_FMT_P210LE => Pixel::P210LE,
866 #[cfg(feature = "ffmpeg_5_0")]
867 AV_PIX_FMT_P410BE => Pixel::P410BE,
868 #[cfg(feature = "ffmpeg_5_0")]
869 AV_PIX_FMT_P410LE => Pixel::P410LE,
870 #[cfg(feature = "ffmpeg_5_0")]
871 AV_PIX_FMT_P216BE => Pixel::P216BE,
872 #[cfg(feature = "ffmpeg_5_0")]
873 AV_PIX_FMT_P216LE => Pixel::P216LE,
874 #[cfg(feature = "ffmpeg_5_0")]
875 AV_PIX_FMT_P416BE => Pixel::P416BE,
876 #[cfg(feature = "ffmpeg_5_0")]
877 AV_PIX_FMT_P416LE => Pixel::P416LE,
878
879 #[cfg(feature = "ffmpeg_6_0")]
880 AV_PIX_FMT_VUYA => Pixel::VUYA,
881 #[cfg(feature = "ffmpeg_6_0")]
882 AV_PIX_FMT_RGBAF16BE => Pixel::RGBAF16BE,
883 #[cfg(feature = "ffmpeg_6_0")]
884 AV_PIX_FMT_RGBAF16LE => Pixel::RGBAF16LE,
885 #[cfg(feature = "ffmpeg_6_0")]
886 AV_PIX_FMT_VUYX => Pixel::VUYX,
887 #[cfg(feature = "ffmpeg_6_0")]
888 AV_PIX_FMT_P012LE => Pixel::P012LE,
889 #[cfg(feature = "ffmpeg_6_0")]
890 AV_PIX_FMT_P012BE => Pixel::P012BE,
891 #[cfg(feature = "ffmpeg_6_0")]
892 AV_PIX_FMT_Y212BE => Pixel::Y212BE,
893 #[cfg(feature = "ffmpeg_6_0")]
894 AV_PIX_FMT_Y212LE => Pixel::Y212LE,
895 #[cfg(feature = "ffmpeg_6_0")]
896 AV_PIX_FMT_XV30BE => Pixel::XV30BE,
897 #[cfg(feature = "ffmpeg_6_0")]
898 AV_PIX_FMT_XV30LE => Pixel::XV30LE,
899 #[cfg(feature = "ffmpeg_6_0")]
900 AV_PIX_FMT_XV36BE => Pixel::XV36BE,
901 #[cfg(feature = "ffmpeg_6_0")]
902 AV_PIX_FMT_XV36LE => Pixel::XV36LE,
903 #[cfg(feature = "ffmpeg_6_0")]
904 AV_PIX_FMT_RGBF32BE => Pixel::RGBF32BE,
905 #[cfg(feature = "ffmpeg_6_0")]
906 AV_PIX_FMT_RGBF32LE => Pixel::RGBF32LE,
907 #[cfg(feature = "ffmpeg_6_0")]
908 AV_PIX_FMT_RGBAF32BE => Pixel::RGBAF32BE,
909 #[cfg(feature = "ffmpeg_6_0")]
910 AV_PIX_FMT_RGBAF32LE => Pixel::RGBAF32LE,
911
912 #[cfg(feature = "ffmpeg_6_1")]
913 AV_PIX_FMT_P212BE => Pixel::P212BE,
914 #[cfg(feature = "ffmpeg_6_1")]
915 AV_PIX_FMT_P212LE => Pixel::P212LE,
916 #[cfg(feature = "ffmpeg_6_1")]
917 AV_PIX_FMT_P412BE => Pixel::P412BE,
918 #[cfg(feature = "ffmpeg_6_1")]
919 AV_PIX_FMT_P412LE => Pixel::P412LE,
920 #[cfg(feature = "ffmpeg_6_1")]
921 AV_PIX_FMT_GBRAP14BE => Pixel::GBRAP14BE,
922 #[cfg(feature = "ffmpeg_6_1")]
923 AV_PIX_FMT_GBRAP14LE => Pixel::GBRAP14LE,
924
925 #[cfg(feature = "ffmpeg_7_0")]
926 AV_PIX_FMT_D3D12 => Pixel::D3D12,
927
928 #[cfg(feature = "ffmpeg_8_0")]
929 AV_PIX_FMT_AYUV => Pixel::AYUV,
930 #[cfg(feature = "ffmpeg_8_0")]
931 AV_PIX_FMT_UYVA => Pixel::UYVA,
932 #[cfg(feature = "ffmpeg_8_0")]
933 AV_PIX_FMT_VYU444 => Pixel::VYU444,
934 #[cfg(feature = "ffmpeg_8_0")]
935 AV_PIX_FMT_V30XLE => Pixel::V30XLE,
936 #[cfg(feature = "ffmpeg_8_0")]
937 AV_PIX_FMT_V30XBE => Pixel::V30XBE,
938 #[cfg(feature = "ffmpeg_8_0")]
939 AV_PIX_FMT_RGBF16LE => Pixel::RGBF16LE,
940 #[cfg(feature = "ffmpeg_8_0")]
941 AV_PIX_FMT_RGBF16BE => Pixel::RGBF16BE,
942 #[cfg(feature = "ffmpeg_8_0")]
943 AV_PIX_FMT_RGB96LE => Pixel::RGB96LE,
944 #[cfg(feature = "ffmpeg_8_0")]
945 AV_PIX_FMT_RGB96BE => Pixel::RGB96BE,
946 #[cfg(feature = "ffmpeg_8_0")]
947 AV_PIX_FMT_RGBA128LE => Pixel::RGBA128LE,
948 #[cfg(feature = "ffmpeg_8_0")]
949 AV_PIX_FMT_RGBA128BE => Pixel::RGBA128BE,
950 #[cfg(feature = "ffmpeg_8_0")]
951 AV_PIX_FMT_Y216LE => Pixel::Y216LE,
952 #[cfg(feature = "ffmpeg_8_0")]
953 AV_PIX_FMT_Y216BE => Pixel::Y216BE,
954 #[cfg(feature = "ffmpeg_8_0")]
955 AV_PIX_FMT_XV48LE => Pixel::XV48LE,
956 #[cfg(feature = "ffmpeg_8_0")]
957 AV_PIX_FMT_XV48BE => Pixel::XV48BE,
958 #[cfg(feature = "ffmpeg_8_0")]
959 AV_PIX_FMT_GBRPF16BE => Pixel::GBRPF16BE,
960 #[cfg(feature = "ffmpeg_8_0")]
961 AV_PIX_FMT_GBRPF16LE => Pixel::GBRPF16LE,
962 #[cfg(feature = "ffmpeg_8_0")]
963 AV_PIX_FMT_GBRAPF16BE => Pixel::GBRAPF16BE,
964 #[cfg(feature = "ffmpeg_8_0")]
965 AV_PIX_FMT_GBRAPF16LE => Pixel::GBRAPF16LE,
966 #[cfg(feature = "ffmpeg_8_0")]
967 AV_PIX_FMT_GRAYF16BE => Pixel::GRAYF16BE,
968 #[cfg(feature = "ffmpeg_8_0")]
969 AV_PIX_FMT_GRAYF16LE => Pixel::GRAYF16LE,
970 #[cfg(feature = "ffmpeg_8_0")]
971 AV_PIX_FMT_AMF_SURFACE => Pixel::AMF_SURFACE,
972 #[cfg(feature = "ffmpeg_8_0")]
973 AV_PIX_FMT_GRAY32BE => Pixel::GRAY32BE,
974 #[cfg(feature = "ffmpeg_8_0")]
975 AV_PIX_FMT_GRAY32LE => Pixel::GRAY32LE,
976 #[cfg(feature = "ffmpeg_8_0")]
977 AV_PIX_FMT_YAF16BE => Pixel::YAF16BE,
978 #[cfg(feature = "ffmpeg_8_0")]
979 AV_PIX_FMT_YAF16LE => Pixel::YAF16LE,
980 #[cfg(feature = "ffmpeg_8_0")]
981 AV_PIX_FMT_YAF32BE => Pixel::YAF32BE,
982 #[cfg(feature = "ffmpeg_8_0")]
983 AV_PIX_FMT_YAF32LE => Pixel::YAF32LE,
984 #[cfg(feature = "ffmpeg_8_0")]
985 AV_PIX_FMT_GBRAP32BE => Pixel::GBRAP32BE,
986 #[cfg(feature = "ffmpeg_8_0")]
987 AV_PIX_FMT_GBRAP32LE => Pixel::GBRAP32LE,
988 #[cfg(feature = "ffmpeg_8_0")]
989 AV_PIX_FMT_OHCODEC => Pixel::OHCODEC,
990 #[cfg(feature = "ffmpeg_8_0")]
991 AV_PIX_FMT_YUV444P10MSBBE => Pixel::YUV444P10MSBBE,
992 #[cfg(feature = "ffmpeg_8_0")]
993 AV_PIX_FMT_YUV444P10MSBLE => Pixel::YUV444P10MSBLE,
994 #[cfg(feature = "ffmpeg_8_0")]
995 AV_PIX_FMT_YUV444P12MSBBE => Pixel::YUV444P12MSBBE,
996 #[cfg(feature = "ffmpeg_8_0")]
997 AV_PIX_FMT_YUV444P12MSBLE => Pixel::YUV444P12MSBLE,
998 #[cfg(feature = "ffmpeg_8_0")]
999 AV_PIX_FMT_GBRP10MSBBE => Pixel::GBRP10MSBBE,
1000 #[cfg(feature = "ffmpeg_8_0")]
1001 AV_PIX_FMT_GBRP10MSBLE => Pixel::GBRP10MSBLE,
1002 #[cfg(feature = "ffmpeg_8_0")]
1003 AV_PIX_FMT_GBRP12MSBBE => Pixel::GBRP12MSBBE,
1004 #[cfg(feature = "ffmpeg_8_0")]
1005 AV_PIX_FMT_GBRP12MSBLE => Pixel::GBRP12MSBLE,
1006
1007 #[cfg(feature = "rpi")]
1008 AV_PIX_FMT_SAND128 => Pixel::SAND128,
1009 #[cfg(feature = "rpi")]
1010 AV_PIX_FMT_SAND64_10 => Pixel::SAND64_10,
1011 #[cfg(feature = "rpi")]
1012 AV_PIX_FMT_SAND64_16 => Pixel::SAND64_16,
1013 #[cfg(feature = "rpi")]
1014 AV_PIX_FMT_RPI4_8 => Pixel::RPI4_8,
1015 #[cfg(feature = "rpi")]
1016 AV_PIX_FMT_RPI4_10 => Pixel::RPI4_10,
1017 }
1018 }
1019}
1020
1021impl From<Pixel> for AVPixelFormat {
1022 #[inline]
1023 fn from(value: Pixel) -> AVPixelFormat {
1024 match value {
1025 Pixel::None => AV_PIX_FMT_NONE,
1026
1027 Pixel::YUV420P => AV_PIX_FMT_YUV420P,
1028 Pixel::YUYV422 => AV_PIX_FMT_YUYV422,
1029 Pixel::RGB24 => AV_PIX_FMT_RGB24,
1030 Pixel::BGR24 => AV_PIX_FMT_BGR24,
1031 Pixel::YUV422P => AV_PIX_FMT_YUV422P,
1032 Pixel::YUV444P => AV_PIX_FMT_YUV444P,
1033 Pixel::YUV410P => AV_PIX_FMT_YUV410P,
1034 Pixel::YUV411P => AV_PIX_FMT_YUV411P,
1035 Pixel::GRAY8 => AV_PIX_FMT_GRAY8,
1036 Pixel::MonoWhite => AV_PIX_FMT_MONOWHITE,
1037 Pixel::MonoBlack => AV_PIX_FMT_MONOBLACK,
1038 Pixel::PAL8 => AV_PIX_FMT_PAL8,
1039 Pixel::YUVJ420P => AV_PIX_FMT_YUVJ420P,
1040 Pixel::YUVJ422P => AV_PIX_FMT_YUVJ422P,
1041 Pixel::YUVJ444P => AV_PIX_FMT_YUVJ444P,
1042 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
1043 Pixel::XVMC_MPEG2_MC => AV_PIX_FMT_XVMC_MPEG2_MC,
1044 #[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
1045 Pixel::XVMC_MPEG2_IDCT => AV_PIX_FMT_XVMC_MPEG2_IDCT,
1046 Pixel::UYVY422 => AV_PIX_FMT_UYVY422,
1047 Pixel::UYYVYY411 => AV_PIX_FMT_UYYVYY411,
1048 Pixel::BGR8 => AV_PIX_FMT_BGR8,
1049 Pixel::BGR4 => AV_PIX_FMT_BGR4,
1050 Pixel::BGR4_BYTE => AV_PIX_FMT_BGR4_BYTE,
1051 Pixel::RGB8 => AV_PIX_FMT_RGB8,
1052 Pixel::RGB4 => AV_PIX_FMT_RGB4,
1053 Pixel::RGB4_BYTE => AV_PIX_FMT_RGB4_BYTE,
1054 Pixel::NV12 => AV_PIX_FMT_NV12,
1055 Pixel::NV21 => AV_PIX_FMT_NV21,
1056
1057 Pixel::ARGB => AV_PIX_FMT_ARGB,
1058 Pixel::RGBA => AV_PIX_FMT_RGBA,
1059 Pixel::ABGR => AV_PIX_FMT_ABGR,
1060 Pixel::BGRA => AV_PIX_FMT_BGRA,
1061
1062 Pixel::GRAY16BE => AV_PIX_FMT_GRAY16BE,
1063 Pixel::GRAY16LE => AV_PIX_FMT_GRAY16LE,
1064 Pixel::YUV440P => AV_PIX_FMT_YUV440P,
1065 Pixel::YUVJ440P => AV_PIX_FMT_YUVJ440P,
1066 Pixel::YUVA420P => AV_PIX_FMT_YUVA420P,
1067 #[cfg(feature = "ff_api_vdpau")]
1068 Pixel::VDPAU_H264 => AV_PIX_FMT_VDPAU_H264,
1069 #[cfg(feature = "ff_api_vdpau")]
1070 Pixel::VDPAU_MPEG1 => AV_PIX_FMT_VDPAU_MPEG1,
1071 #[cfg(feature = "ff_api_vdpau")]
1072 Pixel::VDPAU_MPEG2 => AV_PIX_FMT_VDPAU_MPEG2,
1073 #[cfg(feature = "ff_api_vdpau")]
1074 Pixel::VDPAU_WMV3 => AV_PIX_FMT_VDPAU_WMV3,
1075 #[cfg(feature = "ff_api_vdpau")]
1076 Pixel::VDPAU_VC1 => AV_PIX_FMT_VDPAU_VC1,
1077 Pixel::RGB48BE => AV_PIX_FMT_RGB48BE,
1078 Pixel::RGB48LE => AV_PIX_FMT_RGB48LE,
1079
1080 Pixel::RGB565BE => AV_PIX_FMT_RGB565BE,
1081 Pixel::RGB565LE => AV_PIX_FMT_RGB565LE,
1082 Pixel::RGB555BE => AV_PIX_FMT_RGB555BE,
1083 Pixel::RGB555LE => AV_PIX_FMT_RGB555LE,
1084
1085 Pixel::BGR565BE => AV_PIX_FMT_BGR565BE,
1086 Pixel::BGR565LE => AV_PIX_FMT_BGR565LE,
1087 Pixel::BGR555BE => AV_PIX_FMT_BGR555BE,
1088 Pixel::BGR555LE => AV_PIX_FMT_BGR555LE,
1089
1090 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
1091 Pixel::VAAPI_MOCO => AV_PIX_FMT_VAAPI_MOCO,
1092 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
1093 Pixel::VAAPI_IDCT => AV_PIX_FMT_VAAPI_IDCT,
1094 #[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
1095 Pixel::VAAPI_VLD => AV_PIX_FMT_VAAPI_VLD,
1096 #[cfg(not(feature = "ff_api_vaapi"))]
1097 Pixel::VAAPI => AV_PIX_FMT_VAAPI,
1098
1099 Pixel::YUV420P16LE => AV_PIX_FMT_YUV420P16LE,
1100 Pixel::YUV420P16BE => AV_PIX_FMT_YUV420P16BE,
1101 Pixel::YUV422P16LE => AV_PIX_FMT_YUV422P16LE,
1102 Pixel::YUV422P16BE => AV_PIX_FMT_YUV422P16BE,
1103 Pixel::YUV444P16LE => AV_PIX_FMT_YUV444P16LE,
1104 Pixel::YUV444P16BE => AV_PIX_FMT_YUV444P16BE,
1105 #[cfg(feature = "ff_api_vdpau")]
1106 Pixel::VDPAU_MPEG4 => AV_PIX_FMT_VDPAU_MPEG4,
1107 Pixel::DXVA2_VLD => AV_PIX_FMT_DXVA2_VLD,
1108
1109 Pixel::RGB444LE => AV_PIX_FMT_RGB444LE,
1110 Pixel::RGB444BE => AV_PIX_FMT_RGB444BE,
1111 Pixel::BGR444LE => AV_PIX_FMT_BGR444LE,
1112 Pixel::BGR444BE => AV_PIX_FMT_BGR444BE,
1113 Pixel::YA8 => AV_PIX_FMT_YA8,
1114
1115 Pixel::BGR48BE => AV_PIX_FMT_BGR48BE,
1116 Pixel::BGR48LE => AV_PIX_FMT_BGR48LE,
1117
1118 Pixel::YUV420P9BE => AV_PIX_FMT_YUV420P9BE,
1119 Pixel::YUV420P9LE => AV_PIX_FMT_YUV420P9LE,
1120 Pixel::YUV420P10BE => AV_PIX_FMT_YUV420P10BE,
1121 Pixel::YUV420P10LE => AV_PIX_FMT_YUV420P10LE,
1122 Pixel::YUV422P10BE => AV_PIX_FMT_YUV422P10BE,
1123 Pixel::YUV422P10LE => AV_PIX_FMT_YUV422P10LE,
1124 Pixel::YUV444P9BE => AV_PIX_FMT_YUV444P9BE,
1125 Pixel::YUV444P9LE => AV_PIX_FMT_YUV444P9LE,
1126 Pixel::YUV444P10BE => AV_PIX_FMT_YUV444P10BE,
1127 Pixel::YUV444P10LE => AV_PIX_FMT_YUV444P10LE,
1128 Pixel::YUV422P9BE => AV_PIX_FMT_YUV422P9BE,
1129 Pixel::YUV422P9LE => AV_PIX_FMT_YUV422P9LE,
1130 #[cfg(not(feature = "ffmpeg_4_0"))]
1131 Pixel::VDA_VLD => AV_PIX_FMT_VDA_VLD,
1132
1133 Pixel::GBRP => AV_PIX_FMT_GBRP,
1134 Pixel::GBRP9BE => AV_PIX_FMT_GBRP9BE,
1135 Pixel::GBRP9LE => AV_PIX_FMT_GBRP9LE,
1136 Pixel::GBRP10BE => AV_PIX_FMT_GBRP10BE,
1137 Pixel::GBRP10LE => AV_PIX_FMT_GBRP10LE,
1138 Pixel::GBRP16BE => AV_PIX_FMT_GBRP16BE,
1139 Pixel::GBRP16LE => AV_PIX_FMT_GBRP16LE,
1140
1141 Pixel::YUVA420P9BE => AV_PIX_FMT_YUVA420P9BE,
1142 Pixel::YUVA420P9LE => AV_PIX_FMT_YUVA420P9LE,
1143 Pixel::YUVA422P9BE => AV_PIX_FMT_YUVA422P9BE,
1144 Pixel::YUVA422P9LE => AV_PIX_FMT_YUVA422P9LE,
1145 Pixel::YUVA444P9BE => AV_PIX_FMT_YUVA444P9BE,
1146 Pixel::YUVA444P9LE => AV_PIX_FMT_YUVA444P9LE,
1147 Pixel::YUVA420P10BE => AV_PIX_FMT_YUVA420P10BE,
1148 Pixel::YUVA420P10LE => AV_PIX_FMT_YUVA420P10LE,
1149 Pixel::YUVA422P10BE => AV_PIX_FMT_YUVA422P10BE,
1150 Pixel::YUVA422P10LE => AV_PIX_FMT_YUVA422P10LE,
1151 Pixel::YUVA444P10BE => AV_PIX_FMT_YUVA444P10BE,
1152 Pixel::YUVA444P10LE => AV_PIX_FMT_YUVA444P10LE,
1153 Pixel::YUVA420P16BE => AV_PIX_FMT_YUVA420P16BE,
1154 Pixel::YUVA420P16LE => AV_PIX_FMT_YUVA420P16LE,
1155 Pixel::YUVA422P16BE => AV_PIX_FMT_YUVA422P16BE,
1156 Pixel::YUVA422P16LE => AV_PIX_FMT_YUVA422P16LE,
1157 Pixel::YUVA444P16BE => AV_PIX_FMT_YUVA444P16BE,
1158 Pixel::YUVA444P16LE => AV_PIX_FMT_YUVA444P16LE,
1159
1160 Pixel::VDPAU => AV_PIX_FMT_VDPAU,
1161
1162 Pixel::XYZ12LE => AV_PIX_FMT_XYZ12LE,
1163 Pixel::XYZ12BE => AV_PIX_FMT_XYZ12BE,
1164 Pixel::NV16 => AV_PIX_FMT_NV16,
1165 Pixel::NV20LE => AV_PIX_FMT_NV20LE,
1166 Pixel::NV20BE => AV_PIX_FMT_NV20BE,
1167
1168 Pixel::RGBA64BE => AV_PIX_FMT_RGBA64BE,
1169 Pixel::RGBA64LE => AV_PIX_FMT_RGBA64LE,
1170 Pixel::BGRA64BE => AV_PIX_FMT_BGRA64BE,
1171 Pixel::BGRA64LE => AV_PIX_FMT_BGRA64LE,
1172
1173 Pixel::YVYU422 => AV_PIX_FMT_YVYU422,
1174
1175 #[cfg(not(feature = "ffmpeg_4_0"))]
1176 Pixel::VDA => AV_PIX_FMT_VDA,
1177
1178 Pixel::YA16BE => AV_PIX_FMT_YA16BE,
1179 Pixel::YA16LE => AV_PIX_FMT_YA16LE,
1180
1181 Pixel::QSV => AV_PIX_FMT_QSV,
1182 Pixel::MMAL => AV_PIX_FMT_MMAL,
1183
1184 Pixel::D3D11VA_VLD => AV_PIX_FMT_D3D11VA_VLD,
1185
1186 Pixel::CUDA => AV_PIX_FMT_CUDA,
1187
1188 Pixel::ZRGB => AV_PIX_FMT_0RGB,
1189 Pixel::RGBZ => AV_PIX_FMT_RGB0,
1190 Pixel::ZBGR => AV_PIX_FMT_0BGR,
1191 Pixel::BGRZ => AV_PIX_FMT_BGR0,
1192 Pixel::YUVA444P => AV_PIX_FMT_YUVA444P,
1193 Pixel::YUVA422P => AV_PIX_FMT_YUVA422P,
1194
1195 Pixel::YUV420P12BE => AV_PIX_FMT_YUV420P12BE,
1196 Pixel::YUV420P12LE => AV_PIX_FMT_YUV420P12LE,
1197 Pixel::YUV420P14BE => AV_PIX_FMT_YUV420P14BE,
1198 Pixel::YUV420P14LE => AV_PIX_FMT_YUV420P14LE,
1199 Pixel::YUV422P12BE => AV_PIX_FMT_YUV422P12BE,
1200 Pixel::YUV422P12LE => AV_PIX_FMT_YUV422P12LE,
1201 Pixel::YUV422P14BE => AV_PIX_FMT_YUV422P14BE,
1202 Pixel::YUV422P14LE => AV_PIX_FMT_YUV422P14LE,
1203 Pixel::YUV444P12BE => AV_PIX_FMT_YUV444P12BE,
1204 Pixel::YUV444P12LE => AV_PIX_FMT_YUV444P12LE,
1205 Pixel::YUV444P14BE => AV_PIX_FMT_YUV444P14BE,
1206 Pixel::YUV444P14LE => AV_PIX_FMT_YUV444P14LE,
1207 Pixel::GBRP12BE => AV_PIX_FMT_GBRP12BE,
1208 Pixel::GBRP12LE => AV_PIX_FMT_GBRP12LE,
1209 Pixel::GBRP14BE => AV_PIX_FMT_GBRP14BE,
1210 Pixel::GBRP14LE => AV_PIX_FMT_GBRP14LE,
1211 Pixel::GBRAP => AV_PIX_FMT_GBRAP,
1212 Pixel::GBRAP16BE => AV_PIX_FMT_GBRAP16BE,
1213 Pixel::GBRAP16LE => AV_PIX_FMT_GBRAP16LE,
1214 Pixel::YUVJ411P => AV_PIX_FMT_YUVJ411P,
1215
1216 Pixel::BAYER_BGGR8 => AV_PIX_FMT_BAYER_BGGR8,
1217 Pixel::BAYER_RGGB8 => AV_PIX_FMT_BAYER_RGGB8,
1218 Pixel::BAYER_GBRG8 => AV_PIX_FMT_BAYER_GBRG8,
1219 Pixel::BAYER_GRBG8 => AV_PIX_FMT_BAYER_GRBG8,
1220 Pixel::BAYER_BGGR16LE => AV_PIX_FMT_BAYER_BGGR16LE,
1221 Pixel::BAYER_BGGR16BE => AV_PIX_FMT_BAYER_BGGR16BE,
1222 Pixel::BAYER_RGGB16LE => AV_PIX_FMT_BAYER_RGGB16LE,
1223 Pixel::BAYER_RGGB16BE => AV_PIX_FMT_BAYER_RGGB16BE,
1224 Pixel::BAYER_GBRG16LE => AV_PIX_FMT_BAYER_GBRG16LE,
1225 Pixel::BAYER_GBRG16BE => AV_PIX_FMT_BAYER_GBRG16BE,
1226 Pixel::BAYER_GRBG16LE => AV_PIX_FMT_BAYER_GRBG16LE,
1227 Pixel::BAYER_GRBG16BE => AV_PIX_FMT_BAYER_GRBG16BE,
1228
1229 Pixel::YUV440P10LE => AV_PIX_FMT_YUV440P10LE,
1230 Pixel::YUV440P10BE => AV_PIX_FMT_YUV440P10BE,
1231 Pixel::YUV440P12LE => AV_PIX_FMT_YUV440P12LE,
1232 Pixel::YUV440P12BE => AV_PIX_FMT_YUV440P12BE,
1233 Pixel::AYUV64LE => AV_PIX_FMT_AYUV64LE,
1234 Pixel::AYUV64BE => AV_PIX_FMT_AYUV64BE,
1235
1236 Pixel::VIDEOTOOLBOX => AV_PIX_FMT_VIDEOTOOLBOX,
1237
1238 #[cfg(all(feature = "ffmpeg_4_0", not(feature = "ffmpeg_7_0")))]
1240 Pixel::XVMC => AV_PIX_FMT_XVMC,
1241
1242 Pixel::RGB32 => AV_PIX_FMT_RGB32,
1243 Pixel::RGB32_1 => AV_PIX_FMT_RGB32_1,
1244 Pixel::BGR32 => AV_PIX_FMT_BGR32,
1245 Pixel::BGR32_1 => AV_PIX_FMT_BGR32_1,
1246 Pixel::ZRGB32 => AV_PIX_FMT_0RGB32,
1247 Pixel::ZBGR32 => AV_PIX_FMT_0BGR32,
1248
1249 Pixel::GRAY16 => AV_PIX_FMT_GRAY16,
1250 Pixel::YA16 => AV_PIX_FMT_YA16,
1251 Pixel::RGB48 => AV_PIX_FMT_RGB48,
1252 Pixel::RGB565 => AV_PIX_FMT_RGB565,
1253 Pixel::RGB555 => AV_PIX_FMT_RGB555,
1254 Pixel::RGB444 => AV_PIX_FMT_RGB444,
1255 Pixel::BGR48 => AV_PIX_FMT_BGR48,
1256 Pixel::BGR565 => AV_PIX_FMT_BGR565,
1257 Pixel::BGR555 => AV_PIX_FMT_BGR555,
1258 Pixel::BGR444 => AV_PIX_FMT_BGR444,
1259
1260 Pixel::YUV420P9 => AV_PIX_FMT_YUV420P9,
1261 Pixel::YUV422P9 => AV_PIX_FMT_YUV422P9,
1262 Pixel::YUV444P9 => AV_PIX_FMT_YUV444P9,
1263 Pixel::YUV420P10 => AV_PIX_FMT_YUV420P10,
1264 Pixel::YUV422P10 => AV_PIX_FMT_YUV422P10,
1265 Pixel::YUV440P10 => AV_PIX_FMT_YUV440P10,
1266 Pixel::YUV444P10 => AV_PIX_FMT_YUV444P10,
1267 Pixel::YUV420P12 => AV_PIX_FMT_YUV420P12,
1268 Pixel::YUV422P12 => AV_PIX_FMT_YUV422P12,
1269 Pixel::YUV440P12 => AV_PIX_FMT_YUV440P12,
1270 Pixel::YUV444P12 => AV_PIX_FMT_YUV444P12,
1271 Pixel::YUV420P14 => AV_PIX_FMT_YUV420P14,
1272 Pixel::YUV422P14 => AV_PIX_FMT_YUV422P14,
1273 Pixel::YUV444P14 => AV_PIX_FMT_YUV444P14,
1274 Pixel::YUV420P16 => AV_PIX_FMT_YUV420P16,
1275 Pixel::YUV422P16 => AV_PIX_FMT_YUV422P16,
1276 Pixel::YUV444P16 => AV_PIX_FMT_YUV444P16,
1277
1278 Pixel::GBRP9 => AV_PIX_FMT_GBRP9,
1279 Pixel::GBRP10 => AV_PIX_FMT_GBRP10,
1280 Pixel::GBRP12 => AV_PIX_FMT_GBRP12,
1281 Pixel::GBRP14 => AV_PIX_FMT_GBRP14,
1282 Pixel::GBRP16 => AV_PIX_FMT_GBRP16,
1283 Pixel::GBRAP16 => AV_PIX_FMT_GBRAP16,
1284
1285 Pixel::BAYER_BGGR16 => AV_PIX_FMT_BAYER_BGGR16,
1286 Pixel::BAYER_RGGB16 => AV_PIX_FMT_BAYER_RGGB16,
1287 Pixel::BAYER_GBRG16 => AV_PIX_FMT_BAYER_GBRG16,
1288 Pixel::BAYER_GRBG16 => AV_PIX_FMT_BAYER_GRBG16,
1289
1290 Pixel::YUVA420P9 => AV_PIX_FMT_YUVA420P9,
1291 Pixel::YUVA422P9 => AV_PIX_FMT_YUVA422P9,
1292 Pixel::YUVA444P9 => AV_PIX_FMT_YUVA444P9,
1293 Pixel::YUVA420P10 => AV_PIX_FMT_YUVA420P10,
1294 Pixel::YUVA422P10 => AV_PIX_FMT_YUVA422P10,
1295 Pixel::YUVA444P10 => AV_PIX_FMT_YUVA444P10,
1296 Pixel::YUVA420P16 => AV_PIX_FMT_YUVA420P16,
1297 Pixel::YUVA422P16 => AV_PIX_FMT_YUVA422P16,
1298 Pixel::YUVA444P16 => AV_PIX_FMT_YUVA444P16,
1299
1300 Pixel::XYZ12 => AV_PIX_FMT_XYZ12,
1301 Pixel::NV20 => AV_PIX_FMT_NV20,
1302 Pixel::AYUV64 => AV_PIX_FMT_AYUV64,
1303
1304 Pixel::P010LE => AV_PIX_FMT_P010LE,
1305 Pixel::P010BE => AV_PIX_FMT_P010BE,
1306 Pixel::GBRAP12BE => AV_PIX_FMT_GBRAP12BE,
1307 Pixel::GBRAP12LE => AV_PIX_FMT_GBRAP12LE,
1308 Pixel::GBRAP10LE => AV_PIX_FMT_GBRAP10LE,
1309 Pixel::GBRAP10BE => AV_PIX_FMT_GBRAP10BE,
1310 Pixel::MEDIACODEC => AV_PIX_FMT_MEDIACODEC,
1311 Pixel::GRAY12BE => AV_PIX_FMT_GRAY12BE,
1312 Pixel::GRAY12LE => AV_PIX_FMT_GRAY12LE,
1313 Pixel::GRAY10BE => AV_PIX_FMT_GRAY10BE,
1314 Pixel::GRAY10LE => AV_PIX_FMT_GRAY10LE,
1315 Pixel::P016LE => AV_PIX_FMT_P016LE,
1316 Pixel::P016BE => AV_PIX_FMT_P016BE,
1317
1318 Pixel::D3D11 => AV_PIX_FMT_D3D11,
1319 Pixel::GRAY9BE => AV_PIX_FMT_GRAY9BE,
1320 Pixel::GRAY9LE => AV_PIX_FMT_GRAY9LE,
1321 Pixel::GBRPF32BE => AV_PIX_FMT_GBRPF32BE,
1322 Pixel::GBRPF32LE => AV_PIX_FMT_GBRPF32LE,
1323 Pixel::GBRAPF32BE => AV_PIX_FMT_GBRAPF32BE,
1324 Pixel::GBRAPF32LE => AV_PIX_FMT_GBRAPF32LE,
1325 Pixel::DRM_PRIME => AV_PIX_FMT_DRM_PRIME,
1326
1327 #[cfg(feature = "ffmpeg_4_0")]
1328 Pixel::OPENCL => AV_PIX_FMT_OPENCL,
1329
1330 #[cfg(feature = "ffmpeg_4_1")]
1331 Pixel::GRAY14BE => AV_PIX_FMT_GRAY14BE,
1332 #[cfg(feature = "ffmpeg_4_1")]
1333 Pixel::GRAY14LE => AV_PIX_FMT_GRAY14LE,
1334 #[cfg(feature = "ffmpeg_4_1")]
1335 Pixel::GRAYF32BE => AV_PIX_FMT_GRAYF32BE,
1336 #[cfg(feature = "ffmpeg_4_1")]
1337 Pixel::GRAYF32LE => AV_PIX_FMT_GRAYF32LE,
1338
1339 #[cfg(feature = "ffmpeg_4_2")]
1340 Pixel::YUVA422P12BE => AV_PIX_FMT_YUVA422P12BE,
1341 #[cfg(feature = "ffmpeg_4_2")]
1342 Pixel::YUVA422P12LE => AV_PIX_FMT_YUVA422P12LE,
1343 #[cfg(feature = "ffmpeg_4_2")]
1344 Pixel::YUVA444P12BE => AV_PIX_FMT_YUVA444P12BE,
1345 #[cfg(feature = "ffmpeg_4_2")]
1346 Pixel::YUVA444P12LE => AV_PIX_FMT_YUVA444P12LE,
1347 #[cfg(feature = "ffmpeg_4_2")]
1348 Pixel::NV24 => AV_PIX_FMT_NV24,
1349 #[cfg(feature = "ffmpeg_4_2")]
1350 Pixel::NV42 => AV_PIX_FMT_NV42,
1351
1352 #[cfg(feature = "ffmpeg_4_3")]
1353 Pixel::VULKAN => AV_PIX_FMT_VULKAN,
1354 #[cfg(feature = "ffmpeg_4_3")]
1355 Pixel::Y210BE => AV_PIX_FMT_Y210BE,
1356 #[cfg(feature = "ffmpeg_4_3")]
1357 Pixel::Y210LE => AV_PIX_FMT_Y210LE,
1358
1359 #[cfg(feature = "ffmpeg_4_4")]
1360 Pixel::X2RGB10LE => AV_PIX_FMT_X2RGB10LE,
1361 #[cfg(feature = "ffmpeg_4_4")]
1362 Pixel::X2RGB10BE => AV_PIX_FMT_X2RGB10BE,
1363
1364 #[cfg(feature = "ffmpeg_5_0")]
1365 Pixel::X2BGR10LE => AV_PIX_FMT_X2BGR10LE,
1366 #[cfg(feature = "ffmpeg_5_0")]
1367 Pixel::X2BGR10BE => AV_PIX_FMT_X2BGR10BE,
1368 #[cfg(feature = "ffmpeg_5_0")]
1369 Pixel::P210BE => AV_PIX_FMT_P210BE,
1370 #[cfg(feature = "ffmpeg_5_0")]
1371 Pixel::P210LE => AV_PIX_FMT_P210LE,
1372 #[cfg(feature = "ffmpeg_5_0")]
1373 Pixel::P410BE => AV_PIX_FMT_P410BE,
1374 #[cfg(feature = "ffmpeg_5_0")]
1375 Pixel::P410LE => AV_PIX_FMT_P410LE,
1376 #[cfg(feature = "ffmpeg_5_0")]
1377 Pixel::P216BE => AV_PIX_FMT_P216BE,
1378 #[cfg(feature = "ffmpeg_5_0")]
1379 Pixel::P216LE => AV_PIX_FMT_P216LE,
1380 #[cfg(feature = "ffmpeg_5_0")]
1381 Pixel::P416BE => AV_PIX_FMT_P416BE,
1382 #[cfg(feature = "ffmpeg_5_0")]
1383 Pixel::P416LE => AV_PIX_FMT_P416LE,
1384
1385 #[cfg(feature = "ffmpeg_6_0")]
1386 Pixel::VUYA => AV_PIX_FMT_VUYA,
1387 #[cfg(feature = "ffmpeg_6_0")]
1388 Pixel::RGBAF16BE => AV_PIX_FMT_RGBAF16BE,
1389 #[cfg(feature = "ffmpeg_6_0")]
1390 Pixel::RGBAF16LE => AV_PIX_FMT_RGBAF16LE,
1391 #[cfg(feature = "ffmpeg_6_0")]
1392 Pixel::VUYX => AV_PIX_FMT_VUYX,
1393 #[cfg(feature = "ffmpeg_6_0")]
1394 Pixel::P012LE => AV_PIX_FMT_P012LE,
1395 #[cfg(feature = "ffmpeg_6_0")]
1396 Pixel::P012BE => AV_PIX_FMT_P012BE,
1397 #[cfg(feature = "ffmpeg_6_0")]
1398 Pixel::Y212BE => AV_PIX_FMT_Y212BE,
1399 #[cfg(feature = "ffmpeg_6_0")]
1400 Pixel::Y212LE => AV_PIX_FMT_Y212LE,
1401 #[cfg(feature = "ffmpeg_6_0")]
1402 Pixel::XV30BE => AV_PIX_FMT_XV30BE,
1403 #[cfg(feature = "ffmpeg_6_0")]
1404 Pixel::XV30LE => AV_PIX_FMT_XV30LE,
1405 #[cfg(feature = "ffmpeg_6_0")]
1406 Pixel::XV36BE => AV_PIX_FMT_XV36BE,
1407 #[cfg(feature = "ffmpeg_6_0")]
1408 Pixel::XV36LE => AV_PIX_FMT_XV36LE,
1409 #[cfg(feature = "ffmpeg_6_0")]
1410 Pixel::RGBF32BE => AV_PIX_FMT_RGBF32BE,
1411 #[cfg(feature = "ffmpeg_6_0")]
1412 Pixel::RGBF32LE => AV_PIX_FMT_RGBF32LE,
1413 #[cfg(feature = "ffmpeg_6_0")]
1414 Pixel::RGBAF32BE => AV_PIX_FMT_RGBAF32BE,
1415 #[cfg(feature = "ffmpeg_6_0")]
1416 Pixel::RGBAF32LE => AV_PIX_FMT_RGBAF32LE,
1417
1418 #[cfg(feature = "ffmpeg_6_1")]
1419 Pixel::P212BE => AV_PIX_FMT_P212BE,
1420 #[cfg(feature = "ffmpeg_6_1")]
1421 Pixel::P212LE => AV_PIX_FMT_P212LE,
1422 #[cfg(feature = "ffmpeg_6_1")]
1423 Pixel::P412BE => AV_PIX_FMT_P412BE,
1424 #[cfg(feature = "ffmpeg_6_1")]
1425 Pixel::P412LE => AV_PIX_FMT_P412LE,
1426 #[cfg(feature = "ffmpeg_6_1")]
1427 Pixel::GBRAP14BE => AV_PIX_FMT_GBRAP14BE,
1428 #[cfg(feature = "ffmpeg_6_1")]
1429 Pixel::GBRAP14LE => AV_PIX_FMT_GBRAP14LE,
1430
1431 #[cfg(feature = "ffmpeg_7_0")]
1432 Pixel::D3D12 => AV_PIX_FMT_D3D12,
1433
1434 #[cfg(feature = "ffmpeg_8_0")]
1435 Pixel::AYUV => AV_PIX_FMT_AYUV,
1436 #[cfg(feature = "ffmpeg_8_0")]
1437 Pixel::UYVA => AV_PIX_FMT_UYVA,
1438 #[cfg(feature = "ffmpeg_8_0")]
1439 Pixel::VYU444 => AV_PIX_FMT_VYU444,
1440 #[cfg(feature = "ffmpeg_8_0")]
1441 Pixel::V30X => AV_PIX_FMT_V30X,
1442 #[cfg(feature = "ffmpeg_8_0")]
1443 Pixel::V30XLE => AV_PIX_FMT_V30XLE,
1444 #[cfg(feature = "ffmpeg_8_0")]
1445 Pixel::V30XBE => AV_PIX_FMT_V30XBE,
1446 #[cfg(feature = "ffmpeg_8_0")]
1447 Pixel::RGBF16 => AV_PIX_FMT_RGBF16,
1448 #[cfg(feature = "ffmpeg_8_0")]
1449 Pixel::RGBF16LE => AV_PIX_FMT_RGBF16LE,
1450 #[cfg(feature = "ffmpeg_8_0")]
1451 Pixel::RGBF16BE => AV_PIX_FMT_RGBF16BE,
1452 #[cfg(feature = "ffmpeg_8_0")]
1453 Pixel::RGB96 => AV_PIX_FMT_RGB96,
1454 #[cfg(feature = "ffmpeg_8_0")]
1455 Pixel::RGB96LE => AV_PIX_FMT_RGB96LE,
1456 #[cfg(feature = "ffmpeg_8_0")]
1457 Pixel::RGB96BE => AV_PIX_FMT_RGB96BE,
1458 #[cfg(feature = "ffmpeg_8_0")]
1459 Pixel::RGBA128 => AV_PIX_FMT_RGBA128,
1460 #[cfg(feature = "ffmpeg_8_0")]
1461 Pixel::RGBA128LE => AV_PIX_FMT_RGBA128LE,
1462 #[cfg(feature = "ffmpeg_8_0")]
1463 Pixel::RGBA128BE => AV_PIX_FMT_RGBA128BE,
1464 #[cfg(feature = "ffmpeg_8_0")]
1465 Pixel::Y216 => AV_PIX_FMT_Y216,
1466 #[cfg(feature = "ffmpeg_8_0")]
1467 Pixel::Y216LE => AV_PIX_FMT_Y216LE,
1468 #[cfg(feature = "ffmpeg_8_0")]
1469 Pixel::Y216BE => AV_PIX_FMT_Y216BE,
1470 #[cfg(feature = "ffmpeg_8_0")]
1471 Pixel::XV48 => AV_PIX_FMT_XV48,
1472 #[cfg(feature = "ffmpeg_8_0")]
1473 Pixel::XV48LE => AV_PIX_FMT_XV48LE,
1474 #[cfg(feature = "ffmpeg_8_0")]
1475 Pixel::XV48BE => AV_PIX_FMT_XV48BE,
1476 #[cfg(feature = "ffmpeg_8_0")]
1477 Pixel::GBRPF16BE => AV_PIX_FMT_GBRPF16BE,
1478 #[cfg(feature = "ffmpeg_8_0")]
1479 Pixel::GBRPF16LE => AV_PIX_FMT_GBRPF16LE,
1480 #[cfg(feature = "ffmpeg_8_0")]
1481 Pixel::GBRAPF16BE => AV_PIX_FMT_GBRAPF16BE,
1482 #[cfg(feature = "ffmpeg_8_0")]
1483 Pixel::GBRAPF16LE => AV_PIX_FMT_GBRAPF16LE,
1484 #[cfg(feature = "ffmpeg_8_0")]
1485 Pixel::GRAYF16BE => AV_PIX_FMT_GRAYF16BE,
1486 #[cfg(feature = "ffmpeg_8_0")]
1487 Pixel::GRAYF16LE => AV_PIX_FMT_GRAYF16LE,
1488 #[cfg(feature = "ffmpeg_8_0")]
1489 Pixel::AMF_SURFACE => AV_PIX_FMT_AMF_SURFACE,
1490 #[cfg(feature = "ffmpeg_8_0")]
1491 Pixel::GRAY32BE => AV_PIX_FMT_GRAY32BE,
1492 #[cfg(feature = "ffmpeg_8_0")]
1493 Pixel::GRAY32LE => AV_PIX_FMT_GRAY32LE,
1494 #[cfg(feature = "ffmpeg_8_0")]
1495 Pixel::YAF16BE => AV_PIX_FMT_YAF16BE,
1496 #[cfg(feature = "ffmpeg_8_0")]
1497 Pixel::YAF16LE => AV_PIX_FMT_YAF16LE,
1498 #[cfg(feature = "ffmpeg_8_0")]
1499 Pixel::YAF32BE => AV_PIX_FMT_YAF32BE,
1500 #[cfg(feature = "ffmpeg_8_0")]
1501 Pixel::YAF32LE => AV_PIX_FMT_YAF32LE,
1502 #[cfg(feature = "ffmpeg_8_0")]
1503 Pixel::GBRAP32BE => AV_PIX_FMT_GBRAP32BE,
1504 #[cfg(feature = "ffmpeg_8_0")]
1505 Pixel::GBRAP32LE => AV_PIX_FMT_GBRAP32LE,
1506 #[cfg(feature = "ffmpeg_8_0")]
1507 Pixel::OHCODEC => AV_PIX_FMT_OHCODEC,
1508 #[cfg(feature = "ffmpeg_8_0")]
1509 Pixel::YUV444P10MSB => AV_PIX_FMT_YUV444P10MSB,
1510 #[cfg(feature = "ffmpeg_8_0")]
1511 Pixel::YUV444P10MSBBE => AV_PIX_FMT_YUV444P10MSBBE,
1512 #[cfg(feature = "ffmpeg_8_0")]
1513 Pixel::YUV444P10MSBLE => AV_PIX_FMT_YUV444P10MSBLE,
1514 #[cfg(feature = "ffmpeg_8_0")]
1515 Pixel::YUV444P12MSB => AV_PIX_FMT_YUV444P12MSB,
1516 #[cfg(feature = "ffmpeg_8_0")]
1517 Pixel::YUV444P12MSBBE => AV_PIX_FMT_YUV444P12MSBBE,
1518 #[cfg(feature = "ffmpeg_8_0")]
1519 Pixel::YUV444P12MSBLE => AV_PIX_FMT_YUV444P12MSBLE,
1520 #[cfg(feature = "ffmpeg_8_0")]
1521 Pixel::GBRP10MSB => AV_PIX_FMT_GBRP10MSB,
1522 #[cfg(feature = "ffmpeg_8_0")]
1523 Pixel::GBRP10MSBBE => AV_PIX_FMT_GBRP10MSBBE,
1524 #[cfg(feature = "ffmpeg_8_0")]
1525 Pixel::GBRP10MSBLE => AV_PIX_FMT_GBRP10MSBLE,
1526 #[cfg(feature = "ffmpeg_8_0")]
1527 Pixel::GBRP12MSB => AV_PIX_FMT_GBRP12MSB,
1528 #[cfg(feature = "ffmpeg_8_0")]
1529 Pixel::GBRP12MSBBE => AV_PIX_FMT_GBRP12MSBBE,
1530 #[cfg(feature = "ffmpeg_8_0")]
1531 Pixel::GBRP12MSBLE => AV_PIX_FMT_GBRP12MSBLE,
1532
1533 #[cfg(feature = "rpi")]
1534 Pixel::SAND128 => AV_PIX_FMT_SAND128,
1535 #[cfg(feature = "rpi")]
1536 Pixel::SAND64_10 => AV_PIX_FMT_SAND64_10,
1537 #[cfg(feature = "rpi")]
1538 Pixel::SAND64_16 => AV_PIX_FMT_SAND64_16,
1539 #[cfg(feature = "rpi")]
1540 Pixel::RPI4_8 => AV_PIX_FMT_RPI4_8,
1541 #[cfg(feature = "rpi")]
1542 Pixel::RPI4_10 => AV_PIX_FMT_RPI4_10,
1543 }
1544 }
1545}
1546
1547#[derive(Debug)]
1548pub enum ParsePixelError {
1549 NulError(NulError),
1550 UnknownFormat,
1551}
1552
1553impl fmt::Display for ParsePixelError {
1554 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1555 match *self {
1556 ParsePixelError::NulError(ref e) => e.fmt(f),
1557 ParsePixelError::UnknownFormat => write!(f, "unknown pixel format"),
1558 }
1559 }
1560}
1561
1562impl error::Error for ParsePixelError {
1563 fn cause(&self) -> Option<&dyn error::Error> {
1564 match *self {
1565 ParsePixelError::NulError(ref e) => Some(e),
1566 ParsePixelError::UnknownFormat => None,
1567 }
1568 }
1569}
1570
1571impl From<NulError> for ParsePixelError {
1572 fn from(x: NulError) -> ParsePixelError {
1573 ParsePixelError::NulError(x)
1574 }
1575}
1576
1577impl FromStr for Pixel {
1578 type Err = ParsePixelError;
1579
1580 #[inline(always)]
1581 fn from_str(s: &str) -> Result<Pixel, ParsePixelError> {
1582 let cstring = CString::new(s)?;
1583 let format = unsafe { av_get_pix_fmt(cstring.as_ptr()) }.into();
1584
1585 if format == Pixel::None {
1586 Err(ParsePixelError::UnknownFormat)
1587 } else {
1588 Ok(format)
1589 }
1590 }
1591}