Add FFmpeg 4.3 specific code

This commit is contained in:
Zhiming Wang 2020-06-17 01:51:38 +08:00
parent 65d91df487
commit 15c87a7837
No known key found for this signature in database
GPG Key ID: 5B58F95EC95965D8
6 changed files with 188 additions and 1 deletions

View File

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

View File

@ -525,6 +525,47 @@ pub enum Id {
HCOM,
#[cfg(feature = "ffmpeg42")]
ARIB_CAPTION,
#[cfg(feature = "ffmpeg43")]
IMM5,
#[cfg(feature = "ffmpeg43")]
MVDV,
#[cfg(feature = "ffmpeg43")]
MVHA,
#[cfg(feature = "ffmpeg43")]
CDTOONS,
#[cfg(feature = "ffmpeg43")]
MV30,
#[cfg(feature = "ffmpeg43")]
NOTCHLC,
#[cfg(feature = "ffmpeg43")]
PFM,
#[cfg(feature = "ffmpeg43")]
ADPCM_ARGO,
#[cfg(feature = "ffmpeg43")]
ADPCM_IMA_SSI,
#[cfg(feature = "ffmpeg43")]
ADPCM_ZORK,
#[cfg(feature = "ffmpeg43")]
ADPCM_IMA_APM,
#[cfg(feature = "ffmpeg43")]
ADPCM_IMA_ALP,
#[cfg(feature = "ffmpeg43")]
ADPCM_IMA_MTF,
#[cfg(feature = "ffmpeg43")]
ADPCM_IMA_CUNNING,
#[cfg(feature = "ffmpeg43")]
DERF_DPCM,
#[cfg(feature = "ffmpeg43")]
ACELP_KELVIN,
#[cfg(feature = "ffmpeg43")]
MPEGH_3D_AUDIO,
#[cfg(feature = "ffmpeg43")]
SIREN,
#[cfg(feature = "ffmpeg43")]
HCA,
#[cfg(feature = "ffmpeg43")]
EPG,
}
impl Id {
@ -1057,6 +1098,47 @@ impl From<AVCodecID> for Id {
AV_CODEC_ID_HCOM => Id::HCOM,
#[cfg(feature = "ffmpeg42")]
AV_CODEC_ID_ARIB_CAPTION => Id::ARIB_CAPTION,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_IMM5 => Id::IMM5,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_MVDV => Id::MVDV,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_MVHA => Id::MVHA,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_CDTOONS => Id::CDTOONS,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_MV30 => Id::MV30,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_NOTCHLC => Id::NOTCHLC,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_PFM => Id::PFM,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_ADPCM_ARGO => Id::ADPCM_ARGO,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_ADPCM_IMA_SSI => Id::ADPCM_IMA_SSI,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_ADPCM_ZORK => Id::ADPCM_ZORK,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_ADPCM_IMA_APM => Id::ADPCM_IMA_APM,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_ADPCM_IMA_ALP => Id::ADPCM_IMA_ALP,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_ADPCM_IMA_MTF => Id::ADPCM_IMA_MTF,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_ADPCM_IMA_CUNNING => Id::ADPCM_IMA_CUNNING,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_DERF_DPCM => Id::DERF_DPCM,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_ACELP_KELVIN => Id::ACELP_KELVIN,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_MPEGH_3D_AUDIO => Id::MPEGH_3D_AUDIO,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_SIREN => Id::SIREN,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_HCA => Id::HCA,
#[cfg(feature = "ffmpeg43")]
AV_CODEC_ID_EPG => Id::EPG,
}
}
}
@ -1581,6 +1663,47 @@ impl Into<AVCodecID> for Id {
Id::HCOM => AV_CODEC_ID_HCOM,
#[cfg(feature = "ffmpeg42")]
Id::ARIB_CAPTION => AV_CODEC_ID_ARIB_CAPTION,
#[cfg(feature = "ffmpeg43")]
Id::IMM5 => AV_CODEC_ID_IMM5,
#[cfg(feature = "ffmpeg43")]
Id::MVDV => AV_CODEC_ID_MVDV,
#[cfg(feature = "ffmpeg43")]
Id::MVHA => AV_CODEC_ID_MVHA,
#[cfg(feature = "ffmpeg43")]
Id::CDTOONS => AV_CODEC_ID_CDTOONS,
#[cfg(feature = "ffmpeg43")]
Id::MV30 => AV_CODEC_ID_MV30,
#[cfg(feature = "ffmpeg43")]
Id::NOTCHLC => AV_CODEC_ID_NOTCHLC,
#[cfg(feature = "ffmpeg43")]
Id::PFM => AV_CODEC_ID_PFM,
#[cfg(feature = "ffmpeg43")]
Id::ADPCM_ARGO => AV_CODEC_ID_ADPCM_ARGO,
#[cfg(feature = "ffmpeg43")]
Id::ADPCM_IMA_SSI => AV_CODEC_ID_ADPCM_IMA_SSI,
#[cfg(feature = "ffmpeg43")]
Id::ADPCM_ZORK => AV_CODEC_ID_ADPCM_ZORK,
#[cfg(feature = "ffmpeg43")]
Id::ADPCM_IMA_APM => AV_CODEC_ID_ADPCM_IMA_APM,
#[cfg(feature = "ffmpeg43")]
Id::ADPCM_IMA_ALP => AV_CODEC_ID_ADPCM_IMA_ALP,
#[cfg(feature = "ffmpeg43")]
Id::ADPCM_IMA_MTF => AV_CODEC_ID_ADPCM_IMA_MTF,
#[cfg(feature = "ffmpeg43")]
Id::ADPCM_IMA_CUNNING => AV_CODEC_ID_ADPCM_IMA_CUNNING,
#[cfg(feature = "ffmpeg43")]
Id::DERF_DPCM => AV_CODEC_ID_DERF_DPCM,
#[cfg(feature = "ffmpeg43")]
Id::ACELP_KELVIN => AV_CODEC_ID_ACELP_KELVIN,
#[cfg(feature = "ffmpeg43")]
Id::MPEGH_3D_AUDIO => AV_CODEC_ID_MPEGH_3D_AUDIO,
#[cfg(feature = "ffmpeg43")]
Id::SIREN => AV_CODEC_ID_SIREN,
#[cfg(feature = "ffmpeg43")]
Id::HCA => AV_CODEC_ID_HCA,
#[cfg(feature = "ffmpeg43")]
Id::EPG => AV_CODEC_ID_EPG,
}
}
}

View File

@ -41,6 +41,13 @@ pub enum Type {
#[cfg(feature = "ffmpeg41")]
AFD,
#[cfg(feature = "ffmpeg43")]
PRFT,
#[cfg(feature = "ffmpeg43")]
ICC_PROFILE,
#[cfg(feature = "ffmpeg43")]
DOVI_CONF,
}
impl From<AVPacketSideDataType> for Type {
@ -80,6 +87,13 @@ impl From<AVPacketSideDataType> for Type {
#[cfg(feature = "ffmpeg41")]
AV_PKT_DATA_AFD => Type::AFD,
#[cfg(feature = "ffmpeg43")]
AV_PKT_DATA_PRFT => Type::PRFT,
#[cfg(feature = "ffmpeg43")]
AV_PKT_DATA_ICC_PROFILE => Type::ICC_PROFILE,
#[cfg(feature = "ffmpeg43")]
AV_PKT_DATA_DOVI_CONF => Type::DOVI_CONF,
}
}
}
@ -121,6 +135,13 @@ impl Into<AVPacketSideDataType> for Type {
#[cfg(feature = "ffmpeg41")]
Type::AFD => AV_PKT_DATA_AFD,
#[cfg(feature = "ffmpeg43")]
Type::PRFT => AV_PKT_DATA_PRFT,
#[cfg(feature = "ffmpeg43")]
Type::ICC_PROFILE => AV_PKT_DATA_ICC_PROFILE,
#[cfg(feature = "ffmpeg43")]
Type::DOVI_CONF => AV_PKT_DATA_DOVI_CONF,
}
}
}

View File

@ -21,10 +21,16 @@ pub enum Primaries {
SMPTE428,
SMPTE431,
SMPTE432,
#[cfg(not(feature = "ffmpeg43"))]
JEDEC_P22,
#[cfg(feature = "ffmpeg43")]
EBU3213,
}
impl Primaries {
#[cfg(feature = "ffmpeg43")]
pub const JEDEC_P22: Primaries = Primaries::EBU3213;
pub fn name(&self) -> Option<&'static str> {
if *self == Primaries::Unspecified {
return None;
@ -56,7 +62,10 @@ impl From<AVColorPrimaries> for Primaries {
AVCOL_PRI_SMPTE428 => Primaries::SMPTE428,
AVCOL_PRI_SMPTE431 => Primaries::SMPTE431,
AVCOL_PRI_SMPTE432 => Primaries::SMPTE432,
#[cfg(not(feature = "ffmpeg43"))]
AVCOL_PRI_JEDEC_P22 => Primaries::JEDEC_P22,
#[cfg(feature = "ffmpeg43")]
AVCOL_PRI_EBU3213 => Primaries::EBU3213,
}
}
}
@ -79,7 +88,10 @@ impl Into<AVColorPrimaries> for Primaries {
Primaries::SMPTE428 => AVCOL_PRI_SMPTE428,
Primaries::SMPTE431 => AVCOL_PRI_SMPTE431,
Primaries::SMPTE432 => AVCOL_PRI_SMPTE432,
#[cfg(not(feature = "ffmpeg43"))]
Primaries::JEDEC_P22 => AVCOL_PRI_JEDEC_P22,
#[cfg(feature = "ffmpeg43")]
Primaries::EBU3213 => AVCOL_PRI_EBU3213,
}
}
}

View File

@ -334,6 +334,13 @@ pub enum Pixel {
NV24,
#[cfg(feature = "ffmpeg42")]
NV42,
#[cfg(feature = "ffmpeg43")]
VULKAN,
#[cfg(feature = "ffmpeg43")]
Y210BE,
#[cfg(feature = "ffmpeg43")]
Y210LE,
}
#[derive(Clone, Copy, PartialEq, Eq)]
@ -648,6 +655,13 @@ impl From<AVPixelFormat> for Pixel {
AV_PIX_FMT_NV24 => Pixel::NV24,
#[cfg(feature = "ffmpeg42")]
AV_PIX_FMT_NV42 => Pixel::NV42,
#[cfg(feature = "ffmpeg43")]
AV_PIX_FMT_VULKAN => Pixel::VULKAN,
#[cfg(feature = "ffmpeg43")]
AV_PIX_FMT_Y210BE => Pixel::Y210BE,
#[cfg(feature = "ffmpeg43")]
AV_PIX_FMT_Y210LE => Pixel::Y210LE,
}
}
}
@ -982,6 +996,13 @@ impl Into<AVPixelFormat> for Pixel {
Pixel::NV24 => AV_PIX_FMT_NV24,
#[cfg(feature = "ffmpeg42")]
Pixel::NV42 => AV_PIX_FMT_NV42,
#[cfg(feature = "ffmpeg43")]
Pixel::VULKAN => AV_PIX_FMT_VULKAN,
#[cfg(feature = "ffmpeg43")]
Pixel::Y210BE => AV_PIX_FMT_Y210BE,
#[cfg(feature = "ffmpeg43")]
Pixel::Y210LE => AV_PIX_FMT_Y210LE,
}
}
}

View File

@ -40,6 +40,9 @@ pub enum Type {
DYNAMIC_HDR_PLUS,
#[cfg(feature = "ffmpeg42")]
REGIONS_OF_INTEREST,
#[cfg(feature = "ffmpeg43")]
VIDEO_ENC_PARAMS,
}
impl Type {
@ -85,6 +88,9 @@ impl From<AVFrameSideDataType> for Type {
AV_FRAME_DATA_DYNAMIC_HDR_PLUS => Type::DYNAMIC_HDR_PLUS,
#[cfg(feature = "ffmpeg42")]
AV_FRAME_DATA_REGIONS_OF_INTEREST => Type::REGIONS_OF_INTEREST,
#[cfg(feature = "ffmpeg43")]
AV_FRAME_DATA_VIDEO_ENC_PARAMS => Type::VIDEO_ENC_PARAMS,
}
}
}
@ -123,6 +129,9 @@ impl Into<AVFrameSideDataType> for Type {
Type::DYNAMIC_HDR_PLUS => AV_FRAME_DATA_DYNAMIC_HDR_PLUS,
#[cfg(feature = "ffmpeg42")]
Type::REGIONS_OF_INTEREST => AV_FRAME_DATA_REGIONS_OF_INTEREST,
#[cfg(feature = "ffmpeg43")]
Type::VIDEO_ENC_PARAMS => AV_FRAME_DATA_VIDEO_ENC_PARAMS,
}
}
}