X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fdemuxers%2Fgdv.rs;h=b84bc9892dd4866fbb077b42af5ea3e7c2b0aa6c;hb=3b501dcbaabd5922d829b217a541e697e8ed1a59;hp=c556197828dec46036905efe4e499d1bcb860b40;hpb=5869fd634c6a174ef2c541ddad4b1a4e9ec26d29;p=nihav.git diff --git a/src/demuxers/gdv.rs b/src/demuxers/gdv.rs index c556197..b84bc98 100644 --- a/src/demuxers/gdv.rs +++ b/src/demuxers/gdv.rs @@ -1,7 +1,6 @@ use super::*; use io::byteio::*; use frame::*; -use std::io::SeekFrom; //use std::collections::HashMap; enum GDVState { @@ -13,7 +12,7 @@ enum GDVState { pub struct GremlinVideoDemuxer<'a> { opened: bool, src: &'a mut ByteReader<'a>, - streams: Vec>>, + streams: Vec>, frames: u16, cur_frame: u16, asize: usize, @@ -103,7 +102,7 @@ pktdta: Vec::new(), } } - fn find_stream(&mut self, id: u32) -> Rc> { + fn find_stream(&mut self, id: u32) -> Rc { for i in 0..self.streams.len() { if self.streams[i].get_id() == id { return self.streams[i].clone(); @@ -123,9 +122,8 @@ pktdta: Vec::new(), let magic = src.read_u16be()?; if magic != 0x0513 { return Err(DemuxerError::InvalidData); } let size = (src.read_u16le()? as usize) + 4; - let tmp = src.read_u32le()?; + let tmp = src.peek_u32le()?; let flags = (tmp & 0xFF) as usize; - src.seek(SeekFrom::Current(-4))?; self.state = GDVState::NewFrame; self.cur_frame = self.cur_frame + 1; src.read_packet(str, Some((self.cur_frame - 1) as u64), None, None, if (flags & 64) != 0 { true } else { false }, size)