Add FFmpeg 4.2 specific code

This commit is contained in:
Zhiming Wang 2020-06-01 14:42:39 +08:00
parent a69a457e3a
commit fcca68ae5e
No known key found for this signature in database
GPG Key ID: 5B58F95EC95965D8
4 changed files with 107 additions and 1 deletions

View File

@ -15,8 +15,9 @@ keywords = ["ffmpeg", "multimedia", "video", "audio"]
categories = ["multimedia"] categories = ["multimedia"]
[features] [features]
default = ["ffmpeg41", "codec", "device", "filter", "format", "resampling", "software-resampling", "software-scaling"] default = ["ffmpeg42", "codec", "device", "filter", "format", "resampling", "software-resampling", "software-scaling"]
ffmpeg42 = ["ffmpeg41"]
ffmpeg41 = ["ffmpeg4"] ffmpeg41 = ["ffmpeg4"]
ffmpeg4 = [] ffmpeg4 = []

View File

@ -510,6 +510,23 @@ pub enum Id {
ATRAC9, ATRAC9,
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
TTML, TTML,
#[cfg(feature = "ffmpeg42")]
HYMT,
#[cfg(feature = "ffmpeg42")]
ARBC,
#[cfg(feature = "ffmpeg42")]
AGM,
#[cfg(feature = "ffmpeg42")]
LSCR,
#[cfg(feature = "ffmpeg42")]
VP4,
#[cfg(feature = "ffmpeg42")]
ADPCM_AGM,
#[cfg(feature = "ffmpeg42")]
HCOM,
#[cfg(feature = "ffmpeg42")]
ARIB_CAPTION,
} }
impl Id { impl Id {
@ -1022,6 +1039,23 @@ impl From<AVCodecID> for Id {
AV_CODEC_ID_ATRAC9 => Id::ATRAC9, AV_CODEC_ID_ATRAC9 => Id::ATRAC9,
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_TTML => Id::TTML, AV_CODEC_ID_TTML => Id::TTML,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_HYMT => Id::HYMT,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_ARBC => Id::ARBC,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_AGM => Id::AGM,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_LSCR => Id::LSCR,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_VP4 => Id::VP4,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_ADPCM_AGM => Id::ADPCM_AGM,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_HCOM => Id::HCOM,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_ARIB_CAPTION => Id::ARIB_CAPTION,
} }
} }
} }
@ -1531,6 +1565,23 @@ impl Into<AVCodecID> for Id {
Id::ATRAC9 => AV_CODEC_ID_ATRAC9, Id::ATRAC9 => AV_CODEC_ID_ATRAC9,
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
Id::TTML => AV_CODEC_ID_TTML, Id::TTML => AV_CODEC_ID_TTML,
#[cfg(feature = "ffmpeg42")]
Id::HYMT => AV_CODEC_ID_HYMT,
#[cfg(feature = "ffmpeg42")]
Id::ARBC => AV_CODEC_ID_ARBC,
#[cfg(feature = "ffmpeg42")]
Id::AGM => AV_CODEC_ID_AGM,
#[cfg(feature = "ffmpeg42")]
Id::LSCR => AV_CODEC_ID_LSCR,
#[cfg(feature = "ffmpeg42")]
Id::VP4 => AV_CODEC_ID_VP4,
#[cfg(feature = "ffmpeg42")]
Id::ADPCM_AGM => AV_CODEC_ID_ADPCM_AGM,
#[cfg(feature = "ffmpeg42")]
Id::HCOM => AV_CODEC_ID_HCOM,
#[cfg(feature = "ffmpeg42")]
Id::ARIB_CAPTION => AV_CODEC_ID_ARIB_CAPTION,
} }
} }
} }

View File

@ -320,6 +320,19 @@ pub enum Pixel {
GRAYF32BE, GRAYF32BE,
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
GRAYF32LE, GRAYF32LE,
#[cfg(feature = "ffmpeg42")]
YUVA422P12BE,
#[cfg(feature = "ffmpeg42")]
YUVA422P12LE,
#[cfg(feature = "ffmpeg42")]
YUVA444P12BE,
#[cfg(feature = "ffmpeg42")]
YUVA444P12LE,
#[cfg(feature = "ffmpeg42")]
NV24,
#[cfg(feature = "ffmpeg42")]
NV42,
} }
#[derive(Clone, Copy, PartialEq, Eq)] #[derive(Clone, Copy, PartialEq, Eq)]
@ -618,6 +631,19 @@ impl From<AVPixelFormat> for Pixel {
AV_PIX_FMT_GRAYF32BE => Pixel::GRAYF32BE, AV_PIX_FMT_GRAYF32BE => Pixel::GRAYF32BE,
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
AV_PIX_FMT_GRAYF32LE => Pixel::GRAYF32LE, AV_PIX_FMT_GRAYF32LE => Pixel::GRAYF32LE,
#[cfg(feature = "ffmpeg42")]
AV_PIX_FMT_YUVA422P12BE => Pixel::YUVA422P12BE,
#[cfg(feature = "ffmpeg42")]
AV_PIX_FMT_YUVA422P12LE => Pixel::YUVA422P12LE,
#[cfg(feature = "ffmpeg42")]
AV_PIX_FMT_YUVA444P12BE => Pixel::YUVA444P12BE,
#[cfg(feature = "ffmpeg42")]
AV_PIX_FMT_YUVA444P12LE => Pixel::YUVA444P12LE,
#[cfg(feature = "ffmpeg42")]
AV_PIX_FMT_NV24 => Pixel::NV24,
#[cfg(feature = "ffmpeg42")]
AV_PIX_FMT_NV42 => Pixel::NV42,
} }
} }
} }
@ -938,6 +964,19 @@ impl Into<AVPixelFormat> for Pixel {
Pixel::GRAYF32BE => AV_PIX_FMT_GRAYF32BE, Pixel::GRAYF32BE => AV_PIX_FMT_GRAYF32BE,
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
Pixel::GRAYF32LE => AV_PIX_FMT_GRAYF32LE, Pixel::GRAYF32LE => AV_PIX_FMT_GRAYF32LE,
#[cfg(feature = "ffmpeg42")]
Pixel::YUVA422P12BE => AV_PIX_FMT_YUVA422P12BE,
#[cfg(feature = "ffmpeg42")]
Pixel::YUVA422P12LE => AV_PIX_FMT_YUVA422P12LE,
#[cfg(feature = "ffmpeg42")]
Pixel::YUVA444P12BE => AV_PIX_FMT_YUVA444P12BE,
#[cfg(feature = "ffmpeg42")]
Pixel::YUVA444P12LE => AV_PIX_FMT_YUVA444P12LE,
#[cfg(feature = "ffmpeg42")]
Pixel::NV24 => AV_PIX_FMT_NV24,
#[cfg(feature = "ffmpeg42")]
Pixel::NV42 => AV_PIX_FMT_NV42,
} }
} }
} }

View File

@ -35,6 +35,11 @@ pub enum Type {
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
S12M_TIMECODE, S12M_TIMECODE,
#[cfg(feature = "ffmpeg42")]
DYNAMIC_HDR_PLUS,
#[cfg(feature = "ffmpeg42")]
REGIONS_OF_INTEREST,
} }
impl Type { impl Type {
@ -75,6 +80,11 @@ impl From<AVFrameSideDataType> for Type {
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
AV_FRAME_DATA_S12M_TIMECODE => Type::S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE => Type::S12M_TIMECODE,
#[cfg(feature = "ffmpeg42")]
AV_FRAME_DATA_DYNAMIC_HDR_PLUS => Type::DYNAMIC_HDR_PLUS,
#[cfg(feature = "ffmpeg42")]
AV_FRAME_DATA_REGIONS_OF_INTEREST => Type::REGIONS_OF_INTEREST,
} }
} }
} }
@ -108,6 +118,11 @@ impl Into<AVFrameSideDataType> for Type {
#[cfg(feature = "ffmpeg41")] #[cfg(feature = "ffmpeg41")]
Type::S12M_TIMECODE => AV_FRAME_DATA_S12M_TIMECODE, Type::S12M_TIMECODE => AV_FRAME_DATA_S12M_TIMECODE,
#[cfg(feature = "ffmpeg42")]
Type::DYNAMIC_HDR_PLUS => AV_FRAME_DATA_DYNAMIC_HDR_PLUS,
#[cfg(feature = "ffmpeg42")]
Type::REGIONS_OF_INTEREST => AV_FRAME_DATA_REGIONS_OF_INTEREST,
} }
} }
} }