aboutsummaryrefslogtreecommitdiff
path: root/stream
diff options
context:
space:
mode:
Diffstat (limited to 'stream')
-rw-r--r--stream/src/cues.rs45
-rw-r--r--stream/src/fragment.rs13
-rw-r--r--stream/src/lib.rs2
-rw-r--r--stream/src/metadata.rs4
4 files changed, 33 insertions, 31 deletions
diff --git a/stream/src/cues.rs b/stream/src/cues.rs
index 646db5b..9291e18 100644
--- a/stream/src/cues.rs
+++ b/stream/src/cues.rs
@@ -5,7 +5,7 @@
*/
use anyhow::{anyhow, Result};
-use jellycache::cache_memory;
+use jellycache::{cache_memory, CacheKey};
use jellyremuxer::demuxers::create_demuxer_autodetect;
use serde::{Deserialize, Serialize};
use std::{collections::BTreeMap, fs::File, path::Path, sync::Arc};
@@ -29,29 +29,32 @@ pub struct StatsAndCues {
}
pub fn generate_cues(path: &Path) -> Result<Arc<StatsAndCues>> {
- cache_memory("generated-cues", path, move || {
- let media = File::open(path)?;
- let mut media =
- create_demuxer_autodetect(Box::new(media))?.ok_or(anyhow!("media format unknown"))?;
+ cache_memory(
+ CacheKey::new_json(("media-generated-cues", path)),
+ move || {
+ let media = File::open(path)?;
+ let mut media = create_demuxer_autodetect(Box::new(media))?
+ .ok_or(anyhow!("media format unknown"))?;
- let info = media.info()?;
- media.seek_cluster(None)?;
+ let info = media.info()?;
+ media.seek_cluster(None)?;
- let mut stats = BTreeMap::<u64, TrackStat>::new();
- let mut cues = Vec::new();
+ let mut stats = BTreeMap::<u64, TrackStat>::new();
+ let mut cues = Vec::new();
- while let Some((position, cluster)) = media.read_cluster()? {
- cues.push(GeneratedCue {
- position,
- time: cluster.timestamp * info.timestamp_scale,
- });
- for block in cluster.simple_blocks {
- let e = stats.entry(block.track).or_default();
- e.num_blocks += 1;
- e.total_size += block.data.len() as u64;
+ while let Some((position, cluster)) = media.read_cluster()? {
+ cues.push(GeneratedCue {
+ position,
+ time: cluster.timestamp * info.timestamp_scale,
+ });
+ for block in cluster.simple_blocks {
+ let e = stats.entry(block.track).or_default();
+ e.num_blocks += 1;
+ e.total_size += block.data.len() as u64;
+ }
}
- }
- Ok(StatsAndCues { stats, cues })
- })
+ Ok(StatsAndCues { stats, cues })
+ },
+ )
}
diff --git a/stream/src/fragment.rs b/stream/src/fragment.rs
index 97ca2db..35a5cd2 100644
--- a/stream/src/fragment.rs
+++ b/stream/src/fragment.rs
@@ -94,13 +94,12 @@ pub fn fragment_stream(
cluster.simple_blocks.retain(|b| b.track == track_num);
cluster.block_groups.retain(|b| b.block.track == track_num);
- let next_kf = next_cluster
- .and_then(|x| {
- x.simple_blocks
- .iter()
- .find(|b| b.track == track_num)
- .cloned()
- });
+ let next_kf = next_cluster.and_then(|x| {
+ x.simple_blocks
+ .iter()
+ .find(|b| b.track == track_num)
+ .cloned()
+ });
let jr_container = match container {
StreamContainer::WebM => ContainerFormat::Webm,
diff --git a/stream/src/lib.rs b/stream/src/lib.rs
index 724a593..6c6db8f 100644
--- a/stream/src/lib.rs
+++ b/stream/src/lib.rs
@@ -113,7 +113,7 @@ fn original_stream(
info: Arc<SMediaInfo>,
track: usize,
range: Range<u64>,
-) -> Result<Box<dyn Read+ Send + Sync>> {
+) -> Result<Box<dyn Read + Send + Sync>> {
let (iinfo, _info) = stream_info(info)?;
let (file_index, _) = *iinfo
.track_to_file
diff --git a/stream/src/metadata.rs b/stream/src/metadata.rs
index 9bfa3aa..fe553e2 100644
--- a/stream/src/metadata.rs
+++ b/stream/src/metadata.rs
@@ -5,12 +5,12 @@
*/
use anyhow::{anyhow, Result};
-use jellycache::cache_memory;
+use jellycache::{cache_memory, CacheKey};
use jellyremuxer::{demuxers::create_demuxer_autodetect, matroska::Segment};
use std::{fs::File, path::Path, sync::Arc};
pub fn read_metadata(path: &Path) -> Result<Arc<Segment>> {
- cache_memory("mkmeta-v4", path, move || {
+ cache_memory(CacheKey::new_json(("media-metadata", path)), move || {
let media = File::open(path)?;
let mut media =
create_demuxer_autodetect(Box::new(media))?.ok_or(anyhow!("media format unknown"))?;