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