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