diff --git a/src/codec/compliance.rs b/src/codec/compliance.rs new file mode 100644 index 0000000..70ec498 --- /dev/null +++ b/src/codec/compliance.rs @@ -0,0 +1,37 @@ +use libc::c_int; +use ffi::*; + +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +pub enum Compliance { + VeryStrict, + Strict, + Normal, + Unofficial, + Experimental, +} + +impl From for Compliance { + fn from(value: c_int) -> Self { + match value { + FF_COMPLIANCE_VERY_STRICT => Compliance::VeryStrict, + FF_COMPLIANCE_STRICT => Compliance::Strict, + FF_COMPLIANCE_NORMAL => Compliance::Normal, + FF_COMPLIANCE_UNOFFICIAL => Compliance::Unofficial, + FF_COMPLIANCE_EXPERIMENTAL => Compliance::Experimental, + + _ => Compliance::Normal + } + } +} + +impl Into for Compliance { + fn into(self) -> c_int { + match self { + Compliance::VeryStrict => FF_COMPLIANCE_VERY_STRICT, + Compliance::Strict => FF_COMPLIANCE_STRICT, + Compliance::Normal => FF_COMPLIANCE_NORMAL, + Compliance::Unofficial => FF_COMPLIANCE_UNOFFICIAL, + Compliance::Experimental => FF_COMPLIANCE_EXPERIMENTAL + } + } +} diff --git a/src/codec/mod.rs b/src/codec/mod.rs index eb9c1a8..7f51b03 100644 --- a/src/codec/mod.rs +++ b/src/codec/mod.rs @@ -17,6 +17,9 @@ pub mod codec; pub mod field_order; pub mod audio_service; +pub mod compliance; +pub use self::compliance::Compliance; + pub mod encoder; pub mod decoder;