feat: add mkv detection
This commit is contained in:
parent
926c8896b0
commit
ff9155a686
@ -24,6 +24,7 @@ pub enum AudioType {
|
|||||||
M4B = 5,
|
M4B = 5,
|
||||||
MP4 = 6,
|
MP4 = 6,
|
||||||
WMA = 7, // While possible, it is rare to find a lossless WMA file.
|
WMA = 7, // While possible, it is rare to find a lossless WMA file.
|
||||||
|
MKV = 8, // Matroska (mkv, mka, webm etc.; can contain lossy or lossless audio tracks)
|
||||||
|
|
||||||
// Lossless
|
// Lossless
|
||||||
FLAC = MASK_LOSSLESS | 1,
|
FLAC = MASK_LOSSLESS | 1,
|
||||||
@ -46,6 +47,7 @@ impl AudioType {
|
|||||||
AudioType::DFF => "dff",
|
AudioType::DFF => "dff",
|
||||||
AudioType::WAV => "wav",
|
AudioType::WAV => "wav",
|
||||||
AudioType::APE => "ape",
|
AudioType::APE => "ape",
|
||||||
|
AudioType::MKV => "ape",
|
||||||
|
|
||||||
_ => "bin",
|
_ => "bin",
|
||||||
}
|
}
|
||||||
@ -77,9 +79,10 @@ fn is_aac(magic: u32) -> bool {
|
|||||||
const MAGIC_FLAC: [u8; 4] = *b"fLaC";
|
const MAGIC_FLAC: [u8; 4] = *b"fLaC";
|
||||||
const MAGIC_OGG: [u8; 4] = *b"OggS";
|
const MAGIC_OGG: [u8; 4] = *b"OggS";
|
||||||
const MAGIC_DFF: [u8; 4] = *b"FRM8";
|
const MAGIC_DFF: [u8; 4] = *b"FRM8";
|
||||||
const MAGIC_WMA: [u8; 4] = *b"\x30\x26\xB2\x75";
|
const MAGIC_WMA: [u8; 4] = [0x30, 0x26, 0xB2, 0x75];
|
||||||
const MAGIC_WAV: [u8; 4] = *b"RIFF";
|
const MAGIC_WAV: [u8; 4] = *b"RIFF";
|
||||||
const MAGIC_APE: [u8; 4] = *b"MAC ";
|
const MAGIC_APE: [u8; 4] = *b"MAC ";
|
||||||
|
const MAGIC_MKV: [u8; 4] = [0x1A, 0x45, 0xDF, 0xA3];
|
||||||
|
|
||||||
pub fn detect_audio_type(buffer: &[u8]) -> Result<AudioType, AudioError> {
|
pub fn detect_audio_type(buffer: &[u8]) -> Result<AudioType, AudioError> {
|
||||||
let offset = metadata::get_header_metadata_size(buffer, 0)?;
|
let offset = metadata::get_header_metadata_size(buffer, 0)?;
|
||||||
@ -96,6 +99,7 @@ pub fn detect_audio_type(buffer: &[u8]) -> Result<AudioType, AudioError> {
|
|||||||
MAGIC_WMA => return Ok(AudioType::WMA),
|
MAGIC_WMA => return Ok(AudioType::WMA),
|
||||||
MAGIC_WAV => return Ok(AudioType::WAV),
|
MAGIC_WAV => return Ok(AudioType::WAV),
|
||||||
MAGIC_APE => return Ok(AudioType::APE),
|
MAGIC_APE => return Ok(AudioType::APE),
|
||||||
|
MAGIC_MKV => return Ok(AudioType::MKV),
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
let magic = u32::from_be_bytes(magic);
|
let magic = u32::from_be_bytes(magic);
|
||||||
|
Loading…
Reference in New Issue
Block a user