X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Fdemuxers%2Fmod.rs;h=08837822be8c6253af59f739c3325be85935d2a3;hb=6492988da2d819c9e0953ec71876488e2e35580e;hp=64991323f9ec58548ef58950d1d2918a021d943d;hpb=baf5478c14aee2b7e8e6dcb300ced8a45dbdd956;p=nihav.git 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() {