Add serialize support for enums
This commit is contained in:
parent
42448a8d45
commit
fe89e158c0
@ -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.
|
||||
|
@ -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. <meh@schizofreni.co>", "Zhiming Wang <i@zhimingwang.org>"]
|
||||
@ -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"]
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user