parent
83a831befb
commit
c6dd54003e
3
.github/workflows/build.yml
vendored
3
.github/workflows/build.yml
vendored
@ -11,7 +11,8 @@ jobs:
|
|||||||
container: jrottenberg/ffmpeg:${{ matrix.ffmpeg_version }}-ubuntu
|
container: jrottenberg/ffmpeg:${{ matrix.ffmpeg_version }}-ubuntu
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
ffmpeg_version: ["3.4", "4.0", "4.1", "4.2", "4.3", "4.4", "5.0", "5.1"]
|
ffmpeg_version:
|
||||||
|
["3.4", "4.0", "4.1", "4.2", "4.3", "4.4", "5.0", "5.1", "6.0"]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -117,7 +117,7 @@ version = "0.24"
|
|||||||
optional = true
|
optional = true
|
||||||
|
|
||||||
[dependencies.ffmpeg-sys-the-third]
|
[dependencies.ffmpeg-sys-the-third]
|
||||||
version = "1.0.0"
|
version = "1.1.0"
|
||||||
default-features = false
|
default-features = false
|
||||||
|
|
||||||
[dependencies.serde]
|
[dependencies.serde]
|
||||||
|
@ -5,6 +5,7 @@ bitflags! {
|
|||||||
pub struct Capabilities: c_uint {
|
pub struct Capabilities: c_uint {
|
||||||
const DRAW_HORIZ_BAND = AV_CODEC_CAP_DRAW_HORIZ_BAND;
|
const DRAW_HORIZ_BAND = AV_CODEC_CAP_DRAW_HORIZ_BAND;
|
||||||
const DR1 = AV_CODEC_CAP_DR1;
|
const DR1 = AV_CODEC_CAP_DR1;
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
const TRUNCATED = AV_CODEC_CAP_TRUNCATED;
|
const TRUNCATED = AV_CODEC_CAP_TRUNCATED;
|
||||||
const DELAY = AV_CODEC_CAP_DELAY;
|
const DELAY = AV_CODEC_CAP_DELAY;
|
||||||
const SMALL_LAST_FRAME = AV_CODEC_CAP_SMALL_LAST_FRAME;
|
const SMALL_LAST_FRAME = AV_CODEC_CAP_SMALL_LAST_FRAME;
|
||||||
@ -16,9 +17,14 @@ bitflags! {
|
|||||||
const FRAME_THREADS = AV_CODEC_CAP_FRAME_THREADS;
|
const FRAME_THREADS = AV_CODEC_CAP_FRAME_THREADS;
|
||||||
const SLICE_THREADS = AV_CODEC_CAP_SLICE_THREADS;
|
const SLICE_THREADS = AV_CODEC_CAP_SLICE_THREADS;
|
||||||
const PARAM_CHANGE = AV_CODEC_CAP_PARAM_CHANGE;
|
const PARAM_CHANGE = AV_CODEC_CAP_PARAM_CHANGE;
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
const AUTO_THREADS = AV_CODEC_CAP_AUTO_THREADS;
|
const AUTO_THREADS = AV_CODEC_CAP_AUTO_THREADS;
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
const OTHER_THREADS = AV_CODEC_CAP_OTHER_THREADS;
|
||||||
const VARIABLE_FRAME_SIZE = AV_CODEC_CAP_VARIABLE_FRAME_SIZE;
|
const VARIABLE_FRAME_SIZE = AV_CODEC_CAP_VARIABLE_FRAME_SIZE;
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
const INTRA_ONLY = AV_CODEC_CAP_INTRA_ONLY;
|
const INTRA_ONLY = AV_CODEC_CAP_INTRA_ONLY;
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
const LOSSLESS = AV_CODEC_CAP_LOSSLESS;
|
const LOSSLESS = AV_CODEC_CAP_LOSSLESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,10 @@ impl Context {
|
|||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_mut_ptr()).thread_type = config.kind.into();
|
(*self.as_mut_ptr()).thread_type = config.kind.into();
|
||||||
(*self.as_mut_ptr()).thread_count = config.count as c_int;
|
(*self.as_mut_ptr()).thread_count = config.count as c_int;
|
||||||
(*self.as_mut_ptr()).thread_safe_callbacks = i32::from(config.safe);
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
|
{
|
||||||
|
(*self.as_mut_ptr()).thread_safe_callbacks = i32::from(config.safe);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,6 +113,7 @@ impl Context {
|
|||||||
threading::Config {
|
threading::Config {
|
||||||
kind: threading::Type::from((*self.as_ptr()).active_thread_type),
|
kind: threading::Type::from((*self.as_ptr()).active_thread_type),
|
||||||
count: (*self.as_ptr()).thread_count as usize,
|
count: (*self.as_ptr()).thread_count as usize,
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
safe: (*self.as_ptr()).thread_safe_callbacks != 0,
|
safe: (*self.as_ptr()).thread_safe_callbacks != 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ bitflags! {
|
|||||||
const PASS2 = AV_CODEC_FLAG_PASS2;
|
const PASS2 = AV_CODEC_FLAG_PASS2;
|
||||||
const GRAY = AV_CODEC_FLAG_GRAY;
|
const GRAY = AV_CODEC_FLAG_GRAY;
|
||||||
const PSNR = AV_CODEC_FLAG_PSNR;
|
const PSNR = AV_CODEC_FLAG_PSNR;
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
const TRUNCATED = AV_CODEC_FLAG_TRUNCATED;
|
const TRUNCATED = AV_CODEC_FLAG_TRUNCATED;
|
||||||
const INTERLACED_DCT = AV_CODEC_FLAG_INTERLACED_DCT;
|
const INTERLACED_DCT = AV_CODEC_FLAG_INTERLACED_DCT;
|
||||||
const LOW_DELAY = AV_CODEC_FLAG_LOW_DELAY;
|
const LOW_DELAY = AV_CODEC_FLAG_LOW_DELAY;
|
||||||
|
@ -616,6 +616,37 @@ pub enum Id {
|
|||||||
PHM,
|
PHM,
|
||||||
#[cfg(feature = "ffmpeg_5_1")]
|
#[cfg(feature = "ffmpeg_5_1")]
|
||||||
DFPWM,
|
DFPWM,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
RADIANCE_HDR,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
WBMP,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
MEDIA100,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
VQC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
ADPCM_XMD,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
WADY_DPCM,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
CBD2_DPCM,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
BONK,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
MISC4,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
APAC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
FTR,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
WAVARC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
RKA,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
VNULL,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
ANULL,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Id {
|
impl Id {
|
||||||
@ -1237,6 +1268,37 @@ impl From<AVCodecID> for Id {
|
|||||||
#[cfg(feature = "ffmpeg_5_1")]
|
#[cfg(feature = "ffmpeg_5_1")]
|
||||||
AV_CODEC_ID_DFPWM => Id::DFPWM,
|
AV_CODEC_ID_DFPWM => Id::DFPWM,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_RADIANCE_HDR => Id::RADIANCE_HDR,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_WBMP => Id::WBMP,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_MEDIA100 => Id::MEDIA100,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_VQC => Id::VQC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_ADPCM_XMD => Id::ADPCM_XMD,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_WADY_DPCM => Id::WADY_DPCM,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_CBD2_DPCM => Id::CBD2_DPCM,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_BONK => Id::BONK,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_MISC4 => Id::MISC4,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_APAC => Id::APAC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_FTR => Id::FTR,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_WAVARC => Id::WAVARC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_RKA => Id::RKA,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_VNULL => Id::VNULL,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_CODEC_ID_ANULL => Id::ANULL,
|
||||||
|
|
||||||
#[cfg(feature = "non-exhaustive-enums")]
|
#[cfg(feature = "non-exhaustive-enums")]
|
||||||
_ => unimplemented!(),
|
_ => unimplemented!(),
|
||||||
}
|
}
|
||||||
@ -1851,6 +1913,37 @@ impl From<Id> for AVCodecID {
|
|||||||
Id::PHM => AV_CODEC_ID_PHM,
|
Id::PHM => AV_CODEC_ID_PHM,
|
||||||
#[cfg(feature = "ffmpeg_5_1")]
|
#[cfg(feature = "ffmpeg_5_1")]
|
||||||
Id::DFPWM => AV_CODEC_ID_DFPWM,
|
Id::DFPWM => AV_CODEC_ID_DFPWM,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::RADIANCE_HDR => AV_CODEC_ID_RADIANCE_HDR,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::WBMP => AV_CODEC_ID_WBMP,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::MEDIA100 => AV_CODEC_ID_MEDIA100,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::VQC => AV_CODEC_ID_VQC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::ADPCM_XMD => AV_CODEC_ID_ADPCM_XMD,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::WADY_DPCM => AV_CODEC_ID_WADY_DPCM,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::CBD2_DPCM => AV_CODEC_ID_CBD2_DPCM,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::BONK => AV_CODEC_ID_BONK,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::MISC4 => AV_CODEC_ID_MISC4,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::APAC => AV_CODEC_ID_APAC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::FTR => AV_CODEC_ID_FTR,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::WAVARC => AV_CODEC_ID_WAVARC,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::RKA => AV_CODEC_ID_RKA,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::VNULL => AV_CODEC_ID_VNULL,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Id::ANULL => AV_CODEC_ID_ANULL,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize};
|
|||||||
pub struct Config {
|
pub struct Config {
|
||||||
pub kind: Type,
|
pub kind: Type,
|
||||||
pub count: usize,
|
pub count: usize,
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
pub safe: bool,
|
pub safe: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,6 +26,7 @@ impl Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
pub fn safe(value: bool) -> Self {
|
pub fn safe(value: bool) -> Self {
|
||||||
Config {
|
Config {
|
||||||
safe: value,
|
safe: value,
|
||||||
@ -38,6 +40,7 @@ impl Default for Config {
|
|||||||
Config {
|
Config {
|
||||||
kind: Type::None,
|
kind: Type::None,
|
||||||
count: 0,
|
count: 0,
|
||||||
|
#[cfg(not(feature = "ffmpeg_6_0"))]
|
||||||
safe: false,
|
safe: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,10 @@ impl Filter {
|
|||||||
if ptr.is_null() {
|
if ptr.is_null() {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
Some(PadIter::new((*self.as_ptr()).inputs))
|
Some(PadIter::new(
|
||||||
|
(*self.as_ptr()).inputs,
|
||||||
|
(*self.as_ptr()).nb_inputs as isize,
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,7 +62,10 @@ impl Filter {
|
|||||||
if ptr.is_null() {
|
if ptr.is_null() {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
Some(PadIter::new((*self.as_ptr()).outputs))
|
Some(PadIter::new(
|
||||||
|
(*self.as_ptr()).outputs,
|
||||||
|
(*self.as_ptr()).nb_outputs as isize,
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,15 +77,17 @@ impl Filter {
|
|||||||
|
|
||||||
pub struct PadIter<'a> {
|
pub struct PadIter<'a> {
|
||||||
ptr: *const AVFilterPad,
|
ptr: *const AVFilterPad,
|
||||||
|
count: isize,
|
||||||
cur: isize,
|
cur: isize,
|
||||||
|
|
||||||
_marker: PhantomData<&'a ()>,
|
_marker: PhantomData<&'a ()>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> PadIter<'a> {
|
impl<'a> PadIter<'a> {
|
||||||
pub fn new(ptr: *const AVFilterPad) -> Self {
|
pub fn new(ptr: *const AVFilterPad, count: isize) -> Self {
|
||||||
PadIter {
|
PadIter {
|
||||||
ptr,
|
ptr,
|
||||||
|
count,
|
||||||
cur: 0,
|
cur: 0,
|
||||||
_marker: PhantomData,
|
_marker: PhantomData,
|
||||||
}
|
}
|
||||||
@ -91,7 +99,7 @@ impl<'a> Iterator for PadIter<'a> {
|
|||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
unsafe {
|
unsafe {
|
||||||
if self.cur >= avfilter_pad_count(self.ptr) as isize {
|
if self.cur >= self.count {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,6 +371,39 @@ pub enum Pixel {
|
|||||||
#[cfg(feature = "ffmpeg_5_0")]
|
#[cfg(feature = "ffmpeg_5_0")]
|
||||||
P416LE,
|
P416LE,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
VUYA,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
RGBAF16BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
RGBAF16LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
VUYX,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
P012LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
P012BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Y212BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Y212LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
XV30BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
XV30LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
XV36BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
XV36LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
RGBF32BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
RGBF32LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
RGBAF32BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
RGBAF32LE,
|
||||||
|
|
||||||
#[cfg(feature = "rpi")]
|
#[cfg(feature = "rpi")]
|
||||||
RPI,
|
RPI,
|
||||||
#[cfg(feature = "rpi")]
|
#[cfg(feature = "rpi")]
|
||||||
@ -733,6 +766,39 @@ impl From<AVPixelFormat> for Pixel {
|
|||||||
#[cfg(feature = "ffmpeg_5_0")]
|
#[cfg(feature = "ffmpeg_5_0")]
|
||||||
AV_PIX_FMT_P416LE => Pixel::P416LE,
|
AV_PIX_FMT_P416LE => Pixel::P416LE,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_VUYA => Pixel::VUYA,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_RGBAF16BE => Pixel::RGBAF16BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_RGBAF16LE => Pixel::RGBAF16LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_VUYX => Pixel::VUYX,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_P012LE => Pixel::P012LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_P012BE => Pixel::P012BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_Y212BE => Pixel::Y212BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_Y212LE => Pixel::Y212LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_XV30BE => Pixel::XV30BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_XV30LE => Pixel::XV30LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_XV36BE => Pixel::XV36BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_XV36LE => Pixel::XV36LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_RGBF32BE => Pixel::RGBF32BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_RGBF32LE => Pixel::RGBF32LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_RGBAF32BE => Pixel::RGBAF32BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_PIX_FMT_RGBAF32LE => Pixel::RGBAF32LE,
|
||||||
|
|
||||||
#[cfg(feature = "rpi")]
|
#[cfg(feature = "rpi")]
|
||||||
AV_PIX_FMT_RPI => Pixel::RPI,
|
AV_PIX_FMT_RPI => Pixel::RPI,
|
||||||
#[cfg(feature = "rpi")]
|
#[cfg(feature = "rpi")]
|
||||||
@ -1116,6 +1182,39 @@ impl From<Pixel> for AVPixelFormat {
|
|||||||
#[cfg(feature = "ffmpeg_5_0")]
|
#[cfg(feature = "ffmpeg_5_0")]
|
||||||
Pixel::P416LE => AV_PIX_FMT_P416LE,
|
Pixel::P416LE => AV_PIX_FMT_P416LE,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::VUYA => AV_PIX_FMT_VUYA,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::RGBAF16BE => AV_PIX_FMT_RGBAF16BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::RGBAF16LE => AV_PIX_FMT_RGBAF16LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::VUYX => AV_PIX_FMT_VUYX,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::P012LE => AV_PIX_FMT_P012LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::P012BE => AV_PIX_FMT_P012BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::Y212BE => AV_PIX_FMT_Y212BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::Y212LE => AV_PIX_FMT_Y212LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::XV30BE => AV_PIX_FMT_XV30BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::XV30LE => AV_PIX_FMT_XV30LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::XV36BE => AV_PIX_FMT_XV36BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::XV36LE => AV_PIX_FMT_XV36LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::RGBF32BE => AV_PIX_FMT_RGBF32BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::RGBF32LE => AV_PIX_FMT_RGBF32LE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::RGBAF32BE => AV_PIX_FMT_RGBAF32BE,
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Pixel::RGBAF32LE => AV_PIX_FMT_RGBAF32LE,
|
||||||
|
|
||||||
#[cfg(feature = "rpi")]
|
#[cfg(feature = "rpi")]
|
||||||
Pixel::RPI => AV_PIX_FMT_RPI,
|
Pixel::RPI => AV_PIX_FMT_RPI,
|
||||||
#[cfg(feature = "rpi")]
|
#[cfg(feature = "rpi")]
|
||||||
|
@ -61,6 +61,9 @@ pub enum Type {
|
|||||||
|
|
||||||
#[cfg(feature = "ffmpeg_5_1")]
|
#[cfg(feature = "ffmpeg_5_1")]
|
||||||
DYNAMIC_HDR_VIVID,
|
DYNAMIC_HDR_VIVID,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AMBIENT_VIEWING_ENVIRONMENT,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Type {
|
impl Type {
|
||||||
@ -124,6 +127,9 @@ impl From<AVFrameSideDataType> for Type {
|
|||||||
#[cfg(feature = "ffmpeg_5_1")]
|
#[cfg(feature = "ffmpeg_5_1")]
|
||||||
AV_FRAME_DATA_DYNAMIC_HDR_VIVID => Type::DYNAMIC_HDR_VIVID,
|
AV_FRAME_DATA_DYNAMIC_HDR_VIVID => Type::DYNAMIC_HDR_VIVID,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT => Type::AMBIENT_VIEWING_ENVIRONMENT,
|
||||||
|
|
||||||
#[cfg(feature = "non-exhaustive-enums")]
|
#[cfg(feature = "non-exhaustive-enums")]
|
||||||
_ => unimplemented!(),
|
_ => unimplemented!(),
|
||||||
}
|
}
|
||||||
@ -181,6 +187,9 @@ impl From<Type> for AVFrameSideDataType {
|
|||||||
|
|
||||||
#[cfg(feature = "ffmpeg_5_1")]
|
#[cfg(feature = "ffmpeg_5_1")]
|
||||||
Type::DYNAMIC_HDR_VIVID => AV_FRAME_DATA_DYNAMIC_HDR_VIVID,
|
Type::DYNAMIC_HDR_VIVID => AV_FRAME_DATA_DYNAMIC_HDR_VIVID,
|
||||||
|
|
||||||
|
#[cfg(feature = "ffmpeg_6_0")]
|
||||||
|
Type::AMBIENT_VIEWING_ENVIRONMENT => AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user