X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fdemuxers%2Fmod.rs;fp=src%2Fdemuxers%2Fmod.rs;h=dad92469901247191730a542c1cf734284692cd9;hb=ce52b3b5f57c73d8d55373e635c383f4403e04a7;hp=eb75d5711b4d66597af8573dbb8851e2a68e41c4;hpb=3e67868395ca08aa12af4f38d9bbafe0697c29f1;p=nihav.git diff --git a/src/demuxers/mod.rs b/src/demuxers/mod.rs index eb75d57..dad9246 100644 --- a/src/demuxers/mod.rs +++ b/src/demuxers/mod.rs @@ -1,8 +1,3 @@ -#[cfg(feature="demuxer_gdv")] -mod gdv; -#[cfg(feature="demuxer_avi")] -mod avi; - use std::rc::Rc; use frame::*; use io::byteio::*; @@ -99,6 +94,14 @@ impl StreamManager { false } } + pub fn is_ignored_id(&self, id: u32) -> bool { + for i in 0..self.streams.len() { + if self.streams[i].get_id() == id { + return self.ignored[i]; + } + } + false + } pub fn set_ignored(&mut self, idx: usize) { if idx < self.ignored.len() { self.ignored[idx] = true; @@ -196,11 +199,29 @@ pub trait DemuxerCreator { fn get_name(&self) -> &'static str; } +macro_rules! validate { + ($a:expr) => { if !$a { return Err(DemuxerError::InvalidData); } }; +} + +#[cfg(feature="demuxer_gdv")] +mod gdv; +#[cfg(feature="demuxer_avi")] +mod avi; +#[cfg(feature="demuxer_real")] +mod realmedia; + + const DEMUXERS: &[&'static DemuxerCreator] = &[ #[cfg(feature="demuxer_avi")] &avi::AVIDemuxerCreator {}, #[cfg(feature="demuxer_gdv")] &gdv::GDVDemuxerCreator {}, +#[cfg(feature="demuxer_real")] + &realmedia::RealMediaDemuxerCreator {}, +//#[cfg(feature="demuxer_real")] +// &realmedia::RealAudioDemuxerCreator {}, +//#[cfg(feature="demuxer_real")] +// &realmedia::RealIVRDemuxerCreator {}, ]; pub fn find_demuxer(name: &str) -> Option<&DemuxerCreator> {