pub mod audio;
pub mod meta;
pub mod video;
#[derive(Clone, Debug, PartialEq)]
pub struct FlvTag {
pub header: FlvTagHeader,
pub data: FlvTagData,
}
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum FlvTagType {
Audio,
Video,
Metadata,
Unknown(u8),
}
impl From<u8> for FlvTagType {
fn from(value: u8) -> Self {
match value {
8 => FlvTagType::Audio,
9 => FlvTagType::Video,
18 => FlvTagType::Metadata,
t => FlvTagType::Unknown(t),
}
}
}
impl From<FlvTagType> for u8 {
fn from(value: FlvTagType) -> Self {
match value {
FlvTagType::Audio => 8,
FlvTagType::Video => 9,
FlvTagType::Metadata => 18,
FlvTagType::Unknown(v) => v,
}
}
}
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub struct FlvTagHeader {
pub tag_type: FlvTagType,
pub data_size: u32,
pub timestamp: u32,
pub stream_id: u32,
}
#[derive(Clone, Debug, PartialEq)]
pub enum FlvTagData {
Audio(audio::AudioTag),
Video(video::VideoTag),
Meta(meta::MetaTag),
Unknown,
}