aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/snippet.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-10-02 00:48:07 +0200
committermetamuffin <metamuffin@disroot.org>2023-10-02 00:48:07 +0200
commitfdaa18968c5b3d923c93527efaeeb81cbd9b4d88 (patch)
tree4c449ed0ac8645aedae49ac45dfb710f0936bb1b /remuxer/src/snippet.rs
parent68afc87797e25dca30ecb8d4f2c06edcc8c71b22 (diff)
downloadjellything-fdaa18968c5b3d923c93527efaeeb81cbd9b4d88.tar
jellything-fdaa18968c5b3d923c93527efaeeb81cbd9b4d88.tar.bz2
jellything-fdaa18968c5b3d923c93527efaeeb81cbd9b4d88.tar.zst
in-memory cached seek index
Diffstat (limited to 'remuxer/src/snippet.rs')
-rw-r--r--remuxer/src/snippet.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/remuxer/src/snippet.rs b/remuxer/src/snippet.rs
index bc7f190..cc5ec9d 100644
--- a/remuxer/src/snippet.rs
+++ b/remuxer/src/snippet.rs
@@ -5,7 +5,8 @@
*/
use crate::{
- ebml_header, ebml_segment_info, ebml_track_entry, segment_extractor::SegmentExtractIter,
+ ebml_header, ebml_segment_info, ebml_track_entry, seek_index::get_seek_index,
+ segment_extractor::SegmentExtractIter,
};
use anyhow::{anyhow, Context, Result};
use jellycommon::{seek_index::SeekIndex, LocalTrack, NodePublic};
@@ -24,10 +25,10 @@ pub fn snippet_index(
let media_info = item.media.as_ref().unwrap();
let private = &track_sources[track];
let source_path = path_base.join(&private.path);
- let mut index = File::open(source_path.with_extension(format!("si.{}", private.track)))
- .context("opening seek index file")?;
- let index =
- bincode::decode_from_std_read::<SeekIndex, _, _>(&mut index, bincode::config::standard())?;
+ let index = get_seek_index(&source_path)?;
+ let index = index
+ .get(&(private.track as u64))
+ .ok_or(anyhow!("track missing"))?;
let average_kf_interval = media_info.duration / index.keyframes.len() as f64;
let kf_per_snip = (SNIPPET_LENGTH / average_kf_interval).ceil() as usize;
debug!("average keyframe interval: {average_kf_interval}");