1use bytes::Bytes;
2
3pub mod aac;
4pub mod chunk;
5pub mod flac;
6pub mod h264;
7
8pub const PSI_STREAM_MP3: u8 = 0x04; pub const PSI_STREAM_PRIVATE_DATA: u8 = 0x06;
10pub const PSI_STREAM_H264: u8 = 0x1b; pub const PSI_STREAM_AAC: u8 = 0x0f;
12pub const PSI_STREAM_MPEG4_AAC: u8 = 0x1c;
13pub const PSI_STREAM_AUDIO_OPUS: u8 = 0x9c;
14
15#[derive(Debug, Clone, Copy, PartialEq)]
16pub enum AudioType {
17 Unknown,
18 AAC,
19 FLAC,
20 Opus,
21}
22
23#[derive(Debug, Clone)]
24pub struct Fmp4 {
25 pub init: Option<Bytes>,
26 pub key: bool,
27 pub data: Bytes,
28 pub duration: u32,
29}
30
31#[derive(Debug, Clone)]
32pub struct AccessUnit {
33 pub key: bool,
34 pub pts: u64,
35 pub dts: u64,
36 pub data: Bytes,
37 pub stream_type: u8,
38 pub id: u64,
39}
40
41pub fn detect_audio(data: &[u8]) -> AudioType {
42 if flac::is_flac(data) {
43 AudioType::FLAC
44 } else if aac::is_aac(data) {
45 AudioType::AAC
46 } else {
47 AudioType::Unknown
48 }
49}