aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/remux.rs
diff options
context:
space:
mode:
Diffstat (limited to 'remuxer/src/remux.rs')
-rw-r--r--remuxer/src/remux.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/remuxer/src/remux.rs b/remuxer/src/remux.rs
index d7a30e5..31e4a3a 100644
--- a/remuxer/src/remux.rs
+++ b/remuxer/src/remux.rs
@@ -4,7 +4,8 @@
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
use crate::{
- ebml_header, ebml_track_entry, segment_extractor::SegmentExtractIter, trim_writer::TrimWriter,
+ ebml_header, ebml_track_entry, seek_index::get_seek_index,
+ segment_extractor::SegmentExtractIter, trim_writer::TrimWriter,
};
use anyhow::{anyhow, Context};
use jellycommon::{
@@ -23,6 +24,7 @@ use std::{
io::{Seek, SeekFrom, Write},
ops::Range,
path::PathBuf,
+ sync::Arc,
time::Instant,
};
@@ -43,7 +45,7 @@ pub fn remux_stream_into(
info: SourceTrack,
reader: EbmlReader,
mapped: u64,
- index: SeekIndex,
+ index: Arc<SeekIndex>,
source_track_index: usize,
codec_private: Option<Vec<u8>>,
layouting_progress_index: usize,
@@ -69,12 +71,11 @@ pub fn remux_stream_into(
info!("\t- {sel} {source_path:?} ({} => {mapped})", private.track);
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 reader = EbmlReader::new(file);
Ok(ReaderC {