diff options
Diffstat (limited to 'remuxer/src/import/mod.rs')
-rw-r--r-- | remuxer/src/import/mod.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/remuxer/src/import/mod.rs b/remuxer/src/import/mod.rs index 78c752e..7b0b371 100644 --- a/remuxer/src/import/mod.rs +++ b/remuxer/src/import/mod.rs @@ -17,10 +17,16 @@ use std::{collections::BTreeMap, path::PathBuf}; pub fn import_read( path: &PathBuf, input: &mut EbmlReader, -) -> Result<(Vec<SourceTrack>, Vec<LocalTrack>, BTreeMap<u64, SeekIndex>)> { +) -> Result<( + Vec<SourceTrack>, + Vec<LocalTrack>, + BTreeMap<u64, SeekIndex>, + f64, +)> { let mut iteminfo = Vec::new(); let mut private = Vec::new(); let mut seek_index = BTreeMap::new(); + let mut dur = None; while let Some(item) = input.next() { let item = match item { Ok(item) => item, @@ -49,20 +55,20 @@ pub fn import_read( MatroskaTag::Segment(_) => { info!("segment start"); let mut children = Unflatten::new_with_end(input, item); - import_read_segment( + dur = dur.or(import_read_segment( path, &mut children, &mut iteminfo, &mut private, &mut seek_index, - )?; + )?); info!("segment end"); } _ => debug!("(r) tag ignored: {item:?}"), } } - Ok((iteminfo, private, seek_index)) + Ok((iteminfo, private, seek_index, dur.unwrap_or(0.))) } fn import_read_segment( |