diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-13 18:19:03 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-13 18:19:03 +0200 |
commit | 48a57a52d85d387efe122fb4d9fb113f577a0a98 (patch) | |
tree | 7ad7effe44689be805194b06189d260948369d71 /remuxer | |
parent | 68c579bc4ecbbf65cf4588adf88957de4c3444f9 (diff) | |
download | jellything-48a57a52d85d387efe122fb4d9fb113f577a0a98.tar jellything-48a57a52d85d387efe122fb4d9fb113f577a0a98.tar.bz2 jellything-48a57a52d85d387efe122fb4d9fb113f577a0a98.tar.zst |
arc mkmeta
Diffstat (limited to 'remuxer')
-rw-r--r-- | remuxer/src/metadata.rs | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/remuxer/src/metadata.rs b/remuxer/src/metadata.rs index 4ddad20..c8a5f8f 100644 --- a/remuxer/src/metadata.rs +++ b/remuxer/src/metadata.rs @@ -32,14 +32,21 @@ pub struct MatroskaMetadata { pub tags: Option<Tags>, pub infojson: Option<Vec<u8>>, } -pub fn matroska_metadata(path: &Path) -> Result<Arc<Option<MatroskaMetadata>>> { - cache_memory(&["mkmeta-v2", path.to_string_lossy().as_ref()], || { - let mut magic = [0; 4]; - File::open(path)?.read_exact(&mut magic).ok(); - if !matches!(magic, [0x1A, 0x45, 0xDF, 0xA3]) { - return Ok(None); - } - +pub fn checked_matroska_metadata(path: &Path) -> Result<Arc<Option<MatroskaMetadata>>> { + cache_memory( + &["mkmeta-check-v1", path.to_string_lossy().as_ref()], + || { + let mut magic = [0; 4]; + File::open(path)?.read_exact(&mut magic).ok(); + if !matches!(magic, [0x1A, 0x45, 0xDF, 0xA3]) { + return Ok(None); + } + Ok(Some((*matroska_metadata(path)?).clone())) + }, + ) +} +pub fn matroska_metadata(path: &Path) -> Result<Arc<MatroskaMetadata>> { + cache_memory(&["mkmeta-v3", path.to_string_lossy().as_ref()], || { info!("reading {path:?}"); let mut file = BufReader::new(File::open(path)?); let mut file = file.by_ref().take(u64::MAX); @@ -104,13 +111,13 @@ pub fn matroska_metadata(path: &Path) -> Result<Arc<Option<MatroskaMetadata>>> { } } } - Ok(Some(MatroskaMetadata { + Ok(MatroskaMetadata { chapters, cover, info, infojson, tags, tracks, - })) + }) }) } |