diff options
author | metamuffin <metamuffin@disroot.org> | 2023-10-02 00:48:07 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-10-02 00:48:07 +0200 |
commit | fdaa18968c5b3d923c93527efaeeb81cbd9b4d88 (patch) | |
tree | 4c449ed0ac8645aedae49ac45dfb710f0936bb1b /remuxer/src/snippet.rs | |
parent | 68afc87797e25dca30ecb8d4f2c06edcc8c71b22 (diff) | |
download | jellything-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.rs | 11 |
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}"); |