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

@ -214,6 +214,7 @@ pub enum Id {
AVRP,
V012,
AVUI,
#[cfg(not(feature = "ffmpeg_7_0"))]
AYUV,
TARGA_Y216,
V308,
@ -656,10 +657,14 @@ pub enum Id {
RTV1,
#[cfg(feature = "ffmpeg_6_1")]
VMIX,
#[cfg(feature = "ffmpeg_7_0")]
LEAD,
#[cfg(feature = "ffmpeg_6_1")]
AC4,
#[cfg(feature = "ffmpeg_6_1")]
OSQ,
#[cfg(feature = "ffmpeg_7_0")]
QOA,
#[cfg(feature = "ffmpeg_6_1")]
SMPTE_2038,
}
@ -881,6 +886,7 @@ impl From<AVCodecID> for Id {
AV_CODEC_ID_AVRP => Id::AVRP,
AV_CODEC_ID_012V => Id::V012,
AV_CODEC_ID_AVUI => Id::AVUI,
#[cfg(not(feature = "ffmpeg_7_0"))]
AV_CODEC_ID_AYUV => Id::AYUV,
AV_CODEC_ID_TARGA_Y216 => Id::TARGA_Y216,
AV_CODEC_ID_V308 => Id::V308,
@ -1322,10 +1328,14 @@ impl From<AVCodecID> for Id {
AV_CODEC_ID_RTV1 => Id::RTV1,
#[cfg(feature = "ffmpeg_6_1")]
AV_CODEC_ID_VMIX => Id::VMIX,
#[cfg(feature = "ffmpeg_7_0")]
AV_CODEC_ID_LEAD => Id::LEAD,
#[cfg(feature = "ffmpeg_6_1")]
AV_CODEC_ID_AC4 => Id::AC4,
#[cfg(feature = "ffmpeg_6_1")]
AV_CODEC_ID_OSQ => Id::OSQ,
#[cfg(feature = "ffmpeg_7_0")]
AV_CODEC_ID_QOA => Id::QOA,
#[cfg(feature = "ffmpeg_6_1")]
AV_CODEC_ID_SMPTE_2038 => Id::SMPTE_2038,
@ -1541,6 +1551,7 @@ impl From<Id> for AVCodecID {
Id::AVRP => AV_CODEC_ID_AVRP,
Id::V012 => AV_CODEC_ID_012V,
Id::AVUI => AV_CODEC_ID_AVUI,
#[cfg(not(feature = "ffmpeg_7_0"))]
Id::AYUV => AV_CODEC_ID_AYUV,
Id::TARGA_Y216 => AV_CODEC_ID_TARGA_Y216,
Id::V308 => AV_CODEC_ID_V308,
@ -1982,10 +1993,14 @@ impl From<Id> for AVCodecID {
Id::RTV1 => AV_CODEC_ID_RTV1,
#[cfg(feature = "ffmpeg_6_1")]
Id::VMIX => AV_CODEC_ID_VMIX,
#[cfg(feature = "ffmpeg_7_0")]
Id::LEAD => AV_CODEC_ID_LEAD,
#[cfg(feature = "ffmpeg_6_1")]
Id::AC4 => AV_CODEC_ID_AC4,
#[cfg(feature = "ffmpeg_6_1")]
Id::OSQ => AV_CODEC_ID_OSQ,
#[cfg(feature = "ffmpeg_7_0")]
Id::QOA => AV_CODEC_ID_QOA,
#[cfg(feature = "ffmpeg_6_1")]
Id::SMPTE_2038 => AV_CODEC_ID_SMPTE_2038,
}