mod chunk_types {
pub const AUDIO_DESCRIPTION :u32 = 0x64_65_73_63; pub const AUDIO_DATA :u32 = 0x64_61_74_61; pub const PACKET_TABLE :u32 = 0x70_61_6b_74; pub const CHANNEL_LAYOUT :u32 = 0x63_68_61_6e; pub const MAGIC_COOKIE :u32 = 0x6b_75_6b_69; pub const STRINGS :u32 = 0x73_74_42_67; pub const MARKER :u32 = 0x6d_61_72_6b; pub const REGION :u32 = 0x72_65_67_6e; pub const INSTRUMENT :u32 = 0x69_6e_73_74; pub const MIDI :u32 = 0x6d_69_64_69; pub const OVERVIEW :u32 = 0x6f_76_76_77; pub const PEAK :u32 = 0x70_65_61_6b; pub const EDIT_COMMENTS :u32 = 0x65_64_63_74; pub const INFO :u32 = 0x69_6e_66_6f; pub const UNIQUE_MATERIAL_IDENTIFIER :u32 = 0x75_6d_69_64; pub const USER_DEFINED :u32 = 0x75_75_69_64; pub const FREE :u32 = 0x66_72_65_65; }
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ChunkType {
AudioDescription,
AudioData,
PacketTable,
ChannelLayout,
MagicCookie,
Strings,
Marker,
Region,
Instrument,
Midi,
Overview,
Peak,
EditComments,
Info,
UniqueMaterialIdentifier,
UserDefined,
Free,
Other(u32),
}
impl From<u32> for ChunkType {
fn from(v :u32) -> Self {
use self::chunk_types::*;
use self::ChunkType::*;
match v {
AUDIO_DESCRIPTION => AudioDescription,
AUDIO_DATA => AudioData,
PACKET_TABLE => PacketTable,
CHANNEL_LAYOUT => ChannelLayout,
MAGIC_COOKIE => MagicCookie,
STRINGS => Strings,
MARKER => Marker,
REGION => Region,
INSTRUMENT => Instrument,
MIDI => Midi,
OVERVIEW => Overview,
PEAK => Peak,
EDIT_COMMENTS => EditComments,
INFO => Info,
UNIQUE_MATERIAL_IDENTIFIER => UniqueMaterialIdentifier,
USER_DEFINED => UserDefined,
FREE => Free,
_ => Other(v),
}
}
}
mod format_types {
pub const LINEAR_PCM :u32 = 0x6c_70_63_6d; pub const APPLE_IMA4 :u32 = 0x69_6d_61_34; pub const MPEG4_AAC :u32 = 0x61_61_63_20; pub const MACE3 :u32 = 0x4d_41_43_33; pub const MACE6 :u32 = 0x4d_41_43_36; pub const U_LAW :u32 = 0x75_6c_61_77; pub const A_LAW :u32 = 0x61_6c_61_77; pub const MPEG_LAYER_1 :u32 = 0x2e_6d_70_31; pub const MPEG_LAYER_2 :u32 = 0x2e_6d_70_32; pub const MPEG_LAYER_3 :u32 = 0x2e_6d_70_33; pub const AAPL_LOSSLESS :u32 = 0x61_6c_61_63; }
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum FormatType {
LinearPcm,
AppleIma4,
Mpeg4Aac,
Mace3,
Mace6,
Ulaw,
Alaw,
MpegLayer1,
MpegLayer2,
MpegLayer3,
AppleLossless,
Other(u32),
}
impl From<u32> for FormatType {
fn from(v :u32) -> Self {
use self::format_types::*;
use self::FormatType::*;
match v {
LINEAR_PCM => LinearPcm,
APPLE_IMA4 => AppleIma4,
MPEG4_AAC => Mpeg4Aac,
MACE3 => Mace3,
MACE6 => Mace6,
U_LAW => Ulaw,
A_LAW => Alaw,
MPEG_LAYER_1 => MpegLayer1,
MPEG_LAYER_2 => MpegLayer2,
MPEG_LAYER_3 => MpegLayer3,
AAPL_LOSSLESS => AppleLossless,
_ => Other(v),
}
}
}