aboutsummaryrefslogtreecommitdiff
path: root/remuxer
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-13 18:19:03 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-13 18:19:03 +0200
commit48a57a52d85d387efe122fb4d9fb113f577a0a98 (patch)
tree7ad7effe44689be805194b06189d260948369d71 /remuxer
parent68c579bc4ecbbf65cf4588adf88957de4c3444f9 (diff)
downloadjellything-48a57a52d85d387efe122fb4d9fb113f577a0a98.tar
jellything-48a57a52d85d387efe122fb4d9fb113f577a0a98.tar.bz2
jellything-48a57a52d85d387efe122fb4d9fb113f577a0a98.tar.zst
arc mkmeta
Diffstat (limited to 'remuxer')
-rw-r--r--remuxer/src/metadata.rs27
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,
- }))
+ })
})
}