From 48a57a52d85d387efe122fb4d9fb113f577a0a98 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 13 Apr 2025 18:19:03 +0200 Subject: arc mkmeta --- remuxer/src/metadata.rs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'remuxer') 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, pub infojson: Option>, } -pub fn matroska_metadata(path: &Path) -> Result>> { - 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>> { + 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> { + 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>> { } } } - Ok(Some(MatroskaMetadata { + Ok(MatroskaMetadata { chapters, cover, info, infojson, tags, tracks, - })) + }) }) } -- cgit v1.2.3-70-g09d2