Support FFmpeg 7.0 (#48)

* sys: Run cargo fmt

* sys: Add new channel layout consts

* sys: Update build script for 7.0

- Add new FF_API flags
- Update version_check_info range
- Add ffmpeg_7_0 feature entry

* sys: Update non-exhaustive match statement

* Update enums

* Mark old APIs as removed with 7.0

* Make Audio frame work with 7.0

The .unwrap() in clone() is a bit wonky

* Add API for swr_alloc_set_opts2

* Use AVFrame::duration field in 7.0+

* Include 7.0 in CI runs

* Add fn ChanneLayoutIter::best

* Update examples for new API

* Add/update Context setter for ch layout
This commit is contained in:
FreezyLemon
2024-04-30 03:38:37 +02:00
committed by GitHub
parent 0107b62f56
commit fd2d71c92b
26 changed files with 419 additions and 43 deletions

View File

@ -225,7 +225,7 @@ pub enum Pixel {
VIDEOTOOLBOX,
// --- defaults
#[cfg(feature = "ffmpeg_4_0")]
#[cfg(all(feature = "ffmpeg_4_0", not(feature = "ffmpeg_7_0")))]
XVMC,
RGB32,
@ -417,6 +417,9 @@ pub enum Pixel {
#[cfg(feature = "ffmpeg_6_1")]
GBRAP14LE,
#[cfg(feature = "ffmpeg_7_0")]
D3D12,
#[cfg(feature = "rpi")]
RPI,
#[cfg(feature = "rpi")]
@ -498,7 +501,7 @@ impl From<AVPixelFormat> for Pixel {
AV_PIX_FMT_YUVJ420P => Pixel::YUVJ420P,
AV_PIX_FMT_YUVJ422P => Pixel::YUVJ422P,
AV_PIX_FMT_YUVJ444P => Pixel::YUVJ444P,
#[cfg(feature = "ffmpeg_4_0")]
#[cfg(all(feature = "ffmpeg_4_0", not(feature = "ffmpeg_7_0")))]
AV_PIX_FMT_XVMC => Pixel::XVMC,
#[cfg(all(feature = "ff_api_xvmc", not(feature = "ffmpeg_5_0")))]
AV_PIX_FMT_XVMC_MPEG2_MC => Pixel::XVMC_MPEG2_MC,
@ -825,6 +828,9 @@ impl From<AVPixelFormat> for Pixel {
#[cfg(feature = "ffmpeg_6_1")]
AV_PIX_FMT_GBRAP14LE => Pixel::GBRAP14LE,
#[cfg(feature = "ffmpeg_7_0")]
AV_PIX_FMT_D3D12 => Pixel::D3D12,
#[cfg(feature = "rpi")]
AV_PIX_FMT_RPI => Pixel::RPI,
#[cfg(feature = "rpi")]
@ -1062,7 +1068,7 @@ impl From<Pixel> for AVPixelFormat {
Pixel::VIDEOTOOLBOX => AV_PIX_FMT_VIDEOTOOLBOX,
// --- defaults
#[cfg(feature = "ffmpeg_4_0")]
#[cfg(all(feature = "ffmpeg_4_0", not(feature = "ffmpeg_7_0")))]
Pixel::XVMC => AV_PIX_FMT_XVMC,
Pixel::RGB32 => AV_PIX_FMT_RGB32,
@ -1254,6 +1260,9 @@ impl From<Pixel> for AVPixelFormat {
#[cfg(feature = "ffmpeg_6_1")]
Pixel::GBRAP14LE => AV_PIX_FMT_GBRAP14LE,
#[cfg(feature = "ffmpeg_7_0")]
Pixel::D3D12 => AV_PIX_FMT_D3D12,
#[cfg(feature = "rpi")]
Pixel::RPI => AV_PIX_FMT_RPI,
#[cfg(feature = "rpi")]