1use super::*;
2
3use derive_more::{Display, From};
4use std::str::FromStr;
5
6#[derive(Debug, Clone, PartialEq, Eq, Display, From)]
7pub enum AudioCodec {
8 AAC(AAC),
9
10 #[display("opus")]
11 Opus,
12
13 #[display("{_0}")]
14 Unknown(String),
15}
16
17impl FromStr for AudioCodec {
18 type Err = Error;
19
20 fn from_str(s: &str) -> Result<Self, Self::Err> {
21 if s.starts_with("mp4a.40.") {
22 return AAC::from_str(s).map(Into::into);
23 } else if s == "opus" {
24 return Ok(Self::Opus);
25 }
26
27 Ok(Self::Unknown(s.to_string()))
28 }
29}