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