diff --git a/Cargo.toml b/Cargo.toml index faeef5c..d64ffcb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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 = [] diff --git a/src/codec/id.rs b/src/codec/id.rs index ced8080..cce4438 100644 --- a/src/codec/id.rs +++ b/src/codec/id.rs @@ -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 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 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, } } } diff --git a/src/codec/packet/side_data.rs b/src/codec/packet/side_data.rs index b67a4a5..6deb8c5 100644 --- a/src/codec/packet/side_data.rs +++ b/src/codec/packet/side_data.rs @@ -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 for Type { @@ -80,6 +87,13 @@ impl From 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 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, } } } diff --git a/src/util/color/primaries.rs b/src/util/color/primaries.rs index 5143923..c2821fe 100644 --- a/src/util/color/primaries.rs +++ b/src/util/color/primaries.rs @@ -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 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 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, } } } diff --git a/src/util/format/pixel.rs b/src/util/format/pixel.rs index da13f2f..dca1779 100644 --- a/src/util/format/pixel.rs +++ b/src/util/format/pixel.rs @@ -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 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 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, } } } diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index 3dcf5e0..8a6ce96 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -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 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 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, } } }