Skip to content

Commit d0466cb

Browse files
authored
feat: add more audio object types (alfg#52)
1 parent 6b36145 commit d0466cb

File tree

1 file changed

+119
-5
lines changed

1 file changed

+119
-5
lines changed

src/types.rs

Lines changed: 119 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -313,10 +313,48 @@ impl fmt::Display for AvcProfile {
313313

314314
#[derive(Debug, PartialEq, Clone, Copy)]
315315
pub enum AudioObjectType {
316-
AacMain = 1,
317-
AacLowComplexity = 2,
318-
AacScalableSampleRate = 3,
319-
AacLongTermPrediction = 4,
316+
AacMain = 1, // AAC Main Profile
317+
AacLowComplexity = 2, // AAC Low Complexity
318+
AacScalableSampleRate = 3, // AAC Scalable Sample Rate
319+
AacLongTermPrediction = 4, // AAC Long Term Predictor
320+
SpectralBandReplication = 5, // Spectral band Replication
321+
AACScalable = 6, // AAC Scalable
322+
TwinVQ = 7, // Twin VQ
323+
CodeExcitedLinearPrediction = 8, // CELP
324+
HarmonicVectorExcitationCoding = 9, // HVXC
325+
TextToSpeechtInterface = 12, // TTSI
326+
MainSynthetic = 13, // Main Synthetic
327+
WavetableSynthesis = 14, // Wavetable Synthesis
328+
GeneralMIDI = 15, // General MIDI
329+
AlgorithmicSynthesis = 16, // Algorithmic Synthesis
330+
ErrorResilientAacLowComplexity = 17, // ER AAC LC
331+
ErrorResilientAacLongTermPrediction = 19, // ER AAC LTP
332+
ErrorResilientAacScalable = 20, // ER AAC Scalable
333+
ErrorResilientAacTwinVQ = 21, // ER AAC TwinVQ
334+
ErrorResilientAacBitSlicedArithmeticCoding = 22, // ER Bit Sliced Arithmetic Coding
335+
ErrorResilientAacLowDelay = 23, // ER AAC Low Delay
336+
ErrorResilientCodeExcitedLinearPrediction = 24, // ER CELP
337+
ErrorResilientHarmonicVectorExcitationCoding = 25, // ER HVXC
338+
ErrorResilientHarmonicIndividualLinesNoise = 26, // ER HILN
339+
ErrorResilientParametric = 27, // ER Parametric
340+
SinuSoidalCoding = 28, // SSC
341+
ParametricStereo = 29, // PS
342+
MpegSurround = 30, // MPEG Surround
343+
MpegLayer1 = 32, // MPEG Layer 1
344+
MpegLayer2 = 33, // MPEG Layer 2
345+
MpegLayer3 = 34, // MPEG Layer 3
346+
DirectStreamTransfer = 35, // DST Direct Stream Transfer
347+
AudioLosslessCoding = 36, // ALS Audio Lossless Coding
348+
ScalableLosslessCoding = 37, // SLC Scalable Lossless Coding
349+
ScalableLosslessCodingNoneCore = 38, // SLC non-core
350+
ErrorResilientAacEnhancedLowDelay = 39, // ER AAC ELD
351+
SymbolicMusicRepresentationSimple = 40, // SMR Simple
352+
SymbolicMusicRepresentationMain = 41, // SMR Main
353+
UnifiedSpeechAudioCoding = 42, // USAC
354+
SpatialAudioObjectCoding = 43, // SAOC
355+
LowDelayMpegSurround = 44, // LD MPEG Surround
356+
SpatialAudioObjectCodingDialogueEnhancement = 45, // SAOC-DE
357+
AudioSync = 46, // Audio Sync
320358
}
321359

322360
impl TryFrom<u8> for AudioObjectType {
@@ -327,6 +365,44 @@ impl TryFrom<u8> for AudioObjectType {
327365
2 => Ok(AudioObjectType::AacLowComplexity),
328366
3 => Ok(AudioObjectType::AacScalableSampleRate),
329367
4 => Ok(AudioObjectType::AacLongTermPrediction),
368+
5 => Ok(AudioObjectType::SpectralBandReplication),
369+
6 => Ok(AudioObjectType::AACScalable),
370+
7 => Ok(AudioObjectType::TwinVQ),
371+
8 => Ok(AudioObjectType::CodeExcitedLinearPrediction),
372+
9 => Ok(AudioObjectType::HarmonicVectorExcitationCoding),
373+
12 => Ok(AudioObjectType::TextToSpeechtInterface),
374+
13 => Ok(AudioObjectType::MainSynthetic),
375+
14 => Ok(AudioObjectType::WavetableSynthesis),
376+
15 => Ok(AudioObjectType::GeneralMIDI),
377+
16 => Ok(AudioObjectType::AlgorithmicSynthesis),
378+
17 => Ok(AudioObjectType::ErrorResilientAacLowComplexity),
379+
19 => Ok(AudioObjectType::ErrorResilientAacLongTermPrediction),
380+
20 => Ok(AudioObjectType::ErrorResilientAacScalable),
381+
21 => Ok(AudioObjectType::ErrorResilientAacTwinVQ),
382+
22 => Ok(AudioObjectType::ErrorResilientAacBitSlicedArithmeticCoding),
383+
23 => Ok(AudioObjectType::ErrorResilientAacLowDelay),
384+
24 => Ok(AudioObjectType::ErrorResilientCodeExcitedLinearPrediction),
385+
25 => Ok(AudioObjectType::ErrorResilientHarmonicVectorExcitationCoding),
386+
26 => Ok(AudioObjectType::ErrorResilientHarmonicIndividualLinesNoise),
387+
27 => Ok(AudioObjectType::ErrorResilientParametric),
388+
28 => Ok(AudioObjectType::SinuSoidalCoding),
389+
29 => Ok(AudioObjectType::ParametricStereo),
390+
30 => Ok(AudioObjectType::MpegSurround),
391+
32 => Ok(AudioObjectType::MpegLayer1),
392+
33 => Ok(AudioObjectType::MpegLayer2),
393+
34 => Ok(AudioObjectType::MpegLayer3),
394+
35 => Ok(AudioObjectType::DirectStreamTransfer),
395+
36 => Ok(AudioObjectType::AudioLosslessCoding),
396+
37 => Ok(AudioObjectType::ScalableLosslessCoding),
397+
38 => Ok(AudioObjectType::ScalableLosslessCodingNoneCore),
398+
39 => Ok(AudioObjectType::ErrorResilientAacEnhancedLowDelay),
399+
40 => Ok(AudioObjectType::SymbolicMusicRepresentationSimple),
400+
41 => Ok(AudioObjectType::SymbolicMusicRepresentationMain),
401+
42 => Ok(AudioObjectType::UnifiedSpeechAudioCoding),
402+
43 => Ok(AudioObjectType::SpatialAudioObjectCoding),
403+
44 => Ok(AudioObjectType::LowDelayMpegSurround),
404+
45 => Ok(AudioObjectType::SpatialAudioObjectCodingDialogueEnhancement),
405+
46 => Ok(AudioObjectType::AudioSync),
330406
_ => Err(Error::InvalidData("invalid audio object type")),
331407
}
332408
}
@@ -335,10 +411,48 @@ impl TryFrom<u8> for AudioObjectType {
335411
impl fmt::Display for AudioObjectType {
336412
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
337413
let type_str = match self {
338-
AudioObjectType::AacMain => "main",
414+
AudioObjectType::AacMain => "AAC Main",
339415
AudioObjectType::AacLowComplexity => "LC",
340416
AudioObjectType::AacScalableSampleRate => "SSR",
341417
AudioObjectType::AacLongTermPrediction => "LTP",
418+
AudioObjectType::SpectralBandReplication => "SBR",
419+
AudioObjectType::AACScalable => "Scalable",
420+
AudioObjectType::TwinVQ => "TwinVQ",
421+
AudioObjectType::CodeExcitedLinearPrediction => "CELP",
422+
AudioObjectType::HarmonicVectorExcitationCoding => "HVXC",
423+
AudioObjectType::TextToSpeechtInterface => "TTSI",
424+
AudioObjectType::MainSynthetic => "Main Synthetic",
425+
AudioObjectType::WavetableSynthesis => "Wavetable Synthesis",
426+
AudioObjectType::GeneralMIDI => "General MIDI",
427+
AudioObjectType::AlgorithmicSynthesis => "Algorithmic Synthesis",
428+
AudioObjectType::ErrorResilientAacLowComplexity => "ER AAC LC",
429+
AudioObjectType::ErrorResilientAacLongTermPrediction => "ER AAC LTP",
430+
AudioObjectType::ErrorResilientAacScalable => "ER AAC scalable",
431+
AudioObjectType::ErrorResilientAacTwinVQ => "ER AAC TwinVQ",
432+
AudioObjectType::ErrorResilientAacBitSlicedArithmeticCoding => "ER AAC BSAC",
433+
AudioObjectType::ErrorResilientAacLowDelay => "ER AAC LD",
434+
AudioObjectType::ErrorResilientCodeExcitedLinearPrediction => "ER CELP",
435+
AudioObjectType::ErrorResilientHarmonicVectorExcitationCoding => "ER HVXC",
436+
AudioObjectType::ErrorResilientHarmonicIndividualLinesNoise => "ER HILN",
437+
AudioObjectType::ErrorResilientParametric => "ER Parametric",
438+
AudioObjectType::SinuSoidalCoding => "SSC",
439+
AudioObjectType::ParametricStereo => "Parametric Stereo",
440+
AudioObjectType::MpegSurround => "MPEG surround",
441+
AudioObjectType::MpegLayer1 => "MPEG Layer 1",
442+
AudioObjectType::MpegLayer2 => "MPEG Layer 2",
443+
AudioObjectType::MpegLayer3 => "MPEG Layer 3",
444+
AudioObjectType::DirectStreamTransfer => "DST",
445+
AudioObjectType::AudioLosslessCoding => "ALS",
446+
AudioObjectType::ScalableLosslessCoding => "SLS",
447+
AudioObjectType::ScalableLosslessCodingNoneCore => "SLS Non-core",
448+
AudioObjectType::ErrorResilientAacEnhancedLowDelay => "ER AAC ELD",
449+
AudioObjectType::SymbolicMusicRepresentationSimple => "SMR Simple",
450+
AudioObjectType::SymbolicMusicRepresentationMain => "SMR Main",
451+
AudioObjectType::UnifiedSpeechAudioCoding => "USAC",
452+
AudioObjectType::SpatialAudioObjectCoding => "SAOC",
453+
AudioObjectType::LowDelayMpegSurround => "LD MPEG Surround",
454+
AudioObjectType::SpatialAudioObjectCodingDialogueEnhancement => "SAOC-DE",
455+
AudioObjectType::AudioSync => "Audio Sync",
342456
};
343457
write!(f, "{}", type_str)
344458
}

0 commit comments

Comments
 (0)