diff --git a/src/codec/audio_service.rs b/src/codec/audio_service.rs new file mode 100644 index 0000000..faf7217 --- /dev/null +++ b/src/codec/audio_service.rs @@ -0,0 +1,47 @@ +use ffi::*; + +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +pub enum AudioService { + Main, + Effects, + VisuallyImpaired, + HearingImpaired, + Dialogue, + Commentary, + Emergency, + VoiceOver, + Karaoke, +} + +impl From for AudioService { + fn from(value: AVAudioServiceType) -> Self { + match value { + AV_AUDIO_SERVICE_TYPE_MAIN => AudioService::Main, + AV_AUDIO_SERVICE_TYPE_EFFECTS => AudioService::Effects, + AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED => AudioService::VisuallyImpaired, + AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED => AudioService::HearingImpaired, + AV_AUDIO_SERVICE_TYPE_DIALOGUE => AudioService::Dialogue, + AV_AUDIO_SERVICE_TYPE_COMMENTARY => AudioService::Commentary, + AV_AUDIO_SERVICE_TYPE_EMERGENCY => AudioService::Emergency, + AV_AUDIO_SERVICE_TYPE_VOICE_OVER => AudioService::VoiceOver, + AV_AUDIO_SERVICE_TYPE_KARAOKE => AudioService::Karaoke, + AV_AUDIO_SERVICE_TYPE_NB => AudioService::Main + } + } +} + +impl Into for AudioService { + fn into(self) -> AVAudioServiceType { + match self { + AudioService::Main => AV_AUDIO_SERVICE_TYPE_MAIN, + AudioService::Effects => AV_AUDIO_SERVICE_TYPE_EFFECTS, + AudioService::VisuallyImpaired => AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED, + AudioService::HearingImpaired => AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED, + AudioService::Dialogue => AV_AUDIO_SERVICE_TYPE_DIALOGUE, + AudioService::Commentary => AV_AUDIO_SERVICE_TYPE_COMMENTARY, + AudioService::Emergency => AV_AUDIO_SERVICE_TYPE_EMERGENCY, + AudioService::VoiceOver => AV_AUDIO_SERVICE_TYPE_VOICE_OVER, + AudioService::Karaoke => AV_AUDIO_SERVICE_TYPE_KARAOKE + } + } +} diff --git a/src/codec/mod.rs b/src/codec/mod.rs index 781a01e..c49cfbf 100644 --- a/src/codec/mod.rs +++ b/src/codec/mod.rs @@ -14,6 +14,8 @@ pub use self::context::Context; pub mod codec; +pub mod audio_service; + pub mod encoder; pub mod decoder; diff --git a/src/lib.rs b/src/lib.rs index 03f02cb..0190913 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -34,6 +34,8 @@ pub use codec::picture::Picture; pub use codec::discard::Discard; #[cfg(feature = "codec")] pub use codec::codec::Codec; +#[cfg(feature = "codec")] +pub use codec::audio_service::AudioService; #[cfg(feature = "device")] pub mod device;