FFmpeg 7.1 support (#74)

* Add new build-lib features

* Update CI to use 7.1

jrottenberg/ffmpeg does not have 7.1 yet

* Add libavcodec version for 7.1

* Add FF_API flags for 7.1

* Update crate versions, bump MSRV to 1.65

* Add new audio channel masks

* Add new AVColorSpace variants

* Add new AVFrameSideDataType variants

* Add new AVCodecID variants

* Add new AVPacketSideDataType variants
This commit is contained in:
FreezyLemon
2024-10-18 06:06:01 +02:00
committed by GitHub
parent fd44dd339b
commit 814f8b9464
12 changed files with 337 additions and 157 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "ffmpeg-sys-the-third"
version = "2.0.0+ffmpeg-7.0"
version = "2.1.0+ffmpeg-7.1"
links = "ffmpeg"
edition = "2021"
@ -19,7 +19,7 @@ keywords = ["audio", "video"]
categories = ["multimedia", "external-ffi-bindings"]
# When changing MSRV: Also update build.yml and README.md
rust-version = "1.61.0"
rust-version = "1.65.0"
[lib]
# Disable doctests as a workaround for https://github.com/rust-lang/rust-bindgen/issues/1313
@ -98,35 +98,48 @@ build-lib-vmaf = ["build"]
# encoders/decoders
build-lib-aacplus = ["build"]
build-lib-celt = ["build"]
build-lib-codec2 = ["build"]
build-lib-dav1d = ["build"]
build-lib-davs2 = ["build"]
build-lib-dcadec = ["build"]
build-lib-faac = ["build"]
build-lib-fdk-aac = ["build"]
build-lib-gsm = ["build"]
build-lib-ilbc = ["build"]
build-lib-jxl = ["build"]
build-lib-kvazaar = ["build"]
build-lib-lc3 = ["build"]
build-lib-lcevc-dec = ["build"]
build-lib-mp3lame = ["build"]
build-lib-opencore-amrnb = ["build"]
build-lib-opencore-amrwb = ["build"]
build-lib-openh264 = ["build"]
build-lib-openjpeg = ["build"]
build-lib-opus = ["build"]
build-lib-rav1e = ["build"]
build-lib-schroedinger = ["build"]
build-lib-shine = ["build"]
build-lib-snappy = ["build"]
build-lib-speex = ["build"]
build-lib-stagefright-h264 = ["build"]
build-lib-svtav1 = ["build"]
build-lib-theora = ["build"]
build-lib-twolame = ["build"]
build-lib-uavs3d = ["build"]
build-lib-utvideo = ["build"]
build-lib-vo-aacenc = ["build"]
build-lib-vo-amrwbenc = ["build"]
build-lib-vorbis = ["build"]
build-lib-vpx = ["build"]
build-lib-vvenc = ["build"]
build-lib-wavpack = ["build"]
build-lib-webp = ["build"]
build-lib-x264 = ["build"]
build-lib-x265 = ["build"]
build-lib-xeve = ["build"]
build-lib-xevd = ["build"]
build-lib-xavs = ["build"]
build-lib-xavs2 = ["build"]
build-lib-avs = ["build"]
build-lib-xvid = ["build"]

View File

@ -121,6 +121,9 @@ static AVUTIL_FEATURES: &[AVFeature] = &[
AVFeature::new("PALETTE_HAS_CHANGED"),
AVFeature::new("VULKAN_CONTIGUOUS_MEMORY"),
AVFeature::new("H274_FILM_GRAIN_VCS"),
AVFeature::new("MOD_UINTP2"),
AVFeature::new("RISCV_FD_ZBA"),
AVFeature::new("VULKAN_FIXED_QUEUES"),
];
static AVCODEC_FEATURES: &[AVFeature] = &[
@ -209,6 +212,7 @@ static AVCODEC_FEATURES: &[AVFeature] = &[
AVFeature::new("AVCODEC_CLOSE"),
AVFeature::new("BUFFER_MIN_SIZE"),
AVFeature::new("VDPAU_ALLOC_GET_SET"),
AVFeature::new("QUALITY_FACTOR"),
];
static AVFORMAT_FEATURES: &[AVFeature] = &[
@ -231,6 +235,7 @@ static AVFORMAT_FEATURES: &[AVFeature] = &[
AVFeature::new("ALLOW_FLUSH"),
AVFeature::new("AVSTREAM_SIDE_DATA"),
AVFeature::new("GET_DUR_ESTIMATE_METHOD"),
AVFeature::new("INTERNAL_TIMING"),
];
static AVDEVICE_FEATURES: &[AVFeature] = &[
@ -484,13 +489,18 @@ static EXTERNAL_BUILD_LIBS: &[(&str, &str)] = &[
// Encoders/decoders
("AACPLUS", "libaacplus"),
("CELT", "libcelt"),
("DCADEC", "libdcadec"),
("CODEC2", "libcodec2"),
("DAV1D", "libdav1d"),
("DAVS2", "libdavs2"),
("DCADEC", "libdcadec"),
("FAAC", "libfaac"),
("FDK_AAC", "libfdk-aac"),
("GSM", "libgsm"),
("ILBC", "libilbc"),
("VAZAAR", "libvazaar"),
("JXL", "libjxl"),
("KVAZAAR", "libkvazaar"),
("LC3", "liblc3"),
("LCEVC_DEC", "liblcevc-dec"),
("MP3LAME", "libmp3lame"),
("OPENCORE_AMRNB", "libopencore-amrnb"),
("OPENCORE_AMRWB", "libopencore-amrwb"),
@ -498,22 +508,30 @@ static EXTERNAL_BUILD_LIBS: &[(&str, &str)] = &[
("OPENH265", "libopenh265"),
("OPENJPEG", "libopenjpeg"),
("OPUS", "libopus"),
("RAV1E", "librav1e"),
("SCHROEDINGER", "libschroedinger"),
("SHINE", "libshine"),
("SNAPPY", "libsnappy"),
("SPEEX", "libspeex"),
("STAGEFRIGHT_H264", "libstagefright-h264"),
("SVTAV1", "libsvtav1"),
("THEORA", "libtheora"),
("TWOLAME", "libtwolame"),
("UAVS3D", "libuavs3d"),
("UTVIDEO", "libutvideo"),
("VO_AACENC", "libvo-aacenc"),
("VO_AMRWBENC", "libvo-amrwbenc"),
("VORBIS", "libvorbis"),
("VPX", "libvpx"),
("VVENC", "libvvenc"),
("WAVPACK", "libwavpack"),
("WEBP", "libwebp"),
("X264", "libx264"),
("X265", "libx265"),
("XEVE", "libxeve"),
("XEVD", "libxevd"),
("XAVS", "libxavs"),
("XAVS2", "libxavs2"),
("AVS", "libavs"),
("XVID", "libxvid"),
// Protocols
@ -837,6 +855,7 @@ fn check_features(include_paths: &[PathBuf]) {
("ffmpeg_6_0", 60, 3),
("ffmpeg_6_1", 60, 31),
("ffmpeg_7_0", 61, 3),
("ffmpeg_7_1", 61, 19),
];
let lavc_version = *versions

View File

@ -137,6 +137,15 @@ pub const AV_CH_BOTTOM_FRONT_CENTER: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_CENTER as
pub const AV_CH_BOTTOM_FRONT_LEFT: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_LEFT as i32);
pub const AV_CH_BOTTOM_FRONT_RIGHT: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_RIGHT as i32);
#[cfg(feature = "ffmpeg_7_1")]
pub const AV_CH_SIDE_SURROUND_LEFT: u64 = 1 << (AV_CHAN_SIDE_SURROUND_LEFT as i32);
#[cfg(feature = "ffmpeg_7_1")]
pub const AV_CH_SIDE_SURROUND_RIGHT: u64 = 1 << (AV_CHAN_SIDE_SURROUND_RIGHT as i32);
#[cfg(feature = "ffmpeg_7_1")]
pub const AV_CH_TOP_SURROUND_LEFT: u64 = 1 << (AV_CHAN_TOP_SURROUND_LEFT as i32);
#[cfg(feature = "ffmpeg_7_1")]
pub const AV_CH_TOP_SURROUND_RIGHT: u64 = 1 << (AV_CHAN_TOP_SURROUND_RIGHT as i32);
// Audio channel layouts
pub const AV_CH_LAYOUT_MONO: u64 = AV_CH_FRONT_CENTER;
pub const AV_CH_LAYOUT_STEREO: u64 = AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT;