aboutsummaryrefslogtreecommitdiff
path: root/remuxer
diff options
context:
space:
mode:
Diffstat (limited to 'remuxer')
-rw-r--r--remuxer/src/remux.rs1
-rw-r--r--remuxer/src/snippet.rs11
2 files changed, 7 insertions, 5 deletions
diff --git a/remuxer/src/remux.rs b/remuxer/src/remux.rs
index 31e4a3a..a95aa5c 100644
--- a/remuxer/src/remux.rs
+++ b/remuxer/src/remux.rs
@@ -246,6 +246,7 @@ pub fn remux_stream_into(
assert_eq!(first_cluster_offset, first_cluster_offset_predict);
let mut skip = 0;
+ // TODO binary search
for (i, cluster) in segment_layout.iter().enumerate() {
if (cluster.position + segment_offset) >= range.start {
break;
diff --git a/remuxer/src/snippet.rs b/remuxer/src/snippet.rs
index cc5ec9d..5f25400 100644
--- a/remuxer/src/snippet.rs
+++ b/remuxer/src/snippet.rs
@@ -9,7 +9,7 @@ use crate::{
segment_extractor::SegmentExtractIter,
};
use anyhow::{anyhow, Context, Result};
-use jellycommon::{seek_index::SeekIndex, LocalTrack, NodePublic};
+use jellycommon::{LocalTrack, NodePublic};
use jellymatroska::{read::EbmlReader, write::EbmlWriter, Master, MatroskaTag};
use log::{debug, info};
use std::{fs::File, io::Write, ops::Range, path::Path};
@@ -75,10 +75,11 @@ pub fn write_snippet_into(
);
info!("\t {}", info);
let file = File::open(&source_path).context("opening source file")?;
- 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"))?
+ .to_owned();
debug!("\t seek index: {} blocks loaded", index.blocks.len());
let mut reader = EbmlReader::new(file);