scuffle_flv/audio/body/legacy/
mod.rs1use std::io;
6
7use byteorder::ReadBytesExt;
8use bytes::Bytes;
9use scuffle_bytes_util::BytesCursorExt;
10
11use crate::audio::header::legacy::{LegacyAudioTagHeader, SoundFormat};
12
13pub mod aac;
14
15#[derive(Debug, Clone, PartialEq)]
20pub enum LegacyAudioTagBody {
21 Aac(aac::AacAudioData),
23 Other {
25 sound_data: Bytes,
27 },
28}
29
30impl LegacyAudioTagBody {
31 pub fn demux(header: &LegacyAudioTagHeader, reader: &mut io::Cursor<Bytes>) -> io::Result<Self> {
35 match header.sound_format {
36 SoundFormat::Aac => {
37 let aac_packet_type = aac::AacPacketType::from(reader.read_u8()?);
38 Ok(Self::Aac(aac::AacAudioData::new(aac_packet_type, reader.extract_remaining())))
39 }
40 _ => Ok(Self::Other {
41 sound_data: reader.extract_remaining(),
42 }),
43 }
44 }
45}