From: Kostya Shishkov Date: Fri, 15 Nov 2019 18:59:19 +0000 (+0100) Subject: core: improve SeekIndex functionality X-Git-Url: https://git.nihav.org/?p=nihav.git;a=commitdiff_plain;h=6492988da2d819c9e0953ec71876488e2e35580e core: improve SeekIndex functionality --- diff --git a/nihav-core/src/demuxers/mod.rs b/nihav-core/src/demuxers/mod.rs index 6499132..0883782 100644 --- a/nihav-core/src/demuxers/mod.rs +++ b/nihav-core/src/demuxers/mod.rs @@ -207,9 +207,13 @@ pub struct SeekIndex { impl SeekIndex { pub fn new() -> Self { Self::default() } - pub fn add_stream(&mut self, id: u32) { - if self.stream_id_to_index(id).is_none() { + pub fn add_stream(&mut self, id: u32) -> usize { + let ret = self.stream_id_to_index(id); + if ret.is_none() { self.seek_info.push(StreamSeekInfo::new(id)); + self.seek_info.len() - 1 + } else { + ret.unwrap() } } pub fn stream_id_to_index(&self, id: u32) -> Option { @@ -228,6 +232,14 @@ impl SeekIndex { } None } + pub fn add_entry(&mut self, id: u32, entry: SeekEntry) { + let mut idx = self.stream_id_to_index(id); + if idx.is_none() { + idx = Some(self.add_stream(id)); + } + self.seek_info[idx.unwrap()].add_entry(entry); + self.seek_info[idx.unwrap()].filled = true; + } pub fn find_pos(&self, time: u64) -> Option { let mut cand = None; for str in self.seek_info.iter() {