Skip to main content

ffmpeg_the_third/codec/
audio_service.rs

1use crate::ffi::*;
2#[cfg(feature = "serialize")]
3use serde::{Deserialize, Serialize};
4
5#[derive(Eq, PartialEq, Clone, Copy, Debug)]
6#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
7pub enum AudioService {
8    Main,
9    Effects,
10    VisuallyImpaired,
11    HearingImpaired,
12    Dialogue,
13    Commentary,
14    Emergency,
15    VoiceOver,
16    Karaoke,
17}
18
19impl From<AVAudioServiceType> for AudioService {
20    fn from(value: AVAudioServiceType) -> Self {
21        use AVAudioServiceType as AV;
22
23        match value {
24            AV::MAIN => AudioService::Main,
25            AV::EFFECTS => AudioService::Effects,
26            AV::VISUALLY_IMPAIRED => AudioService::VisuallyImpaired,
27            AV::HEARING_IMPAIRED => AudioService::HearingImpaired,
28            AV::DIALOGUE => AudioService::Dialogue,
29            AV::COMMENTARY => AudioService::Commentary,
30            AV::EMERGENCY => AudioService::Emergency,
31            AV::VOICE_OVER => AudioService::VoiceOver,
32            AV::KARAOKE => AudioService::Karaoke,
33            AV::NB => AudioService::Main,
34
35            _ => unimplemented!(),
36        }
37    }
38}
39
40impl From<AudioService> for AVAudioServiceType {
41    fn from(value: AudioService) -> AVAudioServiceType {
42        use AVAudioServiceType as AV;
43
44        match value {
45            AudioService::Main => AV::MAIN,
46            AudioService::Effects => AV::EFFECTS,
47            AudioService::VisuallyImpaired => AV::VISUALLY_IMPAIRED,
48            AudioService::HearingImpaired => AV::HEARING_IMPAIRED,
49            AudioService::Dialogue => AV::DIALOGUE,
50            AudioService::Commentary => AV::COMMENTARY,
51            AudioService::Emergency => AV::EMERGENCY,
52            AudioService::VoiceOver => AV::VOICE_OVER,
53            AudioService::Karaoke => AV::KARAOKE,
54        }
55    }
56}