Add FFmpeg 4.3 specific code
This commit is contained in:
parent
65d91df487
commit
15c87a7837
@ -15,8 +15,9 @@ keywords = ["ffmpeg", "multimedia", "video", "audio"]
|
|||||||
categories = ["multimedia"]
|
categories = ["multimedia"]
|
||||||
|
|
||||||
[features]
|
[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"]
|
ffmpeg42 = ["ffmpeg41"]
|
||||||
ffmpeg41 = ["ffmpeg4"]
|
ffmpeg41 = ["ffmpeg4"]
|
||||||
ffmpeg4 = []
|
ffmpeg4 = []
|
||||||
|
123
src/codec/id.rs
123
src/codec/id.rs
@ -525,6 +525,47 @@ pub enum Id {
|
|||||||
HCOM,
|
HCOM,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
ARIB_CAPTION,
|
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 {
|
impl Id {
|
||||||
@ -1057,6 +1098,47 @@ impl From<AVCodecID> for Id {
|
|||||||
AV_CODEC_ID_HCOM => Id::HCOM,
|
AV_CODEC_ID_HCOM => Id::HCOM,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
AV_CODEC_ID_ARIB_CAPTION => Id::ARIB_CAPTION,
|
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,
|
Id::HCOM => AV_CODEC_ID_HCOM,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
Id::ARIB_CAPTION => AV_CODEC_ID_ARIB_CAPTION,
|
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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,13 @@ pub enum Type {
|
|||||||
|
|
||||||
#[cfg(feature = "ffmpeg41")]
|
#[cfg(feature = "ffmpeg41")]
|
||||||
AFD,
|
AFD,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
PRFT,
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
ICC_PROFILE,
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
DOVI_CONF,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<AVPacketSideDataType> for Type {
|
impl From<AVPacketSideDataType> for Type {
|
||||||
@ -80,6 +87,13 @@ impl From<AVPacketSideDataType> for Type {
|
|||||||
|
|
||||||
#[cfg(feature = "ffmpeg41")]
|
#[cfg(feature = "ffmpeg41")]
|
||||||
AV_PKT_DATA_AFD => Type::AFD,
|
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")]
|
#[cfg(feature = "ffmpeg41")]
|
||||||
Type::AFD => AV_PKT_DATA_AFD,
|
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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,16 @@ pub enum Primaries {
|
|||||||
SMPTE428,
|
SMPTE428,
|
||||||
SMPTE431,
|
SMPTE431,
|
||||||
SMPTE432,
|
SMPTE432,
|
||||||
|
#[cfg(not(feature = "ffmpeg43"))]
|
||||||
JEDEC_P22,
|
JEDEC_P22,
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
EBU3213,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Primaries {
|
impl Primaries {
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
pub const JEDEC_P22: Primaries = Primaries::EBU3213;
|
||||||
|
|
||||||
pub fn name(&self) -> Option<&'static str> {
|
pub fn name(&self) -> Option<&'static str> {
|
||||||
if *self == Primaries::Unspecified {
|
if *self == Primaries::Unspecified {
|
||||||
return None;
|
return None;
|
||||||
@ -56,7 +62,10 @@ impl From<AVColorPrimaries> for Primaries {
|
|||||||
AVCOL_PRI_SMPTE428 => Primaries::SMPTE428,
|
AVCOL_PRI_SMPTE428 => Primaries::SMPTE428,
|
||||||
AVCOL_PRI_SMPTE431 => Primaries::SMPTE431,
|
AVCOL_PRI_SMPTE431 => Primaries::SMPTE431,
|
||||||
AVCOL_PRI_SMPTE432 => Primaries::SMPTE432,
|
AVCOL_PRI_SMPTE432 => Primaries::SMPTE432,
|
||||||
|
#[cfg(not(feature = "ffmpeg43"))]
|
||||||
AVCOL_PRI_JEDEC_P22 => Primaries::JEDEC_P22,
|
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::SMPTE428 => AVCOL_PRI_SMPTE428,
|
||||||
Primaries::SMPTE431 => AVCOL_PRI_SMPTE431,
|
Primaries::SMPTE431 => AVCOL_PRI_SMPTE431,
|
||||||
Primaries::SMPTE432 => AVCOL_PRI_SMPTE432,
|
Primaries::SMPTE432 => AVCOL_PRI_SMPTE432,
|
||||||
|
#[cfg(not(feature = "ffmpeg43"))]
|
||||||
Primaries::JEDEC_P22 => AVCOL_PRI_JEDEC_P22,
|
Primaries::JEDEC_P22 => AVCOL_PRI_JEDEC_P22,
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
Primaries::EBU3213 => AVCOL_PRI_EBU3213,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -334,6 +334,13 @@ pub enum Pixel {
|
|||||||
NV24,
|
NV24,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
NV42,
|
NV42,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
VULKAN,
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
Y210BE,
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
Y210LE,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, PartialEq, Eq)]
|
#[derive(Clone, Copy, PartialEq, Eq)]
|
||||||
@ -648,6 +655,13 @@ impl From<AVPixelFormat> for Pixel {
|
|||||||
AV_PIX_FMT_NV24 => Pixel::NV24,
|
AV_PIX_FMT_NV24 => Pixel::NV24,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
AV_PIX_FMT_NV42 => Pixel::NV42,
|
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,
|
Pixel::NV24 => AV_PIX_FMT_NV24,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
Pixel::NV42 => AV_PIX_FMT_NV42,
|
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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,9 @@ pub enum Type {
|
|||||||
DYNAMIC_HDR_PLUS,
|
DYNAMIC_HDR_PLUS,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
REGIONS_OF_INTEREST,
|
REGIONS_OF_INTEREST,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
VIDEO_ENC_PARAMS,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Type {
|
impl Type {
|
||||||
@ -85,6 +88,9 @@ impl From<AVFrameSideDataType> for Type {
|
|||||||
AV_FRAME_DATA_DYNAMIC_HDR_PLUS => Type::DYNAMIC_HDR_PLUS,
|
AV_FRAME_DATA_DYNAMIC_HDR_PLUS => Type::DYNAMIC_HDR_PLUS,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
AV_FRAME_DATA_REGIONS_OF_INTEREST => Type::REGIONS_OF_INTEREST,
|
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,
|
Type::DYNAMIC_HDR_PLUS => AV_FRAME_DATA_DYNAMIC_HDR_PLUS,
|
||||||
#[cfg(feature = "ffmpeg42")]
|
#[cfg(feature = "ffmpeg42")]
|
||||||
Type::REGIONS_OF_INTEREST => AV_FRAME_DATA_REGIONS_OF_INTEREST,
|
Type::REGIONS_OF_INTEREST => AV_FRAME_DATA_REGIONS_OF_INTEREST,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg43")]
|
||||||
|
Type::VIDEO_ENC_PARAMS => AV_FRAME_DATA_VIDEO_ENC_PARAMS,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user