diff --git a/src/codec/audio_service.rs b/src/codec/audio_service.rs index faf7217..a02caa0 100644 --- a/src/codec/audio_service.rs +++ b/src/codec/audio_service.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVAudioServiceType::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum AudioService { diff --git a/src/codec/codec.rs b/src/codec/codec.rs index e433bd3..c9f02ff 100644 --- a/src/codec/codec.rs +++ b/src/codec/codec.rs @@ -54,7 +54,7 @@ impl Codec { pub fn medium(&self) -> media::Type { unsafe { - media::Type::from((*self.as_ptr()).kind) + media::Type::from((*self.as_ptr()).type_) } } diff --git a/src/codec/decoder/subtitle.rs b/src/codec/decoder/subtitle.rs index 9323f79..ad82297 100644 --- a/src/codec/decoder/subtitle.rs +++ b/src/codec/decoder/subtitle.rs @@ -14,7 +14,7 @@ impl Subtitle { unsafe { let mut got: c_int = 0; - match avcodec_decode_subtitle2(self.as_mut_ptr(), out.as_mut_ptr(), &mut got, packet.as_ptr()) { + match avcodec_decode_subtitle2(self.as_mut_ptr(), out.as_mut_ptr(), &mut got, packet.as_ptr() as *mut _) { e if e < 0 => Err(Error::from(e)), _ => Ok(got != 0) } diff --git a/src/codec/discard.rs b/src/codec/discard.rs index c8bbbd4..8edae76 100644 --- a/src/codec/discard.rs +++ b/src/codec/discard.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVDiscard::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Discard { diff --git a/src/codec/field_order.rs b/src/codec/field_order.rs index 84e66a7..da1f820 100644 --- a/src/codec/field_order.rs +++ b/src/codec/field_order.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVFieldOrder::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum FieldOrder { diff --git a/src/codec/id.rs b/src/codec/id.rs index a7cfcb0..4875df9 100644 --- a/src/codec/id.rs +++ b/src/codec/id.rs @@ -2,6 +2,7 @@ use std::ffi::CStr; use std::str::from_utf8_unchecked; use ffi::*; +use ffi::AVCodecID::*; use ::util::media; #[allow(non_camel_case_types)] @@ -458,6 +459,19 @@ pub enum Id { MPEG4SYSTEMS, FFMETADATA, WRAPPED_AVFRAME, + + PSD, + PIXLET, + SPEEDHQ, + CLEARVIDEO, + FMVC, + SCPR, + XPM, + AV1, + PCM_F16LE, + PCM_F24LE, + ATRAC3AL, + ATRAC3PAL, } impl Id { @@ -925,6 +939,18 @@ impl From for Id { AV_CODEC_ID_MPEG4SYSTEMS => Id::MPEG4SYSTEMS, AV_CODEC_ID_FFMETADATA => Id::FFMETADATA, AV_CODEC_ID_WRAPPED_AVFRAME => Id::WRAPPED_AVFRAME, + AV_CODEC_ID_PSD => Id::PSD, + AV_CODEC_ID_PIXLET => Id::PIXLET, + AV_CODEC_ID_SPEEDHQ => Id::SPEEDHQ, + AV_CODEC_ID_CLEARVIDEO => Id::CLEARVIDEO, + AV_CODEC_ID_FMVC => Id::FMVC, + AV_CODEC_ID_SCPR => Id::SCPR, + AV_CODEC_ID_XPM => Id::XPM, + AV_CODEC_ID_AV1 => Id::AV1, + AV_CODEC_ID_PCM_F16LE => Id::PCM_F16LE, + AV_CODEC_ID_PCM_F24LE => Id::PCM_F24LE, + AV_CODEC_ID_ATRAC3AL => Id::ATRAC3AL, + AV_CODEC_ID_ATRAC3PAL => Id::ATRAC3PAL, } } } @@ -1073,7 +1099,7 @@ impl Into for Id { Id::ANM => AV_CODEC_ID_ANM, Id::BINKVIDEO => AV_CODEC_ID_BINKVIDEO, Id::IFF_ILBM => AV_CODEC_ID_IFF_ILBM, - Id::IFF_BYTERUN1 => AV_CODEC_ID_IFF_BYTERUN1, + Id::IFF_BYTERUN1 => AV_CODEC_ID_IFF_ILBM, Id::KGV1 => AV_CODEC_ID_KGV1, Id::YOP => AV_CODEC_ID_YOP, Id::VP8 => AV_CODEC_ID_VP8, @@ -1111,7 +1137,7 @@ impl Into for Id { Id::WEBP => AV_CODEC_ID_WEBP, Id::HNM4_VIDEO => AV_CODEC_ID_HNM4_VIDEO, Id::HEVC => AV_CODEC_ID_HEVC, - Id::H265 => AV_CODEC_ID_H265, + Id::H265 => AV_CODEC_ID_HEVC, Id::FIC => AV_CODEC_ID_FIC, Id::ALIAS_PIX => AV_CODEC_ID_ALIAS_PIX, Id::BRENDER_PIX => AV_CODEC_ID_BRENDER_PIX, @@ -1383,6 +1409,19 @@ impl Into for Id { Id::MPEG4SYSTEMS => AV_CODEC_ID_MPEG4SYSTEMS, Id::FFMETADATA => AV_CODEC_ID_FFMETADATA, Id::WRAPPED_AVFRAME => AV_CODEC_ID_WRAPPED_AVFRAME, + + Id::PSD => AV_CODEC_ID_PSD, + Id::PIXLET => AV_CODEC_ID_PIXLET, + Id::SPEEDHQ => AV_CODEC_ID_SPEEDHQ, + Id::FMVC => AV_CODEC_ID_FMVC, + Id::CLEARVIDEO => AV_CODEC_ID_CLEARVIDEO, + Id::SCPR => AV_CODEC_ID_SCPR, + Id::XPM => AV_CODEC_ID_XPM, + Id::AV1 => AV_CODEC_ID_AV1, + Id::PCM_F16LE => AV_CODEC_ID_PCM_F16LE, + Id::PCM_F24LE => AV_CODEC_ID_PCM_F24LE, + Id::ATRAC3AL => AV_CODEC_ID_ATRAC3AL, + Id::ATRAC3PAL => AV_CODEC_ID_ATRAC3PAL, } } } diff --git a/src/codec/packet/packet.rs b/src/codec/packet/packet.rs index 8edc604..e687f9d 100644 --- a/src/codec/packet/packet.rs +++ b/src/codec/packet/packet.rs @@ -208,7 +208,7 @@ impl Packet { return Err(Error::InvalidData); } - match av_write_frame(format.as_mut_ptr(), self.as_ptr()) { + match av_write_frame(format.as_mut_ptr(), self.as_ptr() as *mut _) { 1 => Ok(true), 0 => Ok(false), e => Err(Error::from(e)) @@ -223,7 +223,7 @@ impl Packet { return Err(Error::InvalidData); } - match av_interleaved_write_frame(format.as_mut_ptr(), self.as_ptr()) { + match av_interleaved_write_frame(format.as_mut_ptr(), self.as_ptr() as *mut _) { 1 => Ok(true), 0 => Ok(false), e => Err(Error::from(e)) diff --git a/src/codec/packet/side_data.rs b/src/codec/packet/side_data.rs index 5ecaf2e..41bd15c 100644 --- a/src/codec/packet/side_data.rs +++ b/src/codec/packet/side_data.rs @@ -2,6 +2,7 @@ use std::marker::PhantomData; use std::slice; use ffi::*; +use ffi::AVPacketSideDataType::*; use super::Packet; #[derive(Eq, PartialEq, Copy, Clone, Debug)] @@ -26,7 +27,9 @@ pub enum Type { WebVTTSettings, MetadataUpdate, MPEGTSStreamID, - MasteringDisplayMetadata + MasteringDisplayMetadata, + DataSpherical, + DataNb, } impl From for Type { @@ -52,7 +55,9 @@ impl From for Type { AV_PKT_DATA_WEBVTT_SETTINGS => Type::WebVTTSettings, AV_PKT_DATA_METADATA_UPDATE => Type::MetadataUpdate, AV_PKT_DATA_MPEGTS_STREAM_ID => Type::MPEGTSStreamID, - AV_PKT_DATA_MASTERING_DISPLAY_METADATA => Type::MasteringDisplayMetadata + AV_PKT_DATA_MASTERING_DISPLAY_METADATA => Type::MasteringDisplayMetadata, + AV_PKT_DATA_SPHERICAL => Type::DataSpherical, + AV_PKT_DATA_NB => Type::DataNb, } } } @@ -80,7 +85,9 @@ impl Into for Type { Type::WebVTTSettings => AV_PKT_DATA_WEBVTT_SETTINGS, Type::MetadataUpdate => AV_PKT_DATA_METADATA_UPDATE, Type::MPEGTSStreamID => AV_PKT_DATA_MPEGTS_STREAM_ID, - Type::MasteringDisplayMetadata => AV_PKT_DATA_MASTERING_DISPLAY_METADATA + Type::MasteringDisplayMetadata => AV_PKT_DATA_MASTERING_DISPLAY_METADATA, + Type::DataSpherical => AV_PKT_DATA_SPHERICAL, + Type::DataNb => AV_PKT_DATA_NB, } } } @@ -104,7 +111,7 @@ impl<'a> SideData<'a> { impl<'a> SideData<'a> { pub fn kind(&self) -> Type { unsafe { - Type::from((*self.as_ptr()).kind) + Type::from((*self.as_ptr()).type_) } } diff --git a/src/codec/subtitle/mod.rs b/src/codec/subtitle/mod.rs index 612aa19..024ec13 100644 --- a/src/codec/subtitle/mod.rs +++ b/src/codec/subtitle/mod.rs @@ -12,6 +12,7 @@ use std::mem; use libc::{c_uint, uint32_t, size_t}; use ffi::*; +use ffi::AVSubtitleType::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Type { @@ -105,7 +106,7 @@ impl Subtitle { as *mut _; let mut rect = av_mallocz(mem::size_of::() as size_t) as *mut AVSubtitleRect; - (*rect).kind = kind.into(); + (*rect).type_ = kind.into(); *self.0.rects.offset((self.0.num_rects - 1) as isize) = rect; diff --git a/src/codec/subtitle/rect.rs b/src/codec/subtitle/rect.rs index c645dc6..cc054b4 100644 --- a/src/codec/subtitle/rect.rs +++ b/src/codec/subtitle/rect.rs @@ -15,7 +15,7 @@ pub enum Rect<'a> { impl<'a> Rect<'a> { pub unsafe fn wrap(ptr: *const AVSubtitleRect) -> Self { - match Type::from((*ptr).kind) { + match Type::from((*ptr).type_) { Type::None => Rect::None(ptr), Type::Bitmap => Rect::Bitmap(Bitmap::wrap(ptr)), Type::Text => Rect::Text(Text::wrap(ptr)), diff --git a/src/codec/subtitle/rect_mut.rs b/src/codec/subtitle/rect_mut.rs index 934ad8e..cde09dc 100644 --- a/src/codec/subtitle/rect_mut.rs +++ b/src/codec/subtitle/rect_mut.rs @@ -14,7 +14,7 @@ pub enum RectMut<'a> { impl<'a> RectMut<'a> { pub unsafe fn wrap(ptr: *mut AVSubtitleRect) -> Self { - match Type::from((*ptr).kind) { + match Type::from((*ptr).type_) { Type::None => RectMut::None(ptr), Type::Bitmap => RectMut::Bitmap(BitmapMut::wrap(ptr)), Type::Text => RectMut::Text(TextMut::wrap(ptr)), @@ -62,7 +62,7 @@ impl<'a> BitmapMut<'a> { pub unsafe fn wrap(ptr: *mut AVSubtitleRect) -> Self { BitmapMut { immutable: Bitmap::wrap(ptr as *const _) } } - + pub unsafe fn as_mut_ptr(&mut self) -> *mut AVSubtitleRect { self.as_ptr() as *mut _ } diff --git a/src/device/extensions.rs b/src/device/extensions.rs index d80800d..850aa04 100644 --- a/src/device/extensions.rs +++ b/src/device/extensions.rs @@ -26,7 +26,7 @@ impl<'a> DeviceIter<'a> { pub unsafe fn wrap(ctx: *const AVFormatContext) -> Result { let mut ptr: *mut AVDeviceInfoList = ptr::null_mut(); - match avdevice_list_devices(ctx, &mut ptr) { + match avdevice_list_devices(ctx as *mut _, &mut ptr) { n if n < 0 => Err(Error::from(n)), diff --git a/src/filter/context/source.rs b/src/filter/context/source.rs index f1ee9a2..23f1edf 100644 --- a/src/filter/context/source.rs +++ b/src/filter/context/source.rs @@ -17,7 +17,7 @@ impl<'a> Source<'a> { impl<'a> Source<'a> { pub fn failed_requests(&self) -> usize { unsafe { - av_buffersrc_get_nb_failed_requests(self.ctx.as_ptr()) as usize + av_buffersrc_get_nb_failed_requests(self.ctx.as_ptr() as *mut _) as usize } } diff --git a/src/filter/graph.rs b/src/filter/graph.rs index f11516b..c17a353 100644 --- a/src/filter/graph.rs +++ b/src/filter/graph.rs @@ -85,7 +85,7 @@ impl Graph { pub fn dump(&self) -> String { unsafe { - let ptr = avfilter_graph_dump(self.as_ptr(), ptr::null()); + let ptr = avfilter_graph_dump(self.as_ptr() as *mut _, ptr::null()); let cstr = from_utf8_unchecked(CStr::from_ptr((ptr)).to_bytes()); let string = cstr.to_owned(); diff --git a/src/filter/mod.rs b/src/filter/mod.rs index 1cd2576..0a56824 100644 --- a/src/filter/mod.rs +++ b/src/filter/mod.rs @@ -27,7 +27,7 @@ pub fn register_all() { pub fn register(filter: &Filter) -> Result<(), Error> { unsafe { - match avfilter_register(filter.as_ptr()) { + match avfilter_register(filter.as_ptr() as *mut _) { 0 => Ok(()), _ => Err(Error::InvalidData), } diff --git a/src/format/context/common.rs b/src/format/context/common.rs index 8d2d5d0..dae3e9a 100644 --- a/src/format/context/common.rs +++ b/src/format/context/common.rs @@ -106,7 +106,7 @@ impl<'a> Best<'a> { pub fn best<'b>(self, kind: media::Type) -> Option> where 'a: 'b { unsafe { let mut decoder = ptr::null_mut(); - let index = av_find_best_stream(self.context.as_ptr(), + let index = av_find_best_stream(self.context.ptr, kind.into(), self.wanted as c_int, self.related as c_int, &mut decoder, 0); diff --git a/src/format/context/input.rs b/src/format/context/input.rs index 5bb2787..579d4f3 100644 --- a/src/format/context/input.rs +++ b/src/format/context/input.rs @@ -182,7 +182,7 @@ pub fn dump(ctx: &Input, index: i32, url: Option<&str>) { let url = url.map(|u| CString::new(u).unwrap()); unsafe { - av_dump_format(ctx.as_ptr(), index, + av_dump_format(ctx.as_ptr() as *mut _, index, url.map(|u| u.as_ptr()).unwrap_or(ptr::null()), 0); } } diff --git a/src/format/context/output.rs b/src/format/context/output.rs index 3025fbc..45bb794 100644 --- a/src/format/context/output.rs +++ b/src/format/context/output.rs @@ -106,7 +106,7 @@ pub fn dump(ctx: &Output, index: i32, url: Option<&str>) { let url = url.map(|u| CString::new(u).unwrap()); unsafe { - av_dump_format(ctx.as_ptr(), index, + av_dump_format(ctx.as_ptr() as *mut _, index, url.map(|u| u.as_ptr()).unwrap_or(ptr::null()), 1); } } diff --git a/src/format/format/output.rs b/src/format/format/output.rs index 522419f..a5d0038 100644 --- a/src/format/format/output.rs +++ b/src/format/format/output.rs @@ -70,7 +70,7 @@ impl Output { let path = CString::new(path.as_ref().as_os_str().to_str().unwrap()).unwrap(); unsafe { - codec::Id::from(av_guess_codec(self.as_ptr(), ptr::null(), path.as_ptr(), ptr::null(), kind.into())) + codec::Id::from(av_guess_codec(self.as_ptr() as *mut _, ptr::null(), path.as_ptr(), ptr::null(), kind.into())) } } diff --git a/src/format/mod.rs b/src/format/mod.rs index 6bea3f9..40ca382 100644 --- a/src/format/mod.rs +++ b/src/format/mod.rs @@ -29,11 +29,11 @@ pub fn register_all() { pub fn register(format: &Format) { match format { &Format::Input(ref format) => unsafe { - av_register_input_format(format.as_ptr()); + av_register_input_format(format.as_ptr() as *mut _); }, &Format::Output(ref format) => unsafe { - av_register_output_format(format.as_ptr()); + av_register_output_format(format.as_ptr() as *mut _); } } } @@ -69,7 +69,7 @@ pub fn open>(path: &P, format: &Format) -> Result match format { &Format::Input(ref format) => { - match avformat_open_input(&mut ps, path.as_ptr(), format.as_ptr(), ptr::null_mut()) { + match avformat_open_input(&mut ps, path.as_ptr(), format.as_ptr() as *mut _, ptr::null_mut()) { 0 => { match avformat_find_stream_info(ps, ptr::null_mut()) { r if r >= 0 => Ok(Context::Input(context::Input::wrap(ps))), @@ -82,7 +82,7 @@ pub fn open>(path: &P, format: &Format) -> Result } &Format::Output(ref format) => { - match avformat_alloc_output_context2(&mut ps, format.as_ptr(), ptr::null(), path.as_ptr()) { + match avformat_alloc_output_context2(&mut ps, format.as_ptr() as *mut _, ptr::null(), path.as_ptr()) { 0 => { match avio_open(&mut (*ps).pb, path.as_ptr(), AVIO_FLAG_WRITE) { 0 => Ok(Context::Output(context::Output::wrap(ps))), @@ -105,7 +105,7 @@ pub fn open_with>(path: &P, format: &Format, options: Dictionary) match format { &Format::Input(ref format) => { - let res = avformat_open_input(&mut ps, path.as_ptr(), format.as_ptr(), &mut opts); + let res = avformat_open_input(&mut ps, path.as_ptr(), format.as_ptr() as *mut _, &mut opts); Dictionary::own(opts); @@ -122,7 +122,7 @@ pub fn open_with>(path: &P, format: &Format, options: Dictionary) } &Format::Output(ref format) => { - match avformat_alloc_output_context2(&mut ps, format.as_ptr(), ptr::null(), path.as_ptr()) { + match avformat_alloc_output_context2(&mut ps, format.as_ptr() as *mut _, ptr::null(), path.as_ptr()) { 0 => { match avio_open(&mut (*ps).pb, path.as_ptr(), AVIO_FLAG_WRITE) { 0 => Ok(Context::Output(context::Output::wrap(ps))), diff --git a/src/software/resampling/context.rs b/src/software/resampling/context.rs index 732f9b3..f9f429d 100644 --- a/src/software/resampling/context.rs +++ b/src/software/resampling/context.rs @@ -84,7 +84,7 @@ impl Context { /// Get the remaining delay. pub fn delay(&self) -> Option { unsafe { - match swr_get_delay(self.as_ptr(), 1) { + match swr_get_delay(self.as_ptr() as *mut _, 1) { 0 => None, _ => Some(Delay::from(self)) } diff --git a/src/software/resampling/delay.rs b/src/software/resampling/delay.rs index d70c30e..2f50fd8 100644 --- a/src/software/resampling/delay.rs +++ b/src/software/resampling/delay.rs @@ -14,10 +14,10 @@ impl Delay { pub fn from(context: &Context) -> Self { unsafe { Delay { - seconds: swr_get_delay(context.as_ptr(), 1), - milliseconds: swr_get_delay(context.as_ptr(), 1000), - input: swr_get_delay(context.as_ptr(), context.input().rate as int64_t), - output: swr_get_delay(context.as_ptr(), context.output().rate as int64_t), + seconds: swr_get_delay(context.as_ptr() as *mut _, 1), + milliseconds: swr_get_delay(context.as_ptr() as *mut _, 1000), + input: swr_get_delay(context.as_ptr() as *mut _, context.input().rate as int64_t), + output: swr_get_delay(context.as_ptr() as *mut _, context.output().rate as int64_t), } } } diff --git a/src/software/resampling/dither.rs b/src/software/resampling/dither.rs index df71ef8..46fffd7 100644 --- a/src/software/resampling/dither.rs +++ b/src/software/resampling/dither.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::SwrDitherType::*; #[derive(Eq, PartialEq, Copy, Clone, Debug)] pub enum Dither { @@ -23,7 +24,7 @@ impl From for Dither { SWR_DITHER_RECTANGULAR => Dither::Rectangular, SWR_DITHER_TRIANGULAR => Dither::Triangular, SWR_DITHER_TRIANGULAR_HIGHPASS => Dither::TriangularHighPass, - + SWR_DITHER_NS => Dither::None, SWR_DITHER_NS_LIPSHITZ => Dither::NoiseShapingLipshitz, SWR_DITHER_NS_F_WEIGHTED => Dither::NoiseShapingFWeighted, @@ -44,7 +45,7 @@ impl Into for Dither { Dither::Rectangular => SWR_DITHER_RECTANGULAR, Dither::Triangular => SWR_DITHER_TRIANGULAR, Dither::TriangularHighPass => SWR_DITHER_TRIANGULAR_HIGHPASS, - + Dither::NoiseShapingLipshitz => SWR_DITHER_NS_LIPSHITZ, Dither::NoiseShapingFWeighted => SWR_DITHER_NS_F_WEIGHTED, Dither::NoiseShapingModifiedEWeighted => SWR_DITHER_NS_MODIFIED_E_WEIGHTED, diff --git a/src/software/resampling/engine.rs b/src/software/resampling/engine.rs index 92a26c7..30da835 100644 --- a/src/software/resampling/engine.rs +++ b/src/software/resampling/engine.rs @@ -1,4 +1,5 @@ use ffi::*; +use sys::SwrEngine::*; #[derive(Eq, PartialEq, Copy, Clone, Debug)] pub enum Engine { diff --git a/src/software/resampling/filter.rs b/src/software/resampling/filter.rs index 6b182bb..7e12295 100644 --- a/src/software/resampling/filter.rs +++ b/src/software/resampling/filter.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::SwrFilterType::*; #[derive(Eq, PartialEq, Copy, Clone, Debug)] pub enum Filter { diff --git a/src/software/scaling/capability.rs b/src/software/scaling/capability.rs deleted file mode 100644 index b2e60c9..0000000 --- a/src/software/scaling/capability.rs +++ /dev/null @@ -1,14 +0,0 @@ -use libc::c_uint; -use ffi::*; - -bitflags! { - pub flags Capabilities: c_uint { - const MMX = SWS_CPU_CAPS_MMX, - const MMXEXT = SWS_CPU_CAPS_MMXEXT, - const MMX2 = SWS_CPU_CAPS_MMX2, - const _3DNOW = SWS_CPU_CAPS_3DNOW, - const ALTIVEC = SWS_CPU_CAPS_ALTIVEC, - const BFIN = SWS_CPU_CAPS_BFIN, - const SSE2 = SWS_CPU_CAPS_SSE2, - } -} diff --git a/src/software/scaling/context.rs b/src/software/scaling/context.rs index 29b2dd6..e4da466 100644 --- a/src/software/scaling/context.rs +++ b/src/software/scaling/context.rs @@ -104,7 +104,7 @@ impl Context { if input.format() != self.input.format || input.width() != self.input.width || input.height() != self.input.height { return Err(Error::InputChanged); } - + unsafe { if output.is_empty() { output.alloc(self.output.format, self.output.width, self.output.height); @@ -119,7 +119,7 @@ impl Context { sws_scale(self.as_mut_ptr(), (*input.as_ptr()).data.as_ptr() as *const *const _, (*input.as_ptr()).linesize.as_ptr() as *const _, 0, self.output.height as c_int, - (*output.as_mut_ptr()).data.as_ptr() as *mut *mut _, (*output.as_mut_ptr()).linesize.as_ptr() as *mut _); + (*output.as_mut_ptr()).data.as_ptr() as *const *const _, (*output.as_mut_ptr()).linesize.as_ptr() as *mut _); } Ok(()) diff --git a/src/software/scaling/mod.rs b/src/software/scaling/mod.rs index ff4ea55..ef3e359 100644 --- a/src/software/scaling/mod.rs +++ b/src/software/scaling/mod.rs @@ -1,9 +1,6 @@ pub mod flag; pub use self::flag::Flags; -pub mod capability; -pub use self::capability::Capabilities; - pub mod color_space; pub use self::color_space::ColorSpace; diff --git a/src/software/scaling/vector.rs b/src/software/scaling/vector.rs index b179c81..474ed9a 100644 --- a/src/software/scaling/vector.rs +++ b/src/software/scaling/vector.rs @@ -64,19 +64,19 @@ impl<'a> Vector<'a> { pub fn conv(&mut self, other: &Vector) { unsafe { - sws_convVec(self.as_mut_ptr(), other.as_ptr()); + sws_convVec(self.as_mut_ptr(), other.as_ptr() as *mut _); } } pub fn add(&mut self, other: &Vector) { unsafe { - sws_addVec(self.as_mut_ptr(), other.as_ptr()); + sws_addVec(self.as_mut_ptr(), other.as_ptr() as *mut _); } } pub fn sub(&mut self, other: &Vector) { unsafe { - sws_subVec(self.as_mut_ptr(), other.as_ptr()); + sws_subVec(self.as_mut_ptr(), other.as_ptr() as *mut _); } } @@ -104,7 +104,7 @@ impl<'a> Vector<'a> { impl<'a> Clone for Vector<'a> { fn clone(&self) -> Self { unsafe { - Vector { ptr: sws_cloneVec(self.as_ptr()), _own: true, _marker: PhantomData } + Vector { ptr: sws_cloneVec(self.as_ptr() as *mut _), _own: true, _marker: PhantomData } } } } diff --git a/src/util/chroma/location.rs b/src/util/chroma/location.rs index d8d900d..1dc64f1 100644 --- a/src/util/chroma/location.rs +++ b/src/util/chroma/location.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVChromaLocation::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Location { diff --git a/src/util/color/primaries.rs b/src/util/color/primaries.rs index a68d8fe..d150801 100644 --- a/src/util/color/primaries.rs +++ b/src/util/color/primaries.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVColorPrimaries::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Primaries { @@ -13,6 +14,11 @@ pub enum Primaries { SMPTE240M, Film, BT2020, + + SMPTE428, + SMPTE431, + SMPTE432, + JEDEC_P22, } impl From for Primaries { @@ -29,7 +35,12 @@ impl From for Primaries { AVCOL_PRI_SMPTE240M => Primaries::SMPTE240M, AVCOL_PRI_FILM => Primaries::Film, AVCOL_PRI_BT2020 => Primaries::BT2020, - AVCOL_PRI_NB => Primaries::Reserved0 + AVCOL_PRI_NB => Primaries::Reserved0, + + AVCOL_PRI_SMPTE428 => Primaries::SMPTE428, + AVCOL_PRI_SMPTE431 => Primaries::SMPTE431, + AVCOL_PRI_SMPTE432 => Primaries::SMPTE432, + AVCOL_PRI_JEDEC_P22 => Primaries::JEDEC_P22, } } } @@ -48,6 +59,11 @@ impl Into for Primaries { Primaries::SMPTE240M => AVCOL_PRI_SMPTE240M, Primaries::Film => AVCOL_PRI_FILM, Primaries::BT2020 => AVCOL_PRI_BT2020, + + Primaries::SMPTE428 => AVCOL_PRI_SMPTE428, + Primaries::SMPTE431 => AVCOL_PRI_SMPTE431, + Primaries::SMPTE432 => AVCOL_PRI_SMPTE432, + Primaries::JEDEC_P22 => AVCOL_PRI_JEDEC_P22, } } } diff --git a/src/util/color/range.rs b/src/util/color/range.rs index 6a596fe..42e0668 100644 --- a/src/util/color/range.rs +++ b/src/util/color/range.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVColorRange::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Range { diff --git a/src/util/color/space.rs b/src/util/color/space.rs index 835f51a..c095ba3 100644 --- a/src/util/color/space.rs +++ b/src/util/color/space.rs @@ -2,6 +2,7 @@ use std::ffi::CStr; use std::str::from_utf8_unchecked; use ffi::*; +use ffi::AVColorSpace::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Space { @@ -17,6 +18,7 @@ pub enum Space { YCGCO, BT2020NCL, BT2020CL, + SMPTE2085, } impl Space { @@ -41,7 +43,8 @@ impl From for Space { AVCOL_SPC_YCOCG => Space::YCOCG, AVCOL_SPC_BT2020_NCL => Space::BT2020NCL, AVCOL_SPC_BT2020_CL => Space::BT2020CL, - AVCOL_SPC_NB => Space::Unspecified + AVCOL_SPC_SMPTE2085 => Space::SMPTE2085, + AVCOL_SPC_NB => Space::Unspecified, } } } @@ -60,7 +63,8 @@ impl Into for Space { Space::YCOCG => AVCOL_SPC_YCOCG, Space::YCGCO => AVCOL_SPC_YCGCO, Space::BT2020NCL => AVCOL_SPC_BT2020_NCL, - Space::BT2020CL => AVCOL_SPC_BT2020_CL + Space::BT2020CL => AVCOL_SPC_BT2020_CL, + Space::SMPTE2085 => AVCOL_SPC_SMPTE2085, } } } diff --git a/src/util/color/transfer_characteristic.rs b/src/util/color/transfer_characteristic.rs index b47d8ea..39e0c29 100644 --- a/src/util/color/transfer_characteristic.rs +++ b/src/util/color/transfer_characteristic.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVColorTransferCharacteristic::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum TransferCharacteristic { @@ -18,6 +19,9 @@ pub enum TransferCharacteristic { IEC61966_2_1, BT2020_10, BT2020_12, + SMPTE2084, + SMPTE428, + ARIB_STD_B67, } impl From for TransferCharacteristic { @@ -39,7 +43,10 @@ impl From for TransferCharacteristic { AVCOL_TRC_IEC61966_2_1 => TransferCharacteristic::IEC61966_2_1, AVCOL_TRC_BT2020_10 => TransferCharacteristic::BT2020_10, AVCOL_TRC_BT2020_12 => TransferCharacteristic::BT2020_12, - AVCOL_TRC_NB => TransferCharacteristic::Reserved0 + AVCOL_TRC_NB => TransferCharacteristic::Reserved0, + AVCOL_TRC_SMPTE2084 => TransferCharacteristic::SMPTE2084, + AVCOL_TRC_SMPTE428 => TransferCharacteristic::SMPTE428, + AVCOL_TRC_ARIB_STD_B67 => TransferCharacteristic::ARIB_STD_B67, } } } @@ -62,7 +69,10 @@ impl Into for TransferCharacteristic { TransferCharacteristic::BT1361_ECG => AVCOL_TRC_BT1361_ECG, TransferCharacteristic::IEC61966_2_1 => AVCOL_TRC_IEC61966_2_1, TransferCharacteristic::BT2020_10 => AVCOL_TRC_BT2020_10, - TransferCharacteristic::BT2020_12 => AVCOL_TRC_BT2020_12 + TransferCharacteristic::BT2020_12 => AVCOL_TRC_BT2020_12, + TransferCharacteristic::SMPTE2084 => AVCOL_TRC_SMPTE2084, + TransferCharacteristic::SMPTE428 => AVCOL_TRC_SMPTE428, + TransferCharacteristic::ARIB_STD_B67 => AVCOL_TRC_ARIB_STD_B67, } } } diff --git a/src/util/format/pixel.rs b/src/util/format/pixel.rs index 0d95d18..af71b1a 100644 --- a/src/util/format/pixel.rs +++ b/src/util/format/pixel.rs @@ -4,6 +4,7 @@ use std::fmt; use std::str::{FromStr, from_utf8_unchecked}; use ffi::*; +use ffi::AVPixelFormat::*; #[derive(Eq, PartialEq, Copy, Clone, Debug)] pub enum Pixel { @@ -122,9 +123,6 @@ pub enum Pixel { GBRP16BE, GBRP16LE, - YUVA422P_LIBAV, - YUVA444P_LIBAV, - YUVA420P9BE, YUVA420P9LE, YUVA422P9BE, @@ -152,10 +150,10 @@ pub enum Pixel { NV20LE, NV20BE, - RGBA64BE_LIBAV, - RGBA64LE_LIBAV, - BGRA64BE_LIBAV, - BGRA64LE_LIBAV, + RGBA64BE, + RGBA64LE, + BGRA64BE, + BGRA64LE, YVYU422, @@ -164,9 +162,6 @@ pub enum Pixel { YA16BE, YA16LE, - GBRAP_LIBAV, - GBRAP16BE_LIBAV, - GBRAP16LE_LIBAV, QSV, MMAL, @@ -292,6 +287,20 @@ pub enum Pixel { XYZ12, NV20, AYUV64, + + P010LE, + P010BE, + GBRAP12BE, + GBRAP12LE, + GBRAP10LE, + GBRAP10BE, + MEDIACODEC, + GRAY12BE, + GRAY12LE, + GRAY10BE, + GRAY10LE, + P016LE, + P016BE, } #[derive(Clone, Copy, PartialEq, Eq)] @@ -418,9 +427,6 @@ impl From for Pixel { #[cfg(feature = "ff_api_vaapi")] AV_PIX_FMT_VAAPI_VLD => Pixel::VAAPI_VLD, - #[cfg(not(feature = "ff_api_vaapi"))] - AV_PIX_FMT_VAAPI => Pixel::VAAPI, - AV_PIX_FMT_YUV420P16LE => Pixel::YUV420P16LE, AV_PIX_FMT_YUV420P16BE => Pixel::YUV420P16BE, AV_PIX_FMT_YUV422P16LE => Pixel::YUV422P16LE, @@ -462,9 +468,6 @@ impl From for Pixel { AV_PIX_FMT_GBRP16BE => Pixel::GBRP16BE, AV_PIX_FMT_GBRP16LE => Pixel::GBRP16LE, - AV_PIX_FMT_YUVA422P_LIBAV => Pixel::YUVA422P_LIBAV, - AV_PIX_FMT_YUVA444P_LIBAV => Pixel::YUVA444P_LIBAV, - AV_PIX_FMT_YUVA420P9BE => Pixel::YUVA420P9BE, AV_PIX_FMT_YUVA420P9LE => Pixel::YUVA420P9LE, AV_PIX_FMT_YUVA422P9BE => Pixel::YUVA422P9BE, @@ -492,10 +495,10 @@ impl From for Pixel { AV_PIX_FMT_NV20LE => Pixel::NV20LE, AV_PIX_FMT_NV20BE => Pixel::NV20BE, - AV_PIX_FMT_RGBA64BE_LIBAV => Pixel::RGBA64BE_LIBAV, - AV_PIX_FMT_RGBA64LE_LIBAV => Pixel::RGBA64LE_LIBAV, - AV_PIX_FMT_BGRA64BE_LIBAV => Pixel::BGRA64BE_LIBAV, - AV_PIX_FMT_BGRA64LE_LIBAV => Pixel::BGRA64LE_LIBAV, + AV_PIX_FMT_RGBA64BE => Pixel::RGBA64BE, + AV_PIX_FMT_RGBA64LE => Pixel::RGBA64LE, + AV_PIX_FMT_BGRA64BE => Pixel::BGRA64BE, + AV_PIX_FMT_BGRA64LE => Pixel::BGRA64LE, AV_PIX_FMT_YVYU422 => Pixel::YVYU422, @@ -504,9 +507,6 @@ impl From for Pixel { AV_PIX_FMT_YA16BE => Pixel::YA16BE, AV_PIX_FMT_YA16LE => Pixel::YA16LE, - AV_PIX_FMT_GBRAP_LIBAV => Pixel::GBRAP_LIBAV, - AV_PIX_FMT_GBRAP16BE_LIBAV => Pixel::GBRAP16BE_LIBAV, - AV_PIX_FMT_GBRAP16LE_LIBAV => Pixel::GBRAP16LE_LIBAV, AV_PIX_FMT_QSV => Pixel::QSV, AV_PIX_FMT_MMAL => Pixel::MMAL, @@ -564,7 +564,21 @@ impl From for Pixel { AV_PIX_FMT_VIDEOTOOLBOX => Pixel::VIDEOTOOLBOX, - AV_PIX_FMT_NB => Pixel::None + AV_PIX_FMT_P010LE => Pixel::P010LE, + AV_PIX_FMT_P010BE => Pixel::P010BE, + AV_PIX_FMT_GBRAP12BE => Pixel::GBRAP12BE, + AV_PIX_FMT_GBRAP12LE => Pixel::GBRAP12LE, + AV_PIX_FMT_GBRAP10LE => Pixel::GBRAP10LE, + AV_PIX_FMT_GBRAP10BE => Pixel::GBRAP10BE, + AV_PIX_FMT_MEDIACODEC => Pixel::MEDIACODEC, + AV_PIX_FMT_GRAY12BE => Pixel::GRAY12BE, + AV_PIX_FMT_GRAY12LE => Pixel::GRAY12LE, + AV_PIX_FMT_GRAY10BE => Pixel::GRAY10BE, + AV_PIX_FMT_GRAY10LE => Pixel::GRAY10LE, + AV_PIX_FMT_P016LE => Pixel::P016LE, + AV_PIX_FMT_P016BE => Pixel::P016BE, + + AV_PIX_FMT_NB => Pixel::None, } } } @@ -688,9 +702,6 @@ impl Into for Pixel { Pixel::GBRP16BE => AV_PIX_FMT_GBRP16BE, Pixel::GBRP16LE => AV_PIX_FMT_GBRP16LE, - Pixel::YUVA422P_LIBAV => AV_PIX_FMT_YUVA422P_LIBAV, - Pixel::YUVA444P_LIBAV => AV_PIX_FMT_YUVA444P_LIBAV, - Pixel::YUVA420P9BE => AV_PIX_FMT_YUVA420P9BE, Pixel::YUVA420P9LE => AV_PIX_FMT_YUVA420P9LE, Pixel::YUVA422P9BE => AV_PIX_FMT_YUVA422P9BE, @@ -718,10 +729,10 @@ impl Into for Pixel { Pixel::NV20LE => AV_PIX_FMT_NV20LE, Pixel::NV20BE => AV_PIX_FMT_NV20BE, - Pixel::RGBA64BE_LIBAV => AV_PIX_FMT_RGBA64BE_LIBAV, - Pixel::RGBA64LE_LIBAV => AV_PIX_FMT_RGBA64LE_LIBAV, - Pixel::BGRA64BE_LIBAV => AV_PIX_FMT_BGRA64BE_LIBAV, - Pixel::BGRA64LE_LIBAV => AV_PIX_FMT_BGRA64LE_LIBAV, + Pixel::RGBA64BE => AV_PIX_FMT_RGBA64BE, + Pixel::RGBA64LE => AV_PIX_FMT_RGBA64LE, + Pixel::BGRA64BE => AV_PIX_FMT_BGRA64BE, + Pixel::BGRA64LE => AV_PIX_FMT_BGRA64LE, Pixel::YVYU422 => AV_PIX_FMT_YVYU422, @@ -730,9 +741,6 @@ impl Into for Pixel { Pixel::YA16BE => AV_PIX_FMT_YA16BE, Pixel::YA16LE => AV_PIX_FMT_YA16LE, - Pixel::GBRAP_LIBAV => AV_PIX_FMT_GBRAP_LIBAV, - Pixel::GBRAP16BE_LIBAV => AV_PIX_FMT_GBRAP16BE_LIBAV, - Pixel::GBRAP16LE_LIBAV => AV_PIX_FMT_GBRAP16LE_LIBAV, Pixel::QSV => AV_PIX_FMT_QSV, Pixel::MMAL => AV_PIX_FMT_MMAL, @@ -791,7 +799,6 @@ impl Into for Pixel { Pixel::VIDEOTOOLBOX => AV_PIX_FMT_VIDEOTOOLBOX, // --- defaults - #[cfg(feature = "ff_api_xvmc")] Pixel::XVMC => AV_PIX_FMT_XVMC, Pixel::Y400A => AV_PIX_FMT_Y400A, Pixel::GRAY8A => AV_PIX_FMT_GRAY8A, @@ -858,6 +865,20 @@ impl Into for Pixel { Pixel::XYZ12 => AV_PIX_FMT_XYZ12, Pixel::NV20 => AV_PIX_FMT_NV20, Pixel::AYUV64 => AV_PIX_FMT_AYUV64, + + Pixel::P010LE => AV_PIX_FMT_P010LE, + Pixel::P010BE => AV_PIX_FMT_P010BE, + Pixel::GBRAP12BE => AV_PIX_FMT_GBRAP12BE, + Pixel::GBRAP12LE => AV_PIX_FMT_GBRAP12LE, + Pixel::GBRAP10LE => AV_PIX_FMT_GBRAP10LE, + Pixel::GBRAP10BE => AV_PIX_FMT_GBRAP10BE, + Pixel::MEDIACODEC => AV_PIX_FMT_MEDIACODEC, + Pixel::GRAY12BE => AV_PIX_FMT_GRAY12BE, + Pixel::GRAY12LE => AV_PIX_FMT_GRAY12LE, + Pixel::GRAY10BE => AV_PIX_FMT_GRAY10BE, + Pixel::GRAY10LE => AV_PIX_FMT_GRAY10LE, + Pixel::P016LE => AV_PIX_FMT_P016LE, + Pixel::P016BE => AV_PIX_FMT_P016BE, } } } diff --git a/src/util/format/sample.rs b/src/util/format/sample.rs index 8817adb..e5e1378 100644 --- a/src/util/format/sample.rs +++ b/src/util/format/sample.rs @@ -7,6 +7,7 @@ use std::mem; use libc::{c_int, uint8_t}; use ffi::*; +use ffi::AVSampleFormat::*; #[derive(Eq, PartialEq, Copy, Clone, Debug)] pub enum Sample { @@ -15,6 +16,7 @@ pub enum Sample { U8(Type), I16(Type), I32(Type), + I64(Type), F32(Type), F64(Type), } @@ -81,12 +83,14 @@ impl From for Sample { AV_SAMPLE_FMT_U8 => Sample::U8(Type::Packed), AV_SAMPLE_FMT_S16 => Sample::I16(Type::Packed), AV_SAMPLE_FMT_S32 => Sample::I32(Type::Packed), + AV_SAMPLE_FMT_S64 => Sample::I64(Type::Packed), AV_SAMPLE_FMT_FLT => Sample::F32(Type::Packed), AV_SAMPLE_FMT_DBL => Sample::F64(Type::Packed), AV_SAMPLE_FMT_U8P => Sample::U8(Type::Planar), AV_SAMPLE_FMT_S16P => Sample::I16(Type::Planar), AV_SAMPLE_FMT_S32P => Sample::I32(Type::Planar), + AV_SAMPLE_FMT_S64P => Sample::I64(Type::Planar), AV_SAMPLE_FMT_FLTP => Sample::F32(Type::Planar), AV_SAMPLE_FMT_DBLP => Sample::F64(Type::Planar), @@ -115,12 +119,14 @@ impl Into for Sample { Sample::U8(Type::Packed) => AV_SAMPLE_FMT_U8, Sample::I16(Type::Packed) => AV_SAMPLE_FMT_S16, Sample::I32(Type::Packed) => AV_SAMPLE_FMT_S32, + Sample::I64(Type::Packed) => AV_SAMPLE_FMT_S64, Sample::F32(Type::Packed) => AV_SAMPLE_FMT_FLT, Sample::F64(Type::Packed) => AV_SAMPLE_FMT_DBL, Sample::U8(Type::Planar) => AV_SAMPLE_FMT_U8P, Sample::I16(Type::Planar) => AV_SAMPLE_FMT_S16P, Sample::I32(Type::Planar) => AV_SAMPLE_FMT_S32P, + Sample::I64(Type::Planar) => AV_SAMPLE_FMT_S64P, Sample::F32(Type::Planar) => AV_SAMPLE_FMT_FLTP, Sample::F64(Type::Planar) => AV_SAMPLE_FMT_DBLP, } diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index 50af82b..4453e7b 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -4,6 +4,7 @@ use std::ffi::CStr; use std::str::from_utf8_unchecked; use ffi::*; +use ffi::AVFrameSideDataType::*; use super::Frame; use ::DictionaryRef; @@ -22,6 +23,7 @@ pub enum Type { AudioServiceType, MasteringDisplayMetadata, GOPTimecode, + Spherical, } impl Type { @@ -50,6 +52,7 @@ impl From for Type { AV_FRAME_DATA_AUDIO_SERVICE_TYPE => Type::AudioServiceType, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA => Type::MasteringDisplayMetadata, AV_FRAME_DATA_GOP_TIMECODE => Type::GOPTimecode, + AV_FRAME_DATA_SPHERICAL => Type::Spherical, } } } @@ -71,6 +74,7 @@ impl Into for Type { Type::AudioServiceType => AV_FRAME_DATA_AUDIO_SERVICE_TYPE, Type::MasteringDisplayMetadata => AV_FRAME_DATA_MASTERING_DISPLAY_METADATA, Type::GOPTimecode => AV_FRAME_DATA_GOP_TIMECODE, + Type::Spherical => AV_FRAME_DATA_SPHERICAL, } } } @@ -102,7 +106,7 @@ impl<'a> SideData<'a> { #[inline] pub fn kind(&self) -> Type { unsafe { - Type::from((*self.as_ptr()).kind) + Type::from((*self.as_ptr()).type_) } } diff --git a/src/util/mathematics/rounding.rs b/src/util/mathematics/rounding.rs index 9e13a60..1c34808 100644 --- a/src/util/mathematics/rounding.rs +++ b/src/util/mathematics/rounding.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVRounding::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Rounding { diff --git a/src/util/media.rs b/src/util/media.rs index ea26c88..b574248 100644 --- a/src/util/media.rs +++ b/src/util/media.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVMediaType::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Type { diff --git a/src/util/option/mod.rs b/src/util/option/mod.rs index 266017c..6f76fd9 100644 --- a/src/util/option/mod.rs +++ b/src/util/option/mod.rs @@ -2,6 +2,7 @@ mod traits; pub use self::traits::{Target, Settable, Gettable, Iterable}; use ffi::*; +use ffi::AVOptionType::*; #[derive(PartialEq, Eq, Copy, Clone, Debug)] pub enum Type { @@ -23,6 +24,8 @@ pub enum Type { Duration, Color, ChannelLayout, + c_ulong, + bool, } impl From for Type { @@ -38,6 +41,8 @@ impl From for Type { AV_OPT_TYPE_BINARY => Type::Binary, AV_OPT_TYPE_DICT => Type::Dictionary, AV_OPT_TYPE_CONST => Type::Constant, + AV_OPT_TYPE_UINT64 => Type::c_ulong, + AV_OPT_TYPE_BOOL => Type::bool, AV_OPT_TYPE_IMAGE_SIZE => Type::ImageSize, AV_OPT_TYPE_PIXEL_FMT => Type::PixelFormat, @@ -63,6 +68,8 @@ impl Into for Type { Type::Binary => AV_OPT_TYPE_BINARY, Type::Dictionary => AV_OPT_TYPE_DICT, Type::Constant => AV_OPT_TYPE_CONST, + Type::c_ulong => AV_OPT_TYPE_UINT64, + Type::bool => AV_OPT_TYPE_BOOL, Type::ImageSize => AV_OPT_TYPE_IMAGE_SIZE, Type::PixelFormat => AV_OPT_TYPE_PIXEL_FMT, diff --git a/src/util/picture.rs b/src/util/picture.rs index ddd8d02..5c60e6f 100644 --- a/src/util/picture.rs +++ b/src/util/picture.rs @@ -1,4 +1,5 @@ use ffi::*; +use ffi::AVPictureType::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Type {