From fe89e158c032b677ec83c1fcdfac9819c53e3918 Mon Sep 17 00:00:00 2001 From: Josh Holmer Date: Tue, 24 Jan 2023 02:38:11 -0500 Subject: [PATCH] Add serialize support for enums --- CHANGELOG.md | 4 ++++ Cargo.toml | 9 ++++++++- src/codec/audio_service.rs | 3 +++ src/codec/compliance.rs | 3 +++ src/codec/discard.rs | 3 +++ src/codec/encoder/comparison.rs | 3 +++ src/codec/encoder/decision.rs | 3 +++ src/codec/encoder/motion_estimation.rs | 3 +++ src/codec/encoder/prediction.rs | 3 +++ src/codec/field_order.rs | 3 +++ src/codec/id.rs | 3 +++ src/codec/packet/side_data.rs | 3 +++ src/codec/profile.rs | 12 ++++++++++++ src/codec/subtitle/mod.rs | 3 +++ src/codec/threading.rs | 3 +++ src/format/context/destructor.rs | 3 +++ src/lib.rs | 2 ++ src/software/resampling/dither.rs | 3 +++ src/software/resampling/engine.rs | 3 +++ src/software/resampling/filter.rs | 3 +++ src/software/scaling/color_space.rs | 3 +++ src/util/chroma/location.rs | 3 +++ src/util/color/primaries.rs | 3 +++ src/util/color/range.rs | 3 +++ src/util/color/space.rs | 3 +++ src/util/color/transfer_characteristic.rs | 3 +++ src/util/error.rs | 3 +++ src/util/format/pixel.rs | 3 +++ src/util/format/sample.rs | 4 ++++ src/util/frame/side_data.rs | 3 +++ src/util/log/level.rs | 3 +++ src/util/mathematics/rounding.rs | 3 +++ src/util/media.rs | 3 +++ src/util/option/mod.rs | 3 +++ src/util/picture.rs | 3 +++ 35 files changed, 120 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a22deba..d82485e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## Version 1.1.0 + +- Add `serialize` feature, off by default, which derives `serde::{Serialize, Deserialize}` for as many types as possible + ## Version 1.0.1 - Remove the "ffmpeg4.x" features that were supposed to have been removed when ffmpeg5 was released. diff --git a/Cargo.toml b/Cargo.toml index d1f0ae6..6096582 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ffmpeg-the-third" -version = "1.0.1+ffmpeg-5.1.2" +version = "1.1.0+ffmpeg-5.1.2" build = "build.rs" authors = ["meh. ", "Zhiming Wang "] @@ -31,6 +31,8 @@ build = ["static", "ffmpeg-sys-the-third/build"] # mark enums in generated bindings as #[non_exhaustive] non-exhaustive-enums = ["ffmpeg-sys-the-third/non-exhaustive-enums"] +serialize = ["serde"] + # licensing build-license-gpl = ["ffmpeg-sys-the-third/build-license-gpl"] build-license-nonfree = ["ffmpeg-sys-the-third/build-license-nonfree"] @@ -117,3 +119,8 @@ optional = true [dependencies.ffmpeg-sys-the-third] version = "1.0.0" default-features = false + +[dependencies.serde] +version = "1.0.152" +optional = true +features = ["derive"] diff --git a/src/codec/audio_service.rs b/src/codec/audio_service.rs index 91837a3..bad1b4a 100644 --- a/src/codec/audio_service.rs +++ b/src/codec/audio_service.rs @@ -1,7 +1,10 @@ use ffi::AVAudioServiceType::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum AudioService { Main, Effects, diff --git a/src/codec/compliance.rs b/src/codec/compliance.rs index a305ffe..9638168 100644 --- a/src/codec/compliance.rs +++ b/src/codec/compliance.rs @@ -1,7 +1,10 @@ use ffi::*; use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Compliance { VeryStrict, Strict, diff --git a/src/codec/discard.rs b/src/codec/discard.rs index b540ef8..a30cda9 100644 --- a/src/codec/discard.rs +++ b/src/codec/discard.rs @@ -1,7 +1,10 @@ use ffi::AVDiscard::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Discard { None, Default, diff --git a/src/codec/encoder/comparison.rs b/src/codec/encoder/comparison.rs index 1bd573b..aa61fc1 100644 --- a/src/codec/encoder/comparison.rs +++ b/src/codec/encoder/comparison.rs @@ -1,7 +1,10 @@ use ffi::*; use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Comparison { SAD, SSE, diff --git a/src/codec/encoder/decision.rs b/src/codec/encoder/decision.rs index 93c5aba..688b672 100644 --- a/src/codec/encoder/decision.rs +++ b/src/codec/encoder/decision.rs @@ -1,7 +1,10 @@ use ffi::*; use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Decision { Simple, Bits, diff --git a/src/codec/encoder/motion_estimation.rs b/src/codec/encoder/motion_estimation.rs index 0202d35..9f0cc2f 100644 --- a/src/codec/encoder/motion_estimation.rs +++ b/src/codec/encoder/motion_estimation.rs @@ -1,6 +1,9 @@ use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum MotionEstimation { Zero, Full, diff --git a/src/codec/encoder/prediction.rs b/src/codec/encoder/prediction.rs index ba532f3..df2eb3a 100644 --- a/src/codec/encoder/prediction.rs +++ b/src/codec/encoder/prediction.rs @@ -1,7 +1,10 @@ use ffi::*; use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Prediction { Left, Plane, diff --git a/src/codec/field_order.rs b/src/codec/field_order.rs index 4fba042..6717cf1 100644 --- a/src/codec/field_order.rs +++ b/src/codec/field_order.rs @@ -1,7 +1,10 @@ use ffi::AVFieldOrder::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum FieldOrder { Unknown, Progressive, diff --git a/src/codec/id.rs b/src/codec/id.rs index 8f7cd0a..4aefba6 100644 --- a/src/codec/id.rs +++ b/src/codec/id.rs @@ -3,10 +3,13 @@ use std::str::from_utf8_unchecked; use ffi::AVCodecID::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; use util::media; #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Id { None, diff --git a/src/codec/packet/side_data.rs b/src/codec/packet/side_data.rs index 3811cc8..4ebf096 100644 --- a/src/codec/packet/side_data.rs +++ b/src/codec/packet/side_data.rs @@ -4,8 +4,11 @@ use std::slice; use super::Packet; use ffi::AVPacketSideDataType::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Type { Palette, NewExtraData, diff --git a/src/codec/profile.rs b/src/codec/profile.rs index f9dbd72..71d025f 100644 --- a/src/codec/profile.rs +++ b/src/codec/profile.rs @@ -1,9 +1,12 @@ use super::Id; use ffi::*; use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Profile { Unknown, Reserved, @@ -21,6 +24,7 @@ pub enum Profile { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum AAC { Main, Low, @@ -37,6 +41,7 @@ pub enum AAC { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum DTS { Default, ES, @@ -48,6 +53,7 @@ pub enum DTS { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum MPEG2 { _422, High, @@ -59,6 +65,7 @@ pub enum MPEG2 { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum H264 { Constrained, Intra, @@ -79,6 +86,7 @@ pub enum H264 { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum VC1 { Simple, Main, @@ -88,6 +96,7 @@ pub enum VC1 { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum MPEG4 { Simple, SimpleScalable, @@ -109,6 +118,7 @@ pub enum MPEG4 { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum JPEG2000 { CStreamRestriction0, CStreamRestriction1, @@ -119,6 +129,7 @@ pub enum JPEG2000 { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum HEVC { Main, Main10, @@ -128,6 +139,7 @@ pub enum HEVC { #[allow(non_camel_case_types)] #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum VP9 { _0, _1, diff --git a/src/codec/subtitle/mod.rs b/src/codec/subtitle/mod.rs index 607d858..d42552a 100644 --- a/src/codec/subtitle/mod.rs +++ b/src/codec/subtitle/mod.rs @@ -13,8 +13,11 @@ use std::mem; use ffi::AVSubtitleType::*; use ffi::*; use libc::{c_uint, size_t}; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Type { None, Bitmap, diff --git a/src/codec/threading.rs b/src/codec/threading.rs index 1cc95ee..2a9bc12 100644 --- a/src/codec/threading.rs +++ b/src/codec/threading.rs @@ -1,5 +1,7 @@ use ffi::*; use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub struct Config { @@ -42,6 +44,7 @@ impl Default for Config { } #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Type { None, Frame, diff --git a/src/format/context/destructor.rs b/src/format/context/destructor.rs index fa36d42..f2861b3 100644 --- a/src/format/context/destructor.rs +++ b/src/format/context/destructor.rs @@ -1,6 +1,9 @@ use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Mode { Input, Output, diff --git a/src/lib.rs b/src/lib.rs index ac067b9..9117fcc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,8 @@ pub extern crate ffmpeg_sys_the_third as sys; #[cfg(feature = "image")] extern crate image; extern crate libc; +#[cfg(feature = "serialize")] +extern crate serde; pub use sys as ffi; diff --git a/src/software/resampling/dither.rs b/src/software/resampling/dither.rs index 4dd9586..6d4192e 100644 --- a/src/software/resampling/dither.rs +++ b/src/software/resampling/dither.rs @@ -1,7 +1,10 @@ use ffi::SwrDitherType::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Dither { None, Rectangular, diff --git a/src/software/resampling/engine.rs b/src/software/resampling/engine.rs index b14a8a9..034a6bf 100644 --- a/src/software/resampling/engine.rs +++ b/src/software/resampling/engine.rs @@ -1,7 +1,10 @@ use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; use sys::SwrEngine::*; #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Engine { Software, SoundExchange, diff --git a/src/software/resampling/filter.rs b/src/software/resampling/filter.rs index d85c4e2..0101a7e 100644 --- a/src/software/resampling/filter.rs +++ b/src/software/resampling/filter.rs @@ -1,7 +1,10 @@ use ffi::SwrFilterType::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Filter { Cubic, BlackmanNuttall, diff --git a/src/software/scaling/color_space.rs b/src/software/scaling/color_space.rs index 0c74148..be98d43 100644 --- a/src/software/scaling/color_space.rs +++ b/src/software/scaling/color_space.rs @@ -1,7 +1,10 @@ use ffi::*; use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum ColorSpace { Default, diff --git a/src/util/chroma/location.rs b/src/util/chroma/location.rs index 2514792..caf1080 100644 --- a/src/util/chroma/location.rs +++ b/src/util/chroma/location.rs @@ -1,7 +1,10 @@ use ffi::AVChromaLocation::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Location { Unspecified, Left, diff --git a/src/util/color/primaries.rs b/src/util/color/primaries.rs index 323a040..5a2d685 100644 --- a/src/util/color/primaries.rs +++ b/src/util/color/primaries.rs @@ -3,8 +3,11 @@ use std::str::from_utf8_unchecked; use ffi::AVColorPrimaries::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Primaries { Reserved0, BT709, diff --git a/src/util/color/range.rs b/src/util/color/range.rs index 476886a..1625b04 100644 --- a/src/util/color/range.rs +++ b/src/util/color/range.rs @@ -3,8 +3,11 @@ use std::str::from_utf8_unchecked; use ffi::AVColorRange::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Range { Unspecified, MPEG, diff --git a/src/util/color/space.rs b/src/util/color/space.rs index c38e8e7..b1850e2 100644 --- a/src/util/color/space.rs +++ b/src/util/color/space.rs @@ -3,8 +3,11 @@ use std::str::from_utf8_unchecked; use ffi::AVColorSpace::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Space { RGB, BT709, diff --git a/src/util/color/transfer_characteristic.rs b/src/util/color/transfer_characteristic.rs index 965e628..25ffb6e 100644 --- a/src/util/color/transfer_characteristic.rs +++ b/src/util/color/transfer_characteristic.rs @@ -3,8 +3,11 @@ use std::str::from_utf8_unchecked; use ffi::AVColorTransferCharacteristic::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum TransferCharacteristic { Reserved0, BT709, diff --git a/src/util/error.rs b/src/util/error.rs index 1787c27..2879cf5 100644 --- a/src/util/error.rs +++ b/src/util/error.rs @@ -6,6 +6,8 @@ use std::str::from_utf8_unchecked; use ffi::*; use libc::{c_char, c_int}; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; // Export POSIX error codes so that users can do something like // @@ -25,6 +27,7 @@ pub use libc::{ }; #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Error { Bug, Bug2, diff --git a/src/util/format/pixel.rs b/src/util/format/pixel.rs index 68f5408..d9d1cf0 100644 --- a/src/util/format/pixel.rs +++ b/src/util/format/pixel.rs @@ -5,8 +5,11 @@ use std::str::{from_utf8_unchecked, FromStr}; use ffi::AVPixelFormat::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Pixel { None, diff --git a/src/util/format/sample.rs b/src/util/format/sample.rs index 5f8f4f5..7e90f0a 100644 --- a/src/util/format/sample.rs +++ b/src/util/format/sample.rs @@ -7,8 +7,11 @@ use std::str::from_utf8_unchecked; use ffi::AVSampleFormat::*; use ffi::*; use libc::{c_int, c_void}; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Sample { None, @@ -21,6 +24,7 @@ pub enum Sample { } #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Type { Packed, Planar, diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index 27b89c2..c2abbb4 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -6,9 +6,12 @@ use std::str::from_utf8_unchecked; use super::Frame; use ffi::AVFrameSideDataType::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; use DictionaryRef; #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Type { PanScan, A53CC, diff --git a/src/util/log/level.rs b/src/util/log/level.rs index 2c18492..1e23823 100644 --- a/src/util/log/level.rs +++ b/src/util/log/level.rs @@ -2,8 +2,11 @@ use std::convert::TryFrom; use ffi::*; use libc::c_int; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Level { Quiet, Panic, diff --git a/src/util/mathematics/rounding.rs b/src/util/mathematics/rounding.rs index abe2800..d079556 100644 --- a/src/util/mathematics/rounding.rs +++ b/src/util/mathematics/rounding.rs @@ -1,7 +1,10 @@ use ffi::AVRounding::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Rounding { Zero, Infinity, diff --git a/src/util/media.rs b/src/util/media.rs index ff9ca29..e46c3dc 100644 --- a/src/util/media.rs +++ b/src/util/media.rs @@ -1,7 +1,10 @@ use ffi::AVMediaType::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Type { Unknown, Video, diff --git a/src/util/option/mod.rs b/src/util/option/mod.rs index a858630..0d559b6 100644 --- a/src/util/option/mod.rs +++ b/src/util/option/mod.rs @@ -3,8 +3,11 @@ pub use self::traits::{Gettable, Iterable, Settable, Target}; use ffi::AVOptionType::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(PartialEq, Eq, Copy, Clone, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Type { Flags, Int, diff --git a/src/util/picture.rs b/src/util/picture.rs index de2e533..d3a9b8a 100644 --- a/src/util/picture.rs +++ b/src/util/picture.rs @@ -1,7 +1,10 @@ use ffi::AVPictureType::*; use ffi::*; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; #[derive(Eq, PartialEq, Clone, Copy, Debug)] +#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub enum Type { None, I,