X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fdemuxers%2Fmod.rs;fp=src%2Fdemuxers%2Fmod.rs;h=707984bcfca085f8e8d0d3418bff39e09f9eaccb;hb=eb71d98ffafe7cc00bab4c3b7c9c97f813eca6c4;hp=6499517de33b15124bc4b1c1aa60ad02f2396e32;hpb=77d06de29413155ff49abe69a6a946295355655e;p=nihav.git diff --git a/src/demuxers/mod.rs b/src/demuxers/mod.rs index 6499517..707984b 100644 --- a/src/demuxers/mod.rs +++ b/src/demuxers/mod.rs @@ -193,3 +193,24 @@ impl FrameFromPacket for NAFrame { self.set_duration(pkt.duration); } } + +pub trait DemuxerCreator { + fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box + 'a>; + fn get_name(&self) -> &'static str; +} + +const DEMUXERS: &[&'static DemuxerCreator] = &[ +#[cfg(feature="demuxer_avi")] + &avi::AVIDemuxerCreator {}, +#[cfg(feature="demuxer_gdv")] + &gdv::GDVDemuxerCreator {}, +]; + +pub fn find_demuxer(name: &str) -> Option<&DemuxerCreator> { + for i in 0..DEMUXERS.len() { + if DEMUXERS[i].get_name() == name { + return Some(DEMUXERS[i]); + } + } + None +}