From 814896238c9b3928709f27606816ab6de60abdf3 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 25 Jan 2023 07:42:27 +0100 Subject: generate seek index --- remuxer/src/lib.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'remuxer/src/lib.rs') diff --git a/remuxer/src/lib.rs b/remuxer/src/lib.rs index be1ecc0..2c2e6d0 100644 --- a/remuxer/src/lib.rs +++ b/remuxer/src/lib.rs @@ -3,15 +3,14 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2023 metamuffin */ -pub mod format; pub mod import; -use anyhow::{anyhow, Result}; -use jellycommon::{ItemInfo, SourceTrack, SourceTrackKind}; +use anyhow::{anyhow, Context, Result}; +use jellycommon::{ItemInfo, SeekIndex, SourceTrack, SourceTrackKind}; use jellymatroska::{ block::Block, read::EbmlReader, - unflatten::{Unflat, Unflatten}, + unflatten::{IterWithPos, Unflat, Unflatten}, write::EbmlWriter, Master, MatroskaTag, }; @@ -42,6 +41,7 @@ impl RemuxerContext { info: SourceTrack, reader: EbmlReader, mapped: u64, + index: SeekIndex, } let mut inputs = selection @@ -60,9 +60,16 @@ impl RemuxerContext { info.track_number ); info!("\t {}", info); - let file = File::open(source_path)?; + let file = File::open(&source_path).context("opening source file")?; + let mut index = File::open(source_path.with_extension(&format!("si.{}", info.track_number))) + .context("opening seek index file")?; + let index = bincode::decode_from_std_read::( + &mut index, + bincode::config::standard(), + )?; let reader = EbmlReader::new(file); Ok(ReaderC { + index, reader, info, mapped, -- cgit v1.2.3-70-g09d2