aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/import
diff options
context:
space:
mode:
Diffstat (limited to 'remuxer/src/import')
-rw-r--r--remuxer/src/import/mod.rs18
1 files changed, 4 insertions, 14 deletions
diff --git a/remuxer/src/import/mod.rs b/remuxer/src/import/mod.rs
index 8df9f42..78c752e 100644
--- a/remuxer/src/import/mod.rs
+++ b/remuxer/src/import/mod.rs
@@ -12,15 +12,15 @@ use jellymatroska::{
unflatten::{IterWithPos, Unflat, Unflatten},
};
use log::{debug, error, info, trace, warn};
-use std::{collections::HashMap, path::PathBuf};
+use std::{collections::BTreeMap, path::PathBuf};
pub fn import_read(
path: &PathBuf,
input: &mut EbmlReader,
-) -> Result<(Vec<SourceTrack>, Vec<LocalTrack>, Vec<SeekIndex>)> {
+) -> Result<(Vec<SourceTrack>, Vec<LocalTrack>, BTreeMap<u64, SeekIndex>)> {
let mut iteminfo = Vec::new();
let mut private = Vec::new();
- let mut seek_index = Vec::new();
+ let mut seek_index = BTreeMap::new();
while let Some(item) = input.next() {
let item = match item {
Ok(item) => item,
@@ -70,10 +70,9 @@ fn import_read_segment(
segment: &mut Unflatten,
iteminfo: &mut Vec<SourceTrack>,
private: &mut Vec<LocalTrack>,
- seek_index_out: &mut Vec<SeekIndex>,
+ seek_index: &mut BTreeMap<u64, SeekIndex>,
) -> Result<Option<f64>> {
let (mut timestamp_scale, mut duration) = (None, None);
- let mut seek_index = HashMap::new();
while let Some(Ok(Unflat { children, item, .. })) = segment.n() {
match item {
@@ -257,15 +256,6 @@ fn import_read_segment(
};
}
- for i in 0..iteminfo.len() {
- seek_index_out.push(
- seek_index
- .get(&(i as u64))
- .map(|e| e.to_owned())
- .unwrap_or_else(|| SeekIndex { blocks: vec![] }),
- )
- }
-
Ok(if let Some(duration) = duration {
Some((duration * timestamp_scale.unwrap_or(1_000_000) as f64) / 1_000_000_000_f64)
} else {