}
#[allow(dead_code)]
-pub struct GremlinVideoDemuxer<'a> {
+struct GremlinVideoDemuxer<'a> {
opened: bool,
src: &'a mut ByteReader<'a>,
frames: u16,
let width = src.read_u16le()?;
let height = src.read_u16le()?;
if max_fs > 0 {
- let vhdr = NAVideoInfo::new(width as u32, height as u32, false, PAL8_FORMAT);
+ let vhdr = NAVideoInfo::new(width as usize, height as usize, false, PAL8_FORMAT);
let vci = NACodecTypeInfo::Video(vhdr);
let vinfo = NACodecInfo::new("video-gdv", vci, None);
self.v_id = self.dmx.add_stream(NAStream::new(StreamType::Video, 0, vinfo));
}
}
+ fn get_num_streams(&self) -> usize { self.dmx.get_num_streams() }
+ fn get_stream(&self, idx: usize) -> Option<Rc<NAStream>> { self.dmx.get_stream(idx) }
+
#[allow(unused_variables)]
fn seek(&mut self, time: u64) -> DemuxerResult<()> {
if !self.opened { return Err(DemuxerError::NoSuchInput); }
}
}*/
impl<'a> GremlinVideoDemuxer<'a> {
- pub fn new(io: &'a mut ByteReader<'a>) -> Self {
+ fn new(io: &'a mut ByteReader<'a>) -> Self {
GremlinVideoDemuxer {
cur_frame: 0,
frames: 0,
}
}
+pub struct GDVDemuxerCreator { }
+
+impl DemuxerCreator for GDVDemuxerCreator {
+ fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box<Demux<'a> + 'a> {
+ Box::new(GremlinVideoDemuxer::new(br))
+ }
+ fn get_name(&self) -> &'static str { "gdv" }
+}
+
#[cfg(test)]
mod test {
use super::*;