Add FFmpeg 4.1 specific code

This commit is contained in:
Zhiming Wang 2020-06-01 14:15:33 +08:00
parent 6220b88ef2
commit a69a457e3a
No known key found for this signature in database
GPG Key ID: 5B58F95EC95965D8
5 changed files with 113 additions and 1 deletions

View File

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

View File

@ -484,12 +484,32 @@ pub enum Id {
FITS,
GREMLIN_DPCM,
DOLBY_E,
#[cfg(feature = "ffmpeg4")]
APTX,
#[cfg(feature = "ffmpeg4")]
APTX_HD,
#[cfg(feature = "ffmpeg4")]
SBC,
#[cfg(feature = "ffmpeg41")]
AVS2,
#[cfg(feature = "ffmpeg41")]
IMM4,
#[cfg(feature = "ffmpeg41")]
PROSUMER,
#[cfg(feature = "ffmpeg41")]
MWSC,
#[cfg(feature = "ffmpeg41")]
WCMV,
#[cfg(feature = "ffmpeg41")]
RASC,
#[cfg(feature = "ffmpeg41")]
PCM_VIDC,
#[cfg(feature = "ffmpeg41")]
ATRAC9,
#[cfg(feature = "ffmpeg41")]
TTML,
}
impl Id {
@ -976,12 +996,32 @@ impl From<AVCodecID> for Id {
AV_CODEC_ID_FITS => Id::FITS,
AV_CODEC_ID_GREMLIN_DPCM => Id::GREMLIN_DPCM,
AV_CODEC_ID_DOLBY_E => Id::DOLBY_E,
#[cfg(feature = "ffmpeg4")]
AV_CODEC_ID_APTX => Id::APTX,
#[cfg(feature = "ffmpeg4")]
AV_CODEC_ID_APTX_HD => Id::APTX_HD,
#[cfg(feature = "ffmpeg4")]
AV_CODEC_ID_SBC => Id::SBC,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_AVS2 => Id::AVS2,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_IMM4 => Id::IMM4,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_PROSUMER => Id::PROSUMER,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_MWSC => Id::MWSC,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_WCMV => Id::WCMV,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_RASC => Id::RASC,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_PCM_VIDC => Id::PCM_VIDC,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_ATRAC9 => Id::ATRAC9,
#[cfg(feature = "ffmpeg41")]
AV_CODEC_ID_TTML => Id::TTML,
}
}
}
@ -1465,12 +1505,32 @@ impl Into<AVCodecID> for Id {
Id::FITS => AV_CODEC_ID_FITS,
Id::GREMLIN_DPCM => AV_CODEC_ID_GREMLIN_DPCM,
Id::DOLBY_E => AV_CODEC_ID_DOLBY_E,
#[cfg(feature = "ffmpeg4")]
Id::APTX => AV_CODEC_ID_APTX,
#[cfg(feature = "ffmpeg4")]
Id::APTX_HD => AV_CODEC_ID_APTX_HD,
#[cfg(feature = "ffmpeg4")]
Id::SBC => AV_CODEC_ID_SBC,
#[cfg(feature = "ffmpeg41")]
Id::AVS2 => AV_CODEC_ID_AVS2,
#[cfg(feature = "ffmpeg41")]
Id::IMM4 => AV_CODEC_ID_IMM4,
#[cfg(feature = "ffmpeg41")]
Id::PROSUMER => AV_CODEC_ID_PROSUMER,
#[cfg(feature = "ffmpeg41")]
Id::MWSC => AV_CODEC_ID_MWSC,
#[cfg(feature = "ffmpeg41")]
Id::WCMV => AV_CODEC_ID_WCMV,
#[cfg(feature = "ffmpeg41")]
Id::RASC => AV_CODEC_ID_RASC,
#[cfg(feature = "ffmpeg41")]
Id::PCM_VIDC => AV_CODEC_ID_PCM_VIDC,
#[cfg(feature = "ffmpeg41")]
Id::ATRAC9 => AV_CODEC_ID_ATRAC9,
#[cfg(feature = "ffmpeg41")]
Id::TTML => AV_CODEC_ID_TTML,
}
}
}

View File

@ -33,10 +33,14 @@ pub enum Type {
ContentLightLevel,
A53CC,
#[cfg(feature = "ffmpeg4")]
EncryptionInitInfo,
#[cfg(feature = "ffmpeg4")]
EncryptionInfo,
#[cfg(feature = "ffmpeg41")]
AFD,
}
impl From<AVPacketSideDataType> for Type {
@ -68,10 +72,14 @@ impl From<AVPacketSideDataType> for Type {
AV_PKT_DATA_CONTENT_LIGHT_LEVEL => Type::ContentLightLevel,
AV_PKT_DATA_A53_CC => Type::A53CC,
#[cfg(feature = "ffmpeg4")]
AV_PKT_DATA_ENCRYPTION_INIT_INFO => Type::EncryptionInitInfo,
#[cfg(feature = "ffmpeg4")]
AV_PKT_DATA_ENCRYPTION_INFO => Type::EncryptionInfo,
#[cfg(feature = "ffmpeg41")]
AV_PKT_DATA_AFD => Type::AFD,
}
}
}
@ -105,10 +113,14 @@ impl Into<AVPacketSideDataType> for Type {
Type::ContentLightLevel => AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
Type::A53CC => AV_PKT_DATA_A53_CC,
#[cfg(feature = "ffmpeg4")]
Type::EncryptionInitInfo => AV_PKT_DATA_ENCRYPTION_INIT_INFO,
#[cfg(feature = "ffmpeg4")]
Type::EncryptionInfo => AV_PKT_DATA_ENCRYPTION_INFO,
#[cfg(feature = "ffmpeg41")]
Type::AFD => AV_PKT_DATA_AFD,
}
}
}

View File

@ -308,8 +308,18 @@ pub enum Pixel {
GBRAPF32BE,
GBRAPF32LE,
DRM_PRIME,
#[cfg(feature = "ffmpeg4")]
OPENCL,
#[cfg(feature = "ffmpeg41")]
GRAY14BE,
#[cfg(feature = "ffmpeg41")]
GRAY14LE,
#[cfg(feature = "ffmpeg41")]
GRAYF32BE,
#[cfg(feature = "ffmpeg41")]
GRAYF32LE,
}
#[derive(Clone, Copy, PartialEq, Eq)]
@ -596,8 +606,18 @@ impl From<AVPixelFormat> for Pixel {
AV_PIX_FMT_GBRAPF32BE => Pixel::GBRAPF32BE,
AV_PIX_FMT_GBRAPF32LE => Pixel::GBRAPF32LE,
AV_PIX_FMT_DRM_PRIME => Pixel::DRM_PRIME,
#[cfg(feature = "ffmpeg4")]
AV_PIX_FMT_OPENCL => Pixel::OPENCL,
#[cfg(feature = "ffmpeg41")]
AV_PIX_FMT_GRAY14BE => Pixel::GRAY14BE,
#[cfg(feature = "ffmpeg41")]
AV_PIX_FMT_GRAY14LE => Pixel::GRAY14LE,
#[cfg(feature = "ffmpeg41")]
AV_PIX_FMT_GRAYF32BE => Pixel::GRAYF32BE,
#[cfg(feature = "ffmpeg41")]
AV_PIX_FMT_GRAYF32LE => Pixel::GRAYF32LE,
}
}
}
@ -906,8 +926,18 @@ impl Into<AVPixelFormat> for Pixel {
Pixel::GBRAPF32BE => AV_PIX_FMT_GBRAPF32BE,
Pixel::GBRAPF32LE => AV_PIX_FMT_GBRAPF32LE,
Pixel::DRM_PRIME => AV_PIX_FMT_DRM_PRIME,
#[cfg(feature = "ffmpeg4")]
Pixel::OPENCL => AV_PIX_FMT_OPENCL,
#[cfg(feature = "ffmpeg41")]
Pixel::GRAY14BE => AV_PIX_FMT_GRAY14BE,
#[cfg(feature = "ffmpeg41")]
Pixel::GRAY14LE => AV_PIX_FMT_GRAY14LE,
#[cfg(feature = "ffmpeg41")]
Pixel::GRAYF32BE => AV_PIX_FMT_GRAYF32BE,
#[cfg(feature = "ffmpeg41")]
Pixel::GRAYF32LE => AV_PIX_FMT_GRAYF32LE,
}
}
}

View File

@ -32,6 +32,9 @@ pub enum Type {
QPTableProperties,
#[cfg(feature = "ffmpeg4")]
QPTableData,
#[cfg(feature = "ffmpeg41")]
S12M_TIMECODE,
}
impl Type {
@ -69,6 +72,9 @@ impl From<AVFrameSideDataType> for Type {
AV_FRAME_DATA_QP_TABLE_PROPERTIES => Type::QPTableProperties,
#[cfg(feature = "ffmpeg4")]
AV_FRAME_DATA_QP_TABLE_DATA => Type::QPTableData,
#[cfg(feature = "ffmpeg41")]
AV_FRAME_DATA_S12M_TIMECODE => Type::S12M_TIMECODE,
}
}
}
@ -99,6 +105,9 @@ impl Into<AVFrameSideDataType> for Type {
Type::QPTableProperties => AV_FRAME_DATA_QP_TABLE_PROPERTIES,
#[cfg(feature = "ffmpeg4")]
Type::QPTableData => AV_FRAME_DATA_QP_TABLE_DATA,
#[cfg(feature = "ffmpeg41")]
Type::S12M_TIMECODE => AV_FRAME_DATA_S12M_TIMECODE,
}
}
}