2017-06-28 11:53:24 +03:00
|
|
|
use std::error;
|
|
|
|
|
use std::ffi::{CStr, CString, NulError};
|
|
|
|
|
use std::fmt;
|
2018-04-10 17:06:42 +03:00
|
|
|
use std::str::{from_utf8_unchecked, FromStr};
|
2017-06-21 01:33:51 +03:00
|
|
|
|
2017-07-08 18:00:27 +03:00
|
|
|
use ffi::AVPixelFormat::*;
|
2018-04-10 17:06:42 +03:00
|
|
|
use ffi::*;
|
2015-05-13 23:36:08 +02:00
|
|
|
|
|
|
|
|
#[derive(Eq, PartialEq, Copy, Clone, Debug)]
|
|
|
|
|
pub enum Pixel {
|
2018-04-10 17:06:42 +03:00
|
|
|
None,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YUV420P,
|
|
|
|
|
YUYV422,
|
|
|
|
|
RGB24,
|
|
|
|
|
BGR24,
|
|
|
|
|
YUV422P,
|
|
|
|
|
YUV444P,
|
|
|
|
|
YUV410P,
|
|
|
|
|
YUV411P,
|
|
|
|
|
GRAY8,
|
|
|
|
|
MonoWhite,
|
|
|
|
|
MonoBlack,
|
|
|
|
|
PAL8,
|
|
|
|
|
YUVJ420P,
|
|
|
|
|
YUVJ422P,
|
|
|
|
|
YUVJ444P,
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
XVMC_MPEG2_MC,
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
XVMC_MPEG2_IDCT,
|
|
|
|
|
UYVY422,
|
|
|
|
|
UYYVYY411,
|
|
|
|
|
BGR8,
|
|
|
|
|
BGR4,
|
|
|
|
|
BGR4_BYTE,
|
|
|
|
|
RGB8,
|
|
|
|
|
RGB4,
|
|
|
|
|
RGB4_BYTE,
|
|
|
|
|
NV12,
|
|
|
|
|
NV21,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
ARGB,
|
|
|
|
|
RGBA,
|
|
|
|
|
ABGR,
|
|
|
|
|
BGRA,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
GRAY16BE,
|
|
|
|
|
GRAY16LE,
|
|
|
|
|
YUV440P,
|
|
|
|
|
YUVJ440P,
|
|
|
|
|
YUVA420P,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
VDPAU_H264,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
VDPAU_MPEG1,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
VDPAU_MPEG2,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
VDPAU_WMV3,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
VDPAU_VC1,
|
|
|
|
|
RGB48BE,
|
|
|
|
|
RGB48LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
RGB565BE,
|
|
|
|
|
RGB565LE,
|
|
|
|
|
RGB555BE,
|
|
|
|
|
RGB555LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
BGR565BE,
|
|
|
|
|
BGR565LE,
|
|
|
|
|
BGR555BE,
|
|
|
|
|
BGR555LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
VAAPI_MOCO,
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
VAAPI_IDCT,
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
VAAPI_VLD,
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(any(not(feature = "ff_api_vaapi"), feature = "ffmpeg_5_0"))]
|
2018-04-10 17:06:42 +03:00
|
|
|
VAAPI,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YUV420P16LE,
|
|
|
|
|
YUV420P16BE,
|
|
|
|
|
YUV422P16LE,
|
|
|
|
|
YUV422P16BE,
|
|
|
|
|
YUV444P16LE,
|
|
|
|
|
YUV444P16BE,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
VDPAU_MPEG4,
|
|
|
|
|
DXVA2_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
RGB444LE,
|
|
|
|
|
RGB444BE,
|
|
|
|
|
BGR444LE,
|
|
|
|
|
BGR444BE,
|
|
|
|
|
YA8,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
BGR48BE,
|
|
|
|
|
BGR48LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YUV420P9BE,
|
|
|
|
|
YUV420P9LE,
|
|
|
|
|
YUV420P10BE,
|
|
|
|
|
YUV420P10LE,
|
|
|
|
|
YUV422P10BE,
|
|
|
|
|
YUV422P10LE,
|
|
|
|
|
YUV444P9BE,
|
|
|
|
|
YUV444P9LE,
|
|
|
|
|
YUV444P10BE,
|
|
|
|
|
YUV444P10LE,
|
|
|
|
|
YUV422P9BE,
|
|
|
|
|
YUV422P9LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(not(feature = "ffmpeg_4_0"))]
|
2018-09-19 20:44:35 +00:00
|
|
|
VDA_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
GBRP,
|
|
|
|
|
GBRP9BE,
|
|
|
|
|
GBRP9LE,
|
|
|
|
|
GBRP10BE,
|
|
|
|
|
GBRP10LE,
|
|
|
|
|
GBRP16BE,
|
|
|
|
|
GBRP16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YUVA420P9BE,
|
|
|
|
|
YUVA420P9LE,
|
|
|
|
|
YUVA422P9BE,
|
|
|
|
|
YUVA422P9LE,
|
|
|
|
|
YUVA444P9BE,
|
|
|
|
|
YUVA444P9LE,
|
|
|
|
|
YUVA420P10BE,
|
|
|
|
|
YUVA420P10LE,
|
|
|
|
|
YUVA422P10BE,
|
|
|
|
|
YUVA422P10LE,
|
|
|
|
|
YUVA444P10BE,
|
|
|
|
|
YUVA444P10LE,
|
|
|
|
|
YUVA420P16BE,
|
|
|
|
|
YUVA420P16LE,
|
|
|
|
|
YUVA422P16BE,
|
|
|
|
|
YUVA422P16LE,
|
|
|
|
|
YUVA444P16BE,
|
|
|
|
|
YUVA444P16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
VDPAU,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
XYZ12LE,
|
|
|
|
|
XYZ12BE,
|
|
|
|
|
NV16,
|
|
|
|
|
NV20LE,
|
|
|
|
|
NV20BE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
RGBA64BE,
|
|
|
|
|
RGBA64LE,
|
|
|
|
|
BGRA64BE,
|
|
|
|
|
BGRA64LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YVYU422,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(not(feature = "ffmpeg_4_0"))]
|
2018-09-19 20:44:35 +00:00
|
|
|
VDA,
|
|
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YA16BE,
|
|
|
|
|
YA16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
QSV,
|
|
|
|
|
MMAL,
|
2015-06-19 01:04:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
D3D11VA_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
CUDA,
|
2017-01-05 16:21:28 +01:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
ZRGB,
|
|
|
|
|
RGBZ,
|
|
|
|
|
ZBGR,
|
|
|
|
|
BGRZ,
|
|
|
|
|
YUVA444P,
|
|
|
|
|
YUVA422P,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YUV420P12BE,
|
|
|
|
|
YUV420P12LE,
|
|
|
|
|
YUV420P14BE,
|
|
|
|
|
YUV420P14LE,
|
|
|
|
|
YUV422P12BE,
|
|
|
|
|
YUV422P12LE,
|
|
|
|
|
YUV422P14BE,
|
|
|
|
|
YUV422P14LE,
|
|
|
|
|
YUV444P12BE,
|
|
|
|
|
YUV444P12LE,
|
|
|
|
|
YUV444P14BE,
|
|
|
|
|
YUV444P14LE,
|
|
|
|
|
GBRP12BE,
|
|
|
|
|
GBRP12LE,
|
|
|
|
|
GBRP14BE,
|
|
|
|
|
GBRP14LE,
|
|
|
|
|
GBRAP,
|
|
|
|
|
GBRAP16BE,
|
|
|
|
|
GBRAP16LE,
|
|
|
|
|
YUVJ411P,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
BAYER_BGGR8,
|
|
|
|
|
BAYER_RGGB8,
|
|
|
|
|
BAYER_GBRG8,
|
|
|
|
|
BAYER_GRBG8,
|
|
|
|
|
BAYER_BGGR16LE,
|
|
|
|
|
BAYER_BGGR16BE,
|
|
|
|
|
BAYER_RGGB16LE,
|
|
|
|
|
BAYER_RGGB16BE,
|
|
|
|
|
BAYER_GBRG16LE,
|
|
|
|
|
BAYER_GBRG16BE,
|
|
|
|
|
BAYER_GRBG16LE,
|
|
|
|
|
BAYER_GRBG16BE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YUV440P10LE,
|
|
|
|
|
YUV440P10BE,
|
|
|
|
|
YUV440P12LE,
|
|
|
|
|
YUV440P12BE,
|
|
|
|
|
AYUV64LE,
|
|
|
|
|
AYUV64BE,
|
2015-09-15 20:53:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
VIDEOTOOLBOX,
|
2015-06-19 01:04:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
// --- defaults
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(feature = "ffmpeg_4_0")]
|
2018-04-10 17:06:42 +03:00
|
|
|
XVMC,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
RGB32,
|
|
|
|
|
RGB32_1,
|
|
|
|
|
BGR32,
|
|
|
|
|
BGR32_1,
|
|
|
|
|
ZRGB32,
|
|
|
|
|
ZBGR32,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
GRAY16,
|
|
|
|
|
YA16,
|
|
|
|
|
RGB48,
|
|
|
|
|
RGB565,
|
|
|
|
|
RGB555,
|
|
|
|
|
RGB444,
|
|
|
|
|
BGR48,
|
|
|
|
|
BGR565,
|
|
|
|
|
BGR555,
|
|
|
|
|
BGR444,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YUV420P9,
|
|
|
|
|
YUV422P9,
|
|
|
|
|
YUV444P9,
|
|
|
|
|
YUV420P10,
|
|
|
|
|
YUV422P10,
|
|
|
|
|
YUV440P10,
|
|
|
|
|
YUV444P10,
|
|
|
|
|
YUV420P12,
|
|
|
|
|
YUV422P12,
|
|
|
|
|
YUV440P12,
|
|
|
|
|
YUV444P12,
|
|
|
|
|
YUV420P14,
|
|
|
|
|
YUV422P14,
|
|
|
|
|
YUV444P14,
|
|
|
|
|
YUV420P16,
|
|
|
|
|
YUV422P16,
|
|
|
|
|
YUV444P16,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
GBRP9,
|
|
|
|
|
GBRP10,
|
|
|
|
|
GBRP12,
|
|
|
|
|
GBRP14,
|
|
|
|
|
GBRP16,
|
|
|
|
|
GBRAP16,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
BAYER_BGGR16,
|
|
|
|
|
BAYER_RGGB16,
|
|
|
|
|
BAYER_GBRG16,
|
|
|
|
|
BAYER_GRBG16,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
YUVA420P9,
|
|
|
|
|
YUVA422P9,
|
|
|
|
|
YUVA444P9,
|
|
|
|
|
YUVA420P10,
|
|
|
|
|
YUVA422P10,
|
|
|
|
|
YUVA444P10,
|
|
|
|
|
YUVA420P16,
|
|
|
|
|
YUVA422P16,
|
|
|
|
|
YUVA444P16,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
XYZ12,
|
|
|
|
|
NV20,
|
|
|
|
|
AYUV64,
|
2017-07-08 18:00:27 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
P010LE,
|
|
|
|
|
P010BE,
|
|
|
|
|
GBRAP12BE,
|
|
|
|
|
GBRAP12LE,
|
|
|
|
|
GBRAP10LE,
|
|
|
|
|
GBRAP10BE,
|
|
|
|
|
MEDIACODEC,
|
|
|
|
|
GRAY12BE,
|
|
|
|
|
GRAY12LE,
|
|
|
|
|
GRAY10BE,
|
|
|
|
|
GRAY10LE,
|
|
|
|
|
P016LE,
|
|
|
|
|
P016BE,
|
2017-11-29 14:49:54 -05:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
D3D11,
|
|
|
|
|
GRAY9BE,
|
|
|
|
|
GRAY9LE,
|
|
|
|
|
GBRPF32BE,
|
|
|
|
|
GBRPF32LE,
|
|
|
|
|
GBRAPF32BE,
|
|
|
|
|
GBRAPF32LE,
|
|
|
|
|
DRM_PRIME,
|
2020-06-01 14:15:33 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_0")]
|
2018-09-10 16:21:43 -04:00
|
|
|
OPENCL,
|
2020-06-01 14:15:33 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
GRAY14BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
GRAY14LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
GRAYF32BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
GRAYF32LE,
|
2020-06-01 14:42:39 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
YUVA422P12BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
YUVA422P12LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
YUVA444P12BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
YUVA444P12LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
NV24,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
NV42,
|
2020-06-17 01:51:38 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
VULKAN,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
Y210BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
Y210LE,
|
2021-05-06 15:27:59 -04:00
|
|
|
|
|
|
|
|
#[cfg(feature = "ffmpeg_4_4")]
|
|
|
|
|
X2RGB10LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_4_4")]
|
|
|
|
|
X2RGB10BE,
|
|
|
|
|
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
X2BGR10LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
X2BGR10BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
P210BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
P210LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
P410BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
P410LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
P216BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
P216LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
P416BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
P416LE,
|
|
|
|
|
|
2023-02-27 12:06:58 +01:00
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
VUYA,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
RGBAF16BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
RGBAF16LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
VUYX,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
P012LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
P012BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Y212BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Y212LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
XV30BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
XV30LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
XV36BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
XV36LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
RGBF32BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
RGBF32LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
RGBAF32BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
RGBAF32LE,
|
|
|
|
|
|
2023-12-03 19:55:27 +01:00
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
P212BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
P212LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
P412BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
P412LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
GBRAP14BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
GBRAP14LE,
|
|
|
|
|
|
2020-07-23 21:54:00 +02:00
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
SAND128,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
SAND64_10,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
SAND64_16,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
RPI4_8,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
RPI4_10,
|
2015-05-13 23:36:08 +02:00
|
|
|
}
|
|
|
|
|
|
2017-06-14 13:31:17 +03:00
|
|
|
#[derive(Clone, Copy, PartialEq, Eq)]
|
|
|
|
|
pub struct Descriptor {
|
2018-04-10 17:06:42 +03:00
|
|
|
ptr: *const AVPixFmtDescriptor,
|
2017-06-14 13:31:17 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
unsafe impl Send for Descriptor {}
|
|
|
|
|
unsafe impl Sync for Descriptor {}
|
|
|
|
|
|
|
|
|
|
impl Pixel {
|
2020-06-01 13:36:50 +08:00
|
|
|
pub const Y400A: Pixel = Pixel::YA8;
|
|
|
|
|
pub const GRAY8A: Pixel = Pixel::YA8;
|
|
|
|
|
pub const GBR24P: Pixel = Pixel::GBRP;
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
|
2020-06-11 23:18:47 +08:00
|
|
|
pub const XVMC: Pixel = Pixel::XVMC_MPEG2_IDCT;
|
2020-06-01 13:36:50 +08:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
pub fn descriptor(self) -> Option<Descriptor> {
|
|
|
|
|
unsafe {
|
|
|
|
|
let ptr = av_pix_fmt_desc_get(self.into());
|
2017-06-14 13:31:17 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
ptr.as_ref().map(|ptr| Descriptor { ptr })
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-06-14 13:31:17 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl Descriptor {
|
2018-04-10 17:06:42 +03:00
|
|
|
pub fn as_ptr(self) -> *const AVPixFmtDescriptor {
|
|
|
|
|
self.ptr
|
|
|
|
|
}
|
2017-06-14 13:31:17 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
pub fn name(self) -> &'static str {
|
|
|
|
|
unsafe { from_utf8_unchecked(CStr::from_ptr((*self.as_ptr()).name).to_bytes()) }
|
|
|
|
|
}
|
2017-06-21 01:33:51 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
pub fn nb_components(self) -> u8 {
|
|
|
|
|
unsafe { (*self.as_ptr()).nb_components }
|
|
|
|
|
}
|
2017-06-20 23:18:28 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
pub fn log2_chroma_w(self) -> u8 {
|
|
|
|
|
unsafe { (*self.as_ptr()).log2_chroma_w }
|
|
|
|
|
}
|
2017-06-21 01:33:51 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
pub fn log2_chroma_h(self) -> u8 {
|
|
|
|
|
unsafe { (*self.as_ptr()).log2_chroma_h }
|
|
|
|
|
}
|
2017-06-14 13:31:17 +03:00
|
|
|
}
|
|
|
|
|
|
2015-05-13 23:36:08 +02:00
|
|
|
impl From<AVPixelFormat> for Pixel {
|
2018-04-10 17:06:42 +03:00
|
|
|
#[inline]
|
|
|
|
|
fn from(value: AVPixelFormat) -> Self {
|
|
|
|
|
match value {
|
|
|
|
|
AV_PIX_FMT_NONE => Pixel::None,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_YUV420P => Pixel::YUV420P,
|
|
|
|
|
AV_PIX_FMT_YUYV422 => Pixel::YUYV422,
|
|
|
|
|
AV_PIX_FMT_RGB24 => Pixel::RGB24,
|
|
|
|
|
AV_PIX_FMT_BGR24 => Pixel::BGR24,
|
|
|
|
|
AV_PIX_FMT_YUV422P => Pixel::YUV422P,
|
|
|
|
|
AV_PIX_FMT_YUV444P => Pixel::YUV444P,
|
|
|
|
|
AV_PIX_FMT_YUV410P => Pixel::YUV410P,
|
|
|
|
|
AV_PIX_FMT_YUV411P => Pixel::YUV411P,
|
|
|
|
|
AV_PIX_FMT_GRAY8 => Pixel::GRAY8,
|
|
|
|
|
AV_PIX_FMT_MONOWHITE => Pixel::MonoWhite,
|
|
|
|
|
AV_PIX_FMT_MONOBLACK => Pixel::MonoBlack,
|
|
|
|
|
AV_PIX_FMT_PAL8 => Pixel::PAL8,
|
|
|
|
|
AV_PIX_FMT_YUVJ420P => Pixel::YUVJ420P,
|
|
|
|
|
AV_PIX_FMT_YUVJ422P => Pixel::YUVJ422P,
|
|
|
|
|
AV_PIX_FMT_YUVJ444P => Pixel::YUVJ444P,
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(feature = "ffmpeg_4_0")]
|
2018-09-10 14:40:18 -04:00
|
|
|
AV_PIX_FMT_XVMC => Pixel::XVMC,
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_XVMC_MPEG2_MC => Pixel::XVMC_MPEG2_MC,
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_XVMC_MPEG2_IDCT => Pixel::XVMC_MPEG2_IDCT,
|
|
|
|
|
AV_PIX_FMT_UYVY422 => Pixel::UYVY422,
|
|
|
|
|
AV_PIX_FMT_UYYVYY411 => Pixel::UYYVYY411,
|
|
|
|
|
AV_PIX_FMT_BGR8 => Pixel::BGR8,
|
|
|
|
|
AV_PIX_FMT_BGR4 => Pixel::BGR4,
|
|
|
|
|
AV_PIX_FMT_BGR4_BYTE => Pixel::BGR4_BYTE,
|
|
|
|
|
AV_PIX_FMT_RGB8 => Pixel::RGB8,
|
|
|
|
|
AV_PIX_FMT_RGB4 => Pixel::RGB4,
|
|
|
|
|
AV_PIX_FMT_RGB4_BYTE => Pixel::RGB4_BYTE,
|
|
|
|
|
AV_PIX_FMT_NV12 => Pixel::NV12,
|
|
|
|
|
AV_PIX_FMT_NV21 => Pixel::NV21,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_ARGB => Pixel::ARGB,
|
|
|
|
|
AV_PIX_FMT_RGBA => Pixel::RGBA,
|
|
|
|
|
AV_PIX_FMT_ABGR => Pixel::ABGR,
|
|
|
|
|
AV_PIX_FMT_BGRA => Pixel::BGRA,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_GRAY16BE => Pixel::GRAY16BE,
|
|
|
|
|
AV_PIX_FMT_GRAY16LE => Pixel::GRAY16LE,
|
|
|
|
|
AV_PIX_FMT_YUV440P => Pixel::YUV440P,
|
|
|
|
|
AV_PIX_FMT_YUVJ440P => Pixel::YUVJ440P,
|
|
|
|
|
AV_PIX_FMT_YUVA420P => Pixel::YUVA420P,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
AV_PIX_FMT_VDPAU_H264 => Pixel::VDPAU_H264,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
AV_PIX_FMT_VDPAU_MPEG1 => Pixel::VDPAU_MPEG1,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
AV_PIX_FMT_VDPAU_MPEG2 => Pixel::VDPAU_MPEG2,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
AV_PIX_FMT_VDPAU_WMV3 => Pixel::VDPAU_WMV3,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
AV_PIX_FMT_VDPAU_VC1 => Pixel::VDPAU_VC1,
|
|
|
|
|
AV_PIX_FMT_RGB48BE => Pixel::RGB48BE,
|
|
|
|
|
AV_PIX_FMT_RGB48LE => Pixel::RGB48LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_RGB565BE => Pixel::RGB565BE,
|
|
|
|
|
AV_PIX_FMT_RGB565LE => Pixel::RGB565LE,
|
|
|
|
|
AV_PIX_FMT_RGB555BE => Pixel::RGB555BE,
|
|
|
|
|
AV_PIX_FMT_RGB555LE => Pixel::RGB555LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_BGR565BE => Pixel::BGR565BE,
|
|
|
|
|
AV_PIX_FMT_BGR565LE => Pixel::BGR565LE,
|
|
|
|
|
AV_PIX_FMT_BGR555BE => Pixel::BGR555BE,
|
|
|
|
|
AV_PIX_FMT_BGR555LE => Pixel::BGR555LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_VAAPI_MOCO => Pixel::VAAPI_MOCO,
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_VAAPI_IDCT => Pixel::VAAPI_IDCT,
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_VAAPI_VLD => Pixel::VAAPI_VLD,
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(any(not(feature = "ff_api_vaapi"), feature = "ffmpeg_5_0"))]
|
|
|
|
|
AV_PIX_FMT_VAAPI => Pixel::VAAPI,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_YUV420P16LE => Pixel::YUV420P16LE,
|
|
|
|
|
AV_PIX_FMT_YUV420P16BE => Pixel::YUV420P16BE,
|
|
|
|
|
AV_PIX_FMT_YUV422P16LE => Pixel::YUV422P16LE,
|
|
|
|
|
AV_PIX_FMT_YUV422P16BE => Pixel::YUV422P16BE,
|
|
|
|
|
AV_PIX_FMT_YUV444P16LE => Pixel::YUV444P16LE,
|
|
|
|
|
AV_PIX_FMT_YUV444P16BE => Pixel::YUV444P16BE,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
AV_PIX_FMT_VDPAU_MPEG4 => Pixel::VDPAU_MPEG4,
|
|
|
|
|
AV_PIX_FMT_DXVA2_VLD => Pixel::DXVA2_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_RGB444LE => Pixel::RGB444LE,
|
|
|
|
|
AV_PIX_FMT_RGB444BE => Pixel::RGB444BE,
|
|
|
|
|
AV_PIX_FMT_BGR444LE => Pixel::BGR444LE,
|
|
|
|
|
AV_PIX_FMT_BGR444BE => Pixel::BGR444BE,
|
|
|
|
|
AV_PIX_FMT_YA8 => Pixel::YA8,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_BGR48BE => Pixel::BGR48BE,
|
|
|
|
|
AV_PIX_FMT_BGR48LE => Pixel::BGR48LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_YUV420P9BE => Pixel::YUV420P9BE,
|
|
|
|
|
AV_PIX_FMT_YUV420P9LE => Pixel::YUV420P9LE,
|
|
|
|
|
AV_PIX_FMT_YUV420P10BE => Pixel::YUV420P10BE,
|
|
|
|
|
AV_PIX_FMT_YUV420P10LE => Pixel::YUV420P10LE,
|
|
|
|
|
AV_PIX_FMT_YUV422P10BE => Pixel::YUV422P10BE,
|
|
|
|
|
AV_PIX_FMT_YUV422P10LE => Pixel::YUV422P10LE,
|
|
|
|
|
AV_PIX_FMT_YUV444P9BE => Pixel::YUV444P9BE,
|
|
|
|
|
AV_PIX_FMT_YUV444P9LE => Pixel::YUV444P9LE,
|
|
|
|
|
AV_PIX_FMT_YUV444P10BE => Pixel::YUV444P10BE,
|
|
|
|
|
AV_PIX_FMT_YUV444P10LE => Pixel::YUV444P10LE,
|
|
|
|
|
AV_PIX_FMT_YUV422P9BE => Pixel::YUV422P9BE,
|
|
|
|
|
AV_PIX_FMT_YUV422P9LE => Pixel::YUV422P9LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(not(feature = "ffmpeg_4_0"))]
|
2018-09-19 20:44:35 +00:00
|
|
|
AV_PIX_FMT_VDA_VLD => Pixel::VDA_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_GBRP => Pixel::GBRP,
|
|
|
|
|
AV_PIX_FMT_GBRP9BE => Pixel::GBRP9BE,
|
|
|
|
|
AV_PIX_FMT_GBRP9LE => Pixel::GBRP9LE,
|
|
|
|
|
AV_PIX_FMT_GBRP10BE => Pixel::GBRP10BE,
|
|
|
|
|
AV_PIX_FMT_GBRP10LE => Pixel::GBRP10LE,
|
|
|
|
|
AV_PIX_FMT_GBRP16BE => Pixel::GBRP16BE,
|
|
|
|
|
AV_PIX_FMT_GBRP16LE => Pixel::GBRP16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_YUVA420P9BE => Pixel::YUVA420P9BE,
|
|
|
|
|
AV_PIX_FMT_YUVA420P9LE => Pixel::YUVA420P9LE,
|
|
|
|
|
AV_PIX_FMT_YUVA422P9BE => Pixel::YUVA422P9BE,
|
|
|
|
|
AV_PIX_FMT_YUVA422P9LE => Pixel::YUVA422P9LE,
|
|
|
|
|
AV_PIX_FMT_YUVA444P9BE => Pixel::YUVA444P9BE,
|
|
|
|
|
AV_PIX_FMT_YUVA444P9LE => Pixel::YUVA444P9LE,
|
|
|
|
|
AV_PIX_FMT_YUVA420P10BE => Pixel::YUVA420P10BE,
|
|
|
|
|
AV_PIX_FMT_YUVA420P10LE => Pixel::YUVA420P10LE,
|
|
|
|
|
AV_PIX_FMT_YUVA422P10BE => Pixel::YUVA422P10BE,
|
|
|
|
|
AV_PIX_FMT_YUVA422P10LE => Pixel::YUVA422P10LE,
|
|
|
|
|
AV_PIX_FMT_YUVA444P10BE => Pixel::YUVA444P10BE,
|
|
|
|
|
AV_PIX_FMT_YUVA444P10LE => Pixel::YUVA444P10LE,
|
|
|
|
|
AV_PIX_FMT_YUVA420P16BE => Pixel::YUVA420P16BE,
|
|
|
|
|
AV_PIX_FMT_YUVA420P16LE => Pixel::YUVA420P16LE,
|
|
|
|
|
AV_PIX_FMT_YUVA422P16BE => Pixel::YUVA422P16BE,
|
|
|
|
|
AV_PIX_FMT_YUVA422P16LE => Pixel::YUVA422P16LE,
|
|
|
|
|
AV_PIX_FMT_YUVA444P16BE => Pixel::YUVA444P16BE,
|
|
|
|
|
AV_PIX_FMT_YUVA444P16LE => Pixel::YUVA444P16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_VDPAU => Pixel::VDPAU,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_XYZ12LE => Pixel::XYZ12LE,
|
|
|
|
|
AV_PIX_FMT_XYZ12BE => Pixel::XYZ12BE,
|
|
|
|
|
AV_PIX_FMT_NV16 => Pixel::NV16,
|
|
|
|
|
AV_PIX_FMT_NV20LE => Pixel::NV20LE,
|
|
|
|
|
AV_PIX_FMT_NV20BE => Pixel::NV20BE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_RGBA64BE => Pixel::RGBA64BE,
|
|
|
|
|
AV_PIX_FMT_RGBA64LE => Pixel::RGBA64LE,
|
|
|
|
|
AV_PIX_FMT_BGRA64BE => Pixel::BGRA64BE,
|
|
|
|
|
AV_PIX_FMT_BGRA64LE => Pixel::BGRA64LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_YVYU422 => Pixel::YVYU422,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(not(feature = "ffmpeg_4_0"))]
|
2018-09-19 20:44:35 +00:00
|
|
|
AV_PIX_FMT_VDA => Pixel::VDA,
|
|
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_YA16BE => Pixel::YA16BE,
|
|
|
|
|
AV_PIX_FMT_YA16LE => Pixel::YA16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_QSV => Pixel::QSV,
|
|
|
|
|
AV_PIX_FMT_MMAL => Pixel::MMAL,
|
2015-06-19 01:04:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_D3D11VA_VLD => Pixel::D3D11VA_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_CUDA => Pixel::CUDA,
|
2017-01-05 16:21:28 +01:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_0RGB => Pixel::ZRGB,
|
|
|
|
|
AV_PIX_FMT_RGB0 => Pixel::RGBZ,
|
|
|
|
|
AV_PIX_FMT_0BGR => Pixel::ZBGR,
|
|
|
|
|
AV_PIX_FMT_BGR0 => Pixel::BGRZ,
|
|
|
|
|
AV_PIX_FMT_YUVA444P => Pixel::YUVA444P,
|
|
|
|
|
AV_PIX_FMT_YUVA422P => Pixel::YUVA422P,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_YUV420P12BE => Pixel::YUV420P12BE,
|
|
|
|
|
AV_PIX_FMT_YUV420P12LE => Pixel::YUV420P12LE,
|
|
|
|
|
AV_PIX_FMT_YUV420P14BE => Pixel::YUV420P14BE,
|
|
|
|
|
AV_PIX_FMT_YUV420P14LE => Pixel::YUV420P14LE,
|
|
|
|
|
AV_PIX_FMT_YUV422P12BE => Pixel::YUV422P12BE,
|
|
|
|
|
AV_PIX_FMT_YUV422P12LE => Pixel::YUV422P12LE,
|
|
|
|
|
AV_PIX_FMT_YUV422P14BE => Pixel::YUV422P14BE,
|
|
|
|
|
AV_PIX_FMT_YUV422P14LE => Pixel::YUV422P14LE,
|
|
|
|
|
AV_PIX_FMT_YUV444P12BE => Pixel::YUV444P12BE,
|
|
|
|
|
AV_PIX_FMT_YUV444P12LE => Pixel::YUV444P12LE,
|
|
|
|
|
AV_PIX_FMT_YUV444P14BE => Pixel::YUV444P14BE,
|
|
|
|
|
AV_PIX_FMT_YUV444P14LE => Pixel::YUV444P14LE,
|
|
|
|
|
AV_PIX_FMT_GBRP12BE => Pixel::GBRP12BE,
|
|
|
|
|
AV_PIX_FMT_GBRP12LE => Pixel::GBRP12LE,
|
|
|
|
|
AV_PIX_FMT_GBRP14BE => Pixel::GBRP14BE,
|
|
|
|
|
AV_PIX_FMT_GBRP14LE => Pixel::GBRP14LE,
|
|
|
|
|
AV_PIX_FMT_GBRAP => Pixel::GBRAP,
|
|
|
|
|
AV_PIX_FMT_GBRAP16BE => Pixel::GBRAP16BE,
|
|
|
|
|
AV_PIX_FMT_GBRAP16LE => Pixel::GBRAP16LE,
|
|
|
|
|
AV_PIX_FMT_YUVJ411P => Pixel::YUVJ411P,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_BAYER_BGGR8 => Pixel::BAYER_BGGR8,
|
|
|
|
|
AV_PIX_FMT_BAYER_RGGB8 => Pixel::BAYER_RGGB8,
|
|
|
|
|
AV_PIX_FMT_BAYER_GBRG8 => Pixel::BAYER_GBRG8,
|
|
|
|
|
AV_PIX_FMT_BAYER_GRBG8 => Pixel::BAYER_GRBG8,
|
|
|
|
|
AV_PIX_FMT_BAYER_BGGR16LE => Pixel::BAYER_BGGR16LE,
|
|
|
|
|
AV_PIX_FMT_BAYER_BGGR16BE => Pixel::BAYER_BGGR16BE,
|
|
|
|
|
AV_PIX_FMT_BAYER_RGGB16LE => Pixel::BAYER_RGGB16LE,
|
|
|
|
|
AV_PIX_FMT_BAYER_RGGB16BE => Pixel::BAYER_RGGB16BE,
|
|
|
|
|
AV_PIX_FMT_BAYER_GBRG16LE => Pixel::BAYER_GBRG16LE,
|
|
|
|
|
AV_PIX_FMT_BAYER_GBRG16BE => Pixel::BAYER_GBRG16BE,
|
|
|
|
|
AV_PIX_FMT_BAYER_GRBG16LE => Pixel::BAYER_GRBG16LE,
|
|
|
|
|
AV_PIX_FMT_BAYER_GRBG16BE => Pixel::BAYER_GRBG16BE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_YUV440P10LE => Pixel::YUV440P10LE,
|
|
|
|
|
AV_PIX_FMT_YUV440P10BE => Pixel::YUV440P10BE,
|
|
|
|
|
AV_PIX_FMT_YUV440P12LE => Pixel::YUV440P12LE,
|
|
|
|
|
AV_PIX_FMT_YUV440P12BE => Pixel::YUV440P12BE,
|
|
|
|
|
AV_PIX_FMT_AYUV64LE => Pixel::AYUV64LE,
|
|
|
|
|
AV_PIX_FMT_AYUV64BE => Pixel::AYUV64BE,
|
2015-09-15 20:53:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_VIDEOTOOLBOX => Pixel::VIDEOTOOLBOX,
|
2015-06-19 01:04:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_P010LE => Pixel::P010LE,
|
|
|
|
|
AV_PIX_FMT_P010BE => Pixel::P010BE,
|
|
|
|
|
AV_PIX_FMT_GBRAP12BE => Pixel::GBRAP12BE,
|
|
|
|
|
AV_PIX_FMT_GBRAP12LE => Pixel::GBRAP12LE,
|
|
|
|
|
AV_PIX_FMT_GBRAP10LE => Pixel::GBRAP10LE,
|
|
|
|
|
AV_PIX_FMT_GBRAP10BE => Pixel::GBRAP10BE,
|
|
|
|
|
AV_PIX_FMT_MEDIACODEC => Pixel::MEDIACODEC,
|
|
|
|
|
AV_PIX_FMT_GRAY12BE => Pixel::GRAY12BE,
|
|
|
|
|
AV_PIX_FMT_GRAY12LE => Pixel::GRAY12LE,
|
|
|
|
|
AV_PIX_FMT_GRAY10BE => Pixel::GRAY10BE,
|
|
|
|
|
AV_PIX_FMT_GRAY10LE => Pixel::GRAY10LE,
|
|
|
|
|
AV_PIX_FMT_P016LE => Pixel::P016LE,
|
|
|
|
|
AV_PIX_FMT_P016BE => Pixel::P016BE,
|
2017-07-08 18:00:27 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_NB => Pixel::None,
|
2017-11-29 14:49:54 -05:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
AV_PIX_FMT_D3D11 => Pixel::D3D11,
|
|
|
|
|
AV_PIX_FMT_GRAY9BE => Pixel::GRAY9BE,
|
|
|
|
|
AV_PIX_FMT_GRAY9LE => Pixel::GRAY9LE,
|
|
|
|
|
AV_PIX_FMT_GBRPF32BE => Pixel::GBRPF32BE,
|
|
|
|
|
AV_PIX_FMT_GBRPF32LE => Pixel::GBRPF32LE,
|
|
|
|
|
AV_PIX_FMT_GBRAPF32BE => Pixel::GBRAPF32BE,
|
|
|
|
|
AV_PIX_FMT_GBRAPF32LE => Pixel::GBRAPF32LE,
|
|
|
|
|
AV_PIX_FMT_DRM_PRIME => Pixel::DRM_PRIME,
|
2020-06-01 14:15:33 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_0")]
|
2018-09-10 16:21:43 -04:00
|
|
|
AV_PIX_FMT_OPENCL => Pixel::OPENCL,
|
2020-06-01 14:15:33 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
AV_PIX_FMT_GRAY14BE => Pixel::GRAY14BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
AV_PIX_FMT_GRAY14LE => Pixel::GRAY14LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
AV_PIX_FMT_GRAYF32BE => Pixel::GRAYF32BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
AV_PIX_FMT_GRAYF32LE => Pixel::GRAYF32LE,
|
2020-06-01 14:42:39 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
AV_PIX_FMT_YUVA422P12BE => Pixel::YUVA422P12BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
AV_PIX_FMT_YUVA422P12LE => Pixel::YUVA422P12LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
AV_PIX_FMT_YUVA444P12BE => Pixel::YUVA444P12BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
AV_PIX_FMT_YUVA444P12LE => Pixel::YUVA444P12LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
AV_PIX_FMT_NV24 => Pixel::NV24,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
AV_PIX_FMT_NV42 => Pixel::NV42,
|
2020-06-17 01:51:38 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
AV_PIX_FMT_VULKAN => Pixel::VULKAN,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
AV_PIX_FMT_Y210BE => Pixel::Y210BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
AV_PIX_FMT_Y210LE => Pixel::Y210LE,
|
2020-07-23 21:54:00 +02:00
|
|
|
|
2021-05-06 15:27:59 -04:00
|
|
|
#[cfg(feature = "ffmpeg_4_4")]
|
|
|
|
|
AV_PIX_FMT_X2RGB10LE => Pixel::X2RGB10LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_4_4")]
|
|
|
|
|
AV_PIX_FMT_X2RGB10BE => Pixel::X2RGB10BE,
|
|
|
|
|
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_X2BGR10LE => Pixel::X2BGR10LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_X2BGR10BE => Pixel::X2BGR10BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_P210BE => Pixel::P210BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_P210LE => Pixel::P210LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_P410BE => Pixel::P410BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_P410LE => Pixel::P410LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_P216BE => Pixel::P216BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_P216LE => Pixel::P216LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_P416BE => Pixel::P416BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
AV_PIX_FMT_P416LE => Pixel::P416LE,
|
|
|
|
|
|
2023-02-27 12:06:58 +01:00
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_VUYA => Pixel::VUYA,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_RGBAF16BE => Pixel::RGBAF16BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_RGBAF16LE => Pixel::RGBAF16LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_VUYX => Pixel::VUYX,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_P012LE => Pixel::P012LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_P012BE => Pixel::P012BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_Y212BE => Pixel::Y212BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_Y212LE => Pixel::Y212LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_XV30BE => Pixel::XV30BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_XV30LE => Pixel::XV30LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_XV36BE => Pixel::XV36BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_XV36LE => Pixel::XV36LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_RGBF32BE => Pixel::RGBF32BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_RGBF32LE => Pixel::RGBF32LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_RGBAF32BE => Pixel::RGBAF32BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
AV_PIX_FMT_RGBAF32LE => Pixel::RGBAF32LE,
|
|
|
|
|
|
2023-12-03 19:55:27 +01:00
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
AV_PIX_FMT_P212BE => Pixel::P212BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
AV_PIX_FMT_P212LE => Pixel::P212LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
AV_PIX_FMT_P412BE => Pixel::P412BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
AV_PIX_FMT_P412LE => Pixel::P412LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
AV_PIX_FMT_GBRAP14BE => Pixel::GBRAP14BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
AV_PIX_FMT_GBRAP14LE => Pixel::GBRAP14LE,
|
|
|
|
|
|
2020-07-23 21:54:00 +02:00
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
AV_PIX_FMT_SAND128 => Pixel::SAND128,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
AV_PIX_FMT_SAND64_10 => Pixel::SAND64_10,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
AV_PIX_FMT_SAND64_16 => Pixel::SAND64_16,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
AV_PIX_FMT_RPI4_8 => Pixel::RPI4_8,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
AV_PIX_FMT_RPI4_10 => Pixel::RPI4_10,
|
2018-04-10 17:06:42 +03:00
|
|
|
}
|
|
|
|
|
}
|
2015-05-13 23:36:08 +02:00
|
|
|
}
|
|
|
|
|
|
2021-07-06 19:05:15 +02:00
|
|
|
impl From<Pixel> for AVPixelFormat {
|
2018-04-10 17:06:42 +03:00
|
|
|
#[inline]
|
2021-07-06 19:05:15 +02:00
|
|
|
fn from(value: Pixel) -> AVPixelFormat {
|
|
|
|
|
match value {
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::None => AV_PIX_FMT_NONE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YUV420P => AV_PIX_FMT_YUV420P,
|
|
|
|
|
Pixel::YUYV422 => AV_PIX_FMT_YUYV422,
|
|
|
|
|
Pixel::RGB24 => AV_PIX_FMT_RGB24,
|
|
|
|
|
Pixel::BGR24 => AV_PIX_FMT_BGR24,
|
|
|
|
|
Pixel::YUV422P => AV_PIX_FMT_YUV422P,
|
|
|
|
|
Pixel::YUV444P => AV_PIX_FMT_YUV444P,
|
|
|
|
|
Pixel::YUV410P => AV_PIX_FMT_YUV410P,
|
|
|
|
|
Pixel::YUV411P => AV_PIX_FMT_YUV411P,
|
|
|
|
|
Pixel::GRAY8 => AV_PIX_FMT_GRAY8,
|
|
|
|
|
Pixel::MonoWhite => AV_PIX_FMT_MONOWHITE,
|
|
|
|
|
Pixel::MonoBlack => AV_PIX_FMT_MONOBLACK,
|
|
|
|
|
Pixel::PAL8 => AV_PIX_FMT_PAL8,
|
|
|
|
|
Pixel::YUVJ420P => AV_PIX_FMT_YUVJ420P,
|
|
|
|
|
Pixel::YUVJ422P => AV_PIX_FMT_YUVJ422P,
|
|
|
|
|
Pixel::YUVJ444P => AV_PIX_FMT_YUVJ444P,
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::XVMC_MPEG2_MC => AV_PIX_FMT_XVMC_MPEG2_MC,
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::XVMC_MPEG2_IDCT => AV_PIX_FMT_XVMC_MPEG2_IDCT,
|
|
|
|
|
Pixel::UYVY422 => AV_PIX_FMT_UYVY422,
|
|
|
|
|
Pixel::UYYVYY411 => AV_PIX_FMT_UYYVYY411,
|
|
|
|
|
Pixel::BGR8 => AV_PIX_FMT_BGR8,
|
|
|
|
|
Pixel::BGR4 => AV_PIX_FMT_BGR4,
|
|
|
|
|
Pixel::BGR4_BYTE => AV_PIX_FMT_BGR4_BYTE,
|
|
|
|
|
Pixel::RGB8 => AV_PIX_FMT_RGB8,
|
|
|
|
|
Pixel::RGB4 => AV_PIX_FMT_RGB4,
|
|
|
|
|
Pixel::RGB4_BYTE => AV_PIX_FMT_RGB4_BYTE,
|
|
|
|
|
Pixel::NV12 => AV_PIX_FMT_NV12,
|
|
|
|
|
Pixel::NV21 => AV_PIX_FMT_NV21,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::ARGB => AV_PIX_FMT_ARGB,
|
|
|
|
|
Pixel::RGBA => AV_PIX_FMT_RGBA,
|
|
|
|
|
Pixel::ABGR => AV_PIX_FMT_ABGR,
|
|
|
|
|
Pixel::BGRA => AV_PIX_FMT_BGRA,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::GRAY16BE => AV_PIX_FMT_GRAY16BE,
|
|
|
|
|
Pixel::GRAY16LE => AV_PIX_FMT_GRAY16LE,
|
|
|
|
|
Pixel::YUV440P => AV_PIX_FMT_YUV440P,
|
|
|
|
|
Pixel::YUVJ440P => AV_PIX_FMT_YUVJ440P,
|
|
|
|
|
Pixel::YUVA420P => AV_PIX_FMT_YUVA420P,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
Pixel::VDPAU_H264 => AV_PIX_FMT_VDPAU_H264,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
Pixel::VDPAU_MPEG1 => AV_PIX_FMT_VDPAU_MPEG1,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
Pixel::VDPAU_MPEG2 => AV_PIX_FMT_VDPAU_MPEG2,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
Pixel::VDPAU_WMV3 => AV_PIX_FMT_VDPAU_WMV3,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
Pixel::VDPAU_VC1 => AV_PIX_FMT_VDPAU_VC1,
|
|
|
|
|
Pixel::RGB48BE => AV_PIX_FMT_RGB48BE,
|
|
|
|
|
Pixel::RGB48LE => AV_PIX_FMT_RGB48LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::RGB565BE => AV_PIX_FMT_RGB565BE,
|
|
|
|
|
Pixel::RGB565LE => AV_PIX_FMT_RGB565LE,
|
|
|
|
|
Pixel::RGB555BE => AV_PIX_FMT_RGB555BE,
|
|
|
|
|
Pixel::RGB555LE => AV_PIX_FMT_RGB555LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::BGR565BE => AV_PIX_FMT_BGR565BE,
|
|
|
|
|
Pixel::BGR565LE => AV_PIX_FMT_BGR565LE,
|
|
|
|
|
Pixel::BGR555BE => AV_PIX_FMT_BGR555BE,
|
|
|
|
|
Pixel::BGR555LE => AV_PIX_FMT_BGR555LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::VAAPI_MOCO => AV_PIX_FMT_VAAPI_MOCO,
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::VAAPI_IDCT => AV_PIX_FMT_VAAPI_IDCT,
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(all(feature = "ff_api_vaapi", not(feature = "ffmpeg_5_0")))]
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::VAAPI_VLD => AV_PIX_FMT_VAAPI_VLD,
|
|
|
|
|
#[cfg(not(feature = "ff_api_vaapi"))]
|
|
|
|
|
Pixel::VAAPI => AV_PIX_FMT_VAAPI,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YUV420P16LE => AV_PIX_FMT_YUV420P16LE,
|
|
|
|
|
Pixel::YUV420P16BE => AV_PIX_FMT_YUV420P16BE,
|
|
|
|
|
Pixel::YUV422P16LE => AV_PIX_FMT_YUV422P16LE,
|
|
|
|
|
Pixel::YUV422P16BE => AV_PIX_FMT_YUV422P16BE,
|
|
|
|
|
Pixel::YUV444P16LE => AV_PIX_FMT_YUV444P16LE,
|
|
|
|
|
Pixel::YUV444P16BE => AV_PIX_FMT_YUV444P16BE,
|
|
|
|
|
#[cfg(feature = "ff_api_vdpau")]
|
|
|
|
|
Pixel::VDPAU_MPEG4 => AV_PIX_FMT_VDPAU_MPEG4,
|
|
|
|
|
Pixel::DXVA2_VLD => AV_PIX_FMT_DXVA2_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::RGB444LE => AV_PIX_FMT_RGB444LE,
|
|
|
|
|
Pixel::RGB444BE => AV_PIX_FMT_RGB444BE,
|
|
|
|
|
Pixel::BGR444LE => AV_PIX_FMT_BGR444LE,
|
|
|
|
|
Pixel::BGR444BE => AV_PIX_FMT_BGR444BE,
|
|
|
|
|
Pixel::YA8 => AV_PIX_FMT_YA8,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::BGR48BE => AV_PIX_FMT_BGR48BE,
|
|
|
|
|
Pixel::BGR48LE => AV_PIX_FMT_BGR48LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YUV420P9BE => AV_PIX_FMT_YUV420P9BE,
|
|
|
|
|
Pixel::YUV420P9LE => AV_PIX_FMT_YUV420P9LE,
|
|
|
|
|
Pixel::YUV420P10BE => AV_PIX_FMT_YUV420P10BE,
|
|
|
|
|
Pixel::YUV420P10LE => AV_PIX_FMT_YUV420P10LE,
|
|
|
|
|
Pixel::YUV422P10BE => AV_PIX_FMT_YUV422P10BE,
|
|
|
|
|
Pixel::YUV422P10LE => AV_PIX_FMT_YUV422P10LE,
|
|
|
|
|
Pixel::YUV444P9BE => AV_PIX_FMT_YUV444P9BE,
|
|
|
|
|
Pixel::YUV444P9LE => AV_PIX_FMT_YUV444P9LE,
|
|
|
|
|
Pixel::YUV444P10BE => AV_PIX_FMT_YUV444P10BE,
|
|
|
|
|
Pixel::YUV444P10LE => AV_PIX_FMT_YUV444P10LE,
|
|
|
|
|
Pixel::YUV422P9BE => AV_PIX_FMT_YUV422P9BE,
|
|
|
|
|
Pixel::YUV422P9LE => AV_PIX_FMT_YUV422P9LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(not(feature = "ffmpeg_4_0"))]
|
2018-09-19 20:44:35 +00:00
|
|
|
Pixel::VDA_VLD => AV_PIX_FMT_VDA_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::GBRP => AV_PIX_FMT_GBRP,
|
|
|
|
|
Pixel::GBRP9BE => AV_PIX_FMT_GBRP9BE,
|
|
|
|
|
Pixel::GBRP9LE => AV_PIX_FMT_GBRP9LE,
|
|
|
|
|
Pixel::GBRP10BE => AV_PIX_FMT_GBRP10BE,
|
|
|
|
|
Pixel::GBRP10LE => AV_PIX_FMT_GBRP10LE,
|
|
|
|
|
Pixel::GBRP16BE => AV_PIX_FMT_GBRP16BE,
|
|
|
|
|
Pixel::GBRP16LE => AV_PIX_FMT_GBRP16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YUVA420P9BE => AV_PIX_FMT_YUVA420P9BE,
|
|
|
|
|
Pixel::YUVA420P9LE => AV_PIX_FMT_YUVA420P9LE,
|
|
|
|
|
Pixel::YUVA422P9BE => AV_PIX_FMT_YUVA422P9BE,
|
|
|
|
|
Pixel::YUVA422P9LE => AV_PIX_FMT_YUVA422P9LE,
|
|
|
|
|
Pixel::YUVA444P9BE => AV_PIX_FMT_YUVA444P9BE,
|
|
|
|
|
Pixel::YUVA444P9LE => AV_PIX_FMT_YUVA444P9LE,
|
|
|
|
|
Pixel::YUVA420P10BE => AV_PIX_FMT_YUVA420P10BE,
|
|
|
|
|
Pixel::YUVA420P10LE => AV_PIX_FMT_YUVA420P10LE,
|
|
|
|
|
Pixel::YUVA422P10BE => AV_PIX_FMT_YUVA422P10BE,
|
|
|
|
|
Pixel::YUVA422P10LE => AV_PIX_FMT_YUVA422P10LE,
|
|
|
|
|
Pixel::YUVA444P10BE => AV_PIX_FMT_YUVA444P10BE,
|
|
|
|
|
Pixel::YUVA444P10LE => AV_PIX_FMT_YUVA444P10LE,
|
|
|
|
|
Pixel::YUVA420P16BE => AV_PIX_FMT_YUVA420P16BE,
|
|
|
|
|
Pixel::YUVA420P16LE => AV_PIX_FMT_YUVA420P16LE,
|
|
|
|
|
Pixel::YUVA422P16BE => AV_PIX_FMT_YUVA422P16BE,
|
|
|
|
|
Pixel::YUVA422P16LE => AV_PIX_FMT_YUVA422P16LE,
|
|
|
|
|
Pixel::YUVA444P16BE => AV_PIX_FMT_YUVA444P16BE,
|
|
|
|
|
Pixel::YUVA444P16LE => AV_PIX_FMT_YUVA444P16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::VDPAU => AV_PIX_FMT_VDPAU,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::XYZ12LE => AV_PIX_FMT_XYZ12LE,
|
|
|
|
|
Pixel::XYZ12BE => AV_PIX_FMT_XYZ12BE,
|
|
|
|
|
Pixel::NV16 => AV_PIX_FMT_NV16,
|
|
|
|
|
Pixel::NV20LE => AV_PIX_FMT_NV20LE,
|
|
|
|
|
Pixel::NV20BE => AV_PIX_FMT_NV20BE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::RGBA64BE => AV_PIX_FMT_RGBA64BE,
|
|
|
|
|
Pixel::RGBA64LE => AV_PIX_FMT_RGBA64LE,
|
|
|
|
|
Pixel::BGRA64BE => AV_PIX_FMT_BGRA64BE,
|
|
|
|
|
Pixel::BGRA64LE => AV_PIX_FMT_BGRA64LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YVYU422 => AV_PIX_FMT_YVYU422,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(not(feature = "ffmpeg_4_0"))]
|
2018-09-19 20:44:35 +00:00
|
|
|
Pixel::VDA => AV_PIX_FMT_VDA,
|
|
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YA16BE => AV_PIX_FMT_YA16BE,
|
|
|
|
|
Pixel::YA16LE => AV_PIX_FMT_YA16LE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::QSV => AV_PIX_FMT_QSV,
|
|
|
|
|
Pixel::MMAL => AV_PIX_FMT_MMAL,
|
2015-06-19 01:04:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::D3D11VA_VLD => AV_PIX_FMT_D3D11VA_VLD,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::CUDA => AV_PIX_FMT_CUDA,
|
2017-01-05 16:21:28 +01:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::ZRGB => AV_PIX_FMT_0RGB,
|
|
|
|
|
Pixel::RGBZ => AV_PIX_FMT_RGB0,
|
|
|
|
|
Pixel::ZBGR => AV_PIX_FMT_0BGR,
|
|
|
|
|
Pixel::BGRZ => AV_PIX_FMT_BGR0,
|
|
|
|
|
Pixel::YUVA444P => AV_PIX_FMT_YUVA444P,
|
|
|
|
|
Pixel::YUVA422P => AV_PIX_FMT_YUVA422P,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YUV420P12BE => AV_PIX_FMT_YUV420P12BE,
|
|
|
|
|
Pixel::YUV420P12LE => AV_PIX_FMT_YUV420P12LE,
|
|
|
|
|
Pixel::YUV420P14BE => AV_PIX_FMT_YUV420P14BE,
|
|
|
|
|
Pixel::YUV420P14LE => AV_PIX_FMT_YUV420P14LE,
|
|
|
|
|
Pixel::YUV422P12BE => AV_PIX_FMT_YUV422P12BE,
|
|
|
|
|
Pixel::YUV422P12LE => AV_PIX_FMT_YUV422P12LE,
|
|
|
|
|
Pixel::YUV422P14BE => AV_PIX_FMT_YUV422P14BE,
|
|
|
|
|
Pixel::YUV422P14LE => AV_PIX_FMT_YUV422P14LE,
|
|
|
|
|
Pixel::YUV444P12BE => AV_PIX_FMT_YUV444P12BE,
|
|
|
|
|
Pixel::YUV444P12LE => AV_PIX_FMT_YUV444P12LE,
|
|
|
|
|
Pixel::YUV444P14BE => AV_PIX_FMT_YUV444P14BE,
|
|
|
|
|
Pixel::YUV444P14LE => AV_PIX_FMT_YUV444P14LE,
|
|
|
|
|
Pixel::GBRP12BE => AV_PIX_FMT_GBRP12BE,
|
|
|
|
|
Pixel::GBRP12LE => AV_PIX_FMT_GBRP12LE,
|
|
|
|
|
Pixel::GBRP14BE => AV_PIX_FMT_GBRP14BE,
|
|
|
|
|
Pixel::GBRP14LE => AV_PIX_FMT_GBRP14LE,
|
|
|
|
|
Pixel::GBRAP => AV_PIX_FMT_GBRAP,
|
|
|
|
|
Pixel::GBRAP16BE => AV_PIX_FMT_GBRAP16BE,
|
|
|
|
|
Pixel::GBRAP16LE => AV_PIX_FMT_GBRAP16LE,
|
|
|
|
|
Pixel::YUVJ411P => AV_PIX_FMT_YUVJ411P,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::BAYER_BGGR8 => AV_PIX_FMT_BAYER_BGGR8,
|
|
|
|
|
Pixel::BAYER_RGGB8 => AV_PIX_FMT_BAYER_RGGB8,
|
|
|
|
|
Pixel::BAYER_GBRG8 => AV_PIX_FMT_BAYER_GBRG8,
|
|
|
|
|
Pixel::BAYER_GRBG8 => AV_PIX_FMT_BAYER_GRBG8,
|
|
|
|
|
Pixel::BAYER_BGGR16LE => AV_PIX_FMT_BAYER_BGGR16LE,
|
|
|
|
|
Pixel::BAYER_BGGR16BE => AV_PIX_FMT_BAYER_BGGR16BE,
|
|
|
|
|
Pixel::BAYER_RGGB16LE => AV_PIX_FMT_BAYER_RGGB16LE,
|
|
|
|
|
Pixel::BAYER_RGGB16BE => AV_PIX_FMT_BAYER_RGGB16BE,
|
|
|
|
|
Pixel::BAYER_GBRG16LE => AV_PIX_FMT_BAYER_GBRG16LE,
|
|
|
|
|
Pixel::BAYER_GBRG16BE => AV_PIX_FMT_BAYER_GBRG16BE,
|
|
|
|
|
Pixel::BAYER_GRBG16LE => AV_PIX_FMT_BAYER_GRBG16LE,
|
|
|
|
|
Pixel::BAYER_GRBG16BE => AV_PIX_FMT_BAYER_GRBG16BE,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YUV440P10LE => AV_PIX_FMT_YUV440P10LE,
|
|
|
|
|
Pixel::YUV440P10BE => AV_PIX_FMT_YUV440P10BE,
|
|
|
|
|
Pixel::YUV440P12LE => AV_PIX_FMT_YUV440P12LE,
|
|
|
|
|
Pixel::YUV440P12BE => AV_PIX_FMT_YUV440P12BE,
|
|
|
|
|
Pixel::AYUV64LE => AV_PIX_FMT_AYUV64LE,
|
|
|
|
|
Pixel::AYUV64BE => AV_PIX_FMT_AYUV64BE,
|
2015-09-15 20:53:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::VIDEOTOOLBOX => AV_PIX_FMT_VIDEOTOOLBOX,
|
2015-06-19 01:04:49 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
// --- defaults
|
2022-08-03 08:50:45 +02:00
|
|
|
#[cfg(feature = "ffmpeg_4_0")]
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::XVMC => AV_PIX_FMT_XVMC,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::RGB32 => AV_PIX_FMT_RGB32,
|
|
|
|
|
Pixel::RGB32_1 => AV_PIX_FMT_RGB32_1,
|
|
|
|
|
Pixel::BGR32 => AV_PIX_FMT_BGR32,
|
|
|
|
|
Pixel::BGR32_1 => AV_PIX_FMT_BGR32_1,
|
|
|
|
|
Pixel::ZRGB32 => AV_PIX_FMT_0RGB32,
|
|
|
|
|
Pixel::ZBGR32 => AV_PIX_FMT_0BGR32,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::GRAY16 => AV_PIX_FMT_GRAY16,
|
|
|
|
|
Pixel::YA16 => AV_PIX_FMT_YA16,
|
|
|
|
|
Pixel::RGB48 => AV_PIX_FMT_RGB48,
|
|
|
|
|
Pixel::RGB565 => AV_PIX_FMT_RGB565,
|
|
|
|
|
Pixel::RGB555 => AV_PIX_FMT_RGB555,
|
|
|
|
|
Pixel::RGB444 => AV_PIX_FMT_RGB444,
|
|
|
|
|
Pixel::BGR48 => AV_PIX_FMT_BGR48,
|
|
|
|
|
Pixel::BGR565 => AV_PIX_FMT_BGR565,
|
|
|
|
|
Pixel::BGR555 => AV_PIX_FMT_BGR555,
|
|
|
|
|
Pixel::BGR444 => AV_PIX_FMT_BGR444,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YUV420P9 => AV_PIX_FMT_YUV420P9,
|
|
|
|
|
Pixel::YUV422P9 => AV_PIX_FMT_YUV422P9,
|
|
|
|
|
Pixel::YUV444P9 => AV_PIX_FMT_YUV444P9,
|
|
|
|
|
Pixel::YUV420P10 => AV_PIX_FMT_YUV420P10,
|
|
|
|
|
Pixel::YUV422P10 => AV_PIX_FMT_YUV422P10,
|
|
|
|
|
Pixel::YUV440P10 => AV_PIX_FMT_YUV440P10,
|
|
|
|
|
Pixel::YUV444P10 => AV_PIX_FMT_YUV444P10,
|
|
|
|
|
Pixel::YUV420P12 => AV_PIX_FMT_YUV420P12,
|
|
|
|
|
Pixel::YUV422P12 => AV_PIX_FMT_YUV422P12,
|
|
|
|
|
Pixel::YUV440P12 => AV_PIX_FMT_YUV440P12,
|
|
|
|
|
Pixel::YUV444P12 => AV_PIX_FMT_YUV444P12,
|
|
|
|
|
Pixel::YUV420P14 => AV_PIX_FMT_YUV420P14,
|
|
|
|
|
Pixel::YUV422P14 => AV_PIX_FMT_YUV422P14,
|
|
|
|
|
Pixel::YUV444P14 => AV_PIX_FMT_YUV444P14,
|
|
|
|
|
Pixel::YUV420P16 => AV_PIX_FMT_YUV420P16,
|
|
|
|
|
Pixel::YUV422P16 => AV_PIX_FMT_YUV422P16,
|
|
|
|
|
Pixel::YUV444P16 => AV_PIX_FMT_YUV444P16,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::GBRP9 => AV_PIX_FMT_GBRP9,
|
|
|
|
|
Pixel::GBRP10 => AV_PIX_FMT_GBRP10,
|
|
|
|
|
Pixel::GBRP12 => AV_PIX_FMT_GBRP12,
|
|
|
|
|
Pixel::GBRP14 => AV_PIX_FMT_GBRP14,
|
|
|
|
|
Pixel::GBRP16 => AV_PIX_FMT_GBRP16,
|
|
|
|
|
Pixel::GBRAP16 => AV_PIX_FMT_GBRAP16,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::BAYER_BGGR16 => AV_PIX_FMT_BAYER_BGGR16,
|
|
|
|
|
Pixel::BAYER_RGGB16 => AV_PIX_FMT_BAYER_RGGB16,
|
|
|
|
|
Pixel::BAYER_GBRG16 => AV_PIX_FMT_BAYER_GBRG16,
|
|
|
|
|
Pixel::BAYER_GRBG16 => AV_PIX_FMT_BAYER_GRBG16,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::YUVA420P9 => AV_PIX_FMT_YUVA420P9,
|
|
|
|
|
Pixel::YUVA422P9 => AV_PIX_FMT_YUVA422P9,
|
|
|
|
|
Pixel::YUVA444P9 => AV_PIX_FMT_YUVA444P9,
|
|
|
|
|
Pixel::YUVA420P10 => AV_PIX_FMT_YUVA420P10,
|
|
|
|
|
Pixel::YUVA422P10 => AV_PIX_FMT_YUVA422P10,
|
|
|
|
|
Pixel::YUVA444P10 => AV_PIX_FMT_YUVA444P10,
|
|
|
|
|
Pixel::YUVA420P16 => AV_PIX_FMT_YUVA420P16,
|
|
|
|
|
Pixel::YUVA422P16 => AV_PIX_FMT_YUVA422P16,
|
|
|
|
|
Pixel::YUVA444P16 => AV_PIX_FMT_YUVA444P16,
|
2015-05-13 23:36:08 +02:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::XYZ12 => AV_PIX_FMT_XYZ12,
|
|
|
|
|
Pixel::NV20 => AV_PIX_FMT_NV20,
|
|
|
|
|
Pixel::AYUV64 => AV_PIX_FMT_AYUV64,
|
2017-07-08 18:00:27 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::P010LE => AV_PIX_FMT_P010LE,
|
|
|
|
|
Pixel::P010BE => AV_PIX_FMT_P010BE,
|
|
|
|
|
Pixel::GBRAP12BE => AV_PIX_FMT_GBRAP12BE,
|
|
|
|
|
Pixel::GBRAP12LE => AV_PIX_FMT_GBRAP12LE,
|
|
|
|
|
Pixel::GBRAP10LE => AV_PIX_FMT_GBRAP10LE,
|
|
|
|
|
Pixel::GBRAP10BE => AV_PIX_FMT_GBRAP10BE,
|
|
|
|
|
Pixel::MEDIACODEC => AV_PIX_FMT_MEDIACODEC,
|
|
|
|
|
Pixel::GRAY12BE => AV_PIX_FMT_GRAY12BE,
|
|
|
|
|
Pixel::GRAY12LE => AV_PIX_FMT_GRAY12LE,
|
|
|
|
|
Pixel::GRAY10BE => AV_PIX_FMT_GRAY10BE,
|
|
|
|
|
Pixel::GRAY10LE => AV_PIX_FMT_GRAY10LE,
|
|
|
|
|
Pixel::P016LE => AV_PIX_FMT_P016LE,
|
|
|
|
|
Pixel::P016BE => AV_PIX_FMT_P016BE,
|
2017-11-29 14:49:54 -05:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
Pixel::D3D11 => AV_PIX_FMT_D3D11,
|
|
|
|
|
Pixel::GRAY9BE => AV_PIX_FMT_GRAY9BE,
|
|
|
|
|
Pixel::GRAY9LE => AV_PIX_FMT_GRAY9LE,
|
|
|
|
|
Pixel::GBRPF32BE => AV_PIX_FMT_GBRPF32BE,
|
|
|
|
|
Pixel::GBRPF32LE => AV_PIX_FMT_GBRPF32LE,
|
|
|
|
|
Pixel::GBRAPF32BE => AV_PIX_FMT_GBRAPF32BE,
|
|
|
|
|
Pixel::GBRAPF32LE => AV_PIX_FMT_GBRAPF32LE,
|
|
|
|
|
Pixel::DRM_PRIME => AV_PIX_FMT_DRM_PRIME,
|
2020-06-01 14:15:33 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_0")]
|
2018-09-10 16:21:43 -04:00
|
|
|
Pixel::OPENCL => AV_PIX_FMT_OPENCL,
|
2020-06-01 14:15:33 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
Pixel::GRAY14BE => AV_PIX_FMT_GRAY14BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
Pixel::GRAY14LE => AV_PIX_FMT_GRAY14LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
Pixel::GRAYF32BE => AV_PIX_FMT_GRAYF32BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_1")]
|
2020-06-01 14:15:33 +08:00
|
|
|
Pixel::GRAYF32LE => AV_PIX_FMT_GRAYF32LE,
|
2020-06-01 14:42:39 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
Pixel::YUVA422P12BE => AV_PIX_FMT_YUVA422P12BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
Pixel::YUVA422P12LE => AV_PIX_FMT_YUVA422P12LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
Pixel::YUVA444P12BE => AV_PIX_FMT_YUVA444P12BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
Pixel::YUVA444P12LE => AV_PIX_FMT_YUVA444P12LE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
Pixel::NV24 => AV_PIX_FMT_NV24,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_2")]
|
2020-06-01 14:42:39 +08:00
|
|
|
Pixel::NV42 => AV_PIX_FMT_NV42,
|
2020-06-17 01:51:38 +08:00
|
|
|
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
Pixel::VULKAN => AV_PIX_FMT_VULKAN,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
Pixel::Y210BE => AV_PIX_FMT_Y210BE,
|
2020-08-02 11:44:13 +08:00
|
|
|
#[cfg(feature = "ffmpeg_4_3")]
|
2020-06-17 01:51:38 +08:00
|
|
|
Pixel::Y210LE => AV_PIX_FMT_Y210LE,
|
2020-07-23 21:54:00 +02:00
|
|
|
|
2021-05-06 15:27:59 -04:00
|
|
|
#[cfg(feature = "ffmpeg_4_4")]
|
|
|
|
|
Pixel::X2RGB10LE => AV_PIX_FMT_X2RGB10LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_4_4")]
|
|
|
|
|
Pixel::X2RGB10BE => AV_PIX_FMT_X2RGB10BE,
|
|
|
|
|
|
2022-01-24 21:03:47 +01:00
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::X2BGR10LE => AV_PIX_FMT_X2BGR10LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::X2BGR10BE => AV_PIX_FMT_X2BGR10BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::P210BE => AV_PIX_FMT_P210BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::P210LE => AV_PIX_FMT_P210LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::P410BE => AV_PIX_FMT_P410BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::P410LE => AV_PIX_FMT_P410LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::P216BE => AV_PIX_FMT_P216BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::P216LE => AV_PIX_FMT_P216LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::P416BE => AV_PIX_FMT_P416BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_5_0")]
|
|
|
|
|
Pixel::P416LE => AV_PIX_FMT_P416LE,
|
|
|
|
|
|
2023-02-27 12:06:58 +01:00
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::VUYA => AV_PIX_FMT_VUYA,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::RGBAF16BE => AV_PIX_FMT_RGBAF16BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::RGBAF16LE => AV_PIX_FMT_RGBAF16LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::VUYX => AV_PIX_FMT_VUYX,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::P012LE => AV_PIX_FMT_P012LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::P012BE => AV_PIX_FMT_P012BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::Y212BE => AV_PIX_FMT_Y212BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::Y212LE => AV_PIX_FMT_Y212LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::XV30BE => AV_PIX_FMT_XV30BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::XV30LE => AV_PIX_FMT_XV30LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::XV36BE => AV_PIX_FMT_XV36BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::XV36LE => AV_PIX_FMT_XV36LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::RGBF32BE => AV_PIX_FMT_RGBF32BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::RGBF32LE => AV_PIX_FMT_RGBF32LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::RGBAF32BE => AV_PIX_FMT_RGBAF32BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_0")]
|
|
|
|
|
Pixel::RGBAF32LE => AV_PIX_FMT_RGBAF32LE,
|
|
|
|
|
|
2023-12-03 19:55:27 +01:00
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
Pixel::P212BE => AV_PIX_FMT_P212BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
Pixel::P212LE => AV_PIX_FMT_P212LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
Pixel::P412BE => AV_PIX_FMT_P412BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
Pixel::P412LE => AV_PIX_FMT_P412LE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
Pixel::GBRAP14BE => AV_PIX_FMT_GBRAP14BE,
|
|
|
|
|
#[cfg(feature = "ffmpeg_6_1")]
|
|
|
|
|
Pixel::GBRAP14LE => AV_PIX_FMT_GBRAP14LE,
|
|
|
|
|
|
2020-07-23 21:54:00 +02:00
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
Pixel::SAND128 => AV_PIX_FMT_SAND128,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
Pixel::SAND64_10 => AV_PIX_FMT_SAND64_10,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
Pixel::SAND64_16 => AV_PIX_FMT_SAND64_16,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
Pixel::RPI4_8 => AV_PIX_FMT_RPI4_8,
|
|
|
|
|
#[cfg(feature = "rpi")]
|
|
|
|
|
Pixel::RPI4_10 => AV_PIX_FMT_RPI4_10,
|
2018-04-10 17:06:42 +03:00
|
|
|
}
|
|
|
|
|
}
|
2015-05-13 23:36:08 +02:00
|
|
|
}
|
2017-06-28 11:53:24 +03:00
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
|
|
|
|
pub enum ParsePixelError {
|
2018-04-10 17:06:42 +03:00
|
|
|
NulError(NulError),
|
|
|
|
|
UnknownFormat,
|
2017-06-28 11:53:24 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl fmt::Display for ParsePixelError {
|
2018-04-10 17:06:42 +03:00
|
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
|
|
|
match *self {
|
|
|
|
|
ParsePixelError::NulError(ref e) => e.fmt(f),
|
|
|
|
|
ParsePixelError::UnknownFormat => write!(f, "unknown pixel format"),
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-06-28 11:53:24 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl error::Error for ParsePixelError {
|
2020-05-31 14:08:25 +08:00
|
|
|
fn cause(&self) -> Option<&dyn error::Error> {
|
2018-04-10 17:06:42 +03:00
|
|
|
match *self {
|
|
|
|
|
ParsePixelError::NulError(ref e) => Some(e),
|
|
|
|
|
ParsePixelError::UnknownFormat => None,
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-06-28 11:53:24 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl From<NulError> for ParsePixelError {
|
2018-04-10 17:06:42 +03:00
|
|
|
fn from(x: NulError) -> ParsePixelError {
|
|
|
|
|
ParsePixelError::NulError(x)
|
|
|
|
|
}
|
2017-06-28 11:53:24 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl FromStr for Pixel {
|
2018-04-10 17:06:42 +03:00
|
|
|
type Err = ParsePixelError;
|
2017-06-28 11:53:24 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
#[inline(always)]
|
|
|
|
|
fn from_str(s: &str) -> Result<Pixel, ParsePixelError> {
|
|
|
|
|
let cstring = CString::new(s)?;
|
|
|
|
|
let format = unsafe { av_get_pix_fmt(cstring.as_ptr()) }.into();
|
2017-06-28 11:53:24 +03:00
|
|
|
|
2018-04-10 17:06:42 +03:00
|
|
|
if format == Pixel::None {
|
|
|
|
|
Err(ParsePixelError::UnknownFormat)
|
|
|
|
|
} else {
|
|
|
|
|
Ok(format)
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-06-28 11:53:24 +03:00
|
|
|
}
|