use std::io;
use byteorder::ReadBytesExt;
use bytes::Bytes;
use scuffle_bytes_util::BytesCursorExt;
use crate::audio::header::legacy::{LegacyAudioTagHeader, SoundFormat};
pub mod aac;
#[derive(Debug, Clone, PartialEq)]
pub enum LegacyAudioTagBody {
Aac(aac::AacAudioData),
Other {
sound_data: Bytes,
},
}
impl LegacyAudioTagBody {
pub fn demux(header: &LegacyAudioTagHeader, reader: &mut io::Cursor<Bytes>) -> io::Result<Self> {
match header.sound_format {
SoundFormat::Aac => {
let aac_packet_type = aac::AacPacketType::from(reader.read_u8()?);
Ok(Self::Aac(aac::AacAudioData::new(aac_packet_type, reader.extract_remaining())))
}
_ => Ok(Self::Other {
sound_data: reader.extract_remaining(),
}),
}
}
}