ffmpeg_the_third/codec/
audio_service.rs1use 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}