LucasArts SMUSH formats support
[nihav.git] / nihav-game / src / demuxers / mod.rs
index f2aeb3b8e2a2a6cdb4d216103651fa17b1013956..fe35075f670ab73712f91e700592fd00d01e14a8 100644 (file)
@@ -1,19 +1,53 @@
 use nihav_core::demuxers::*;
 
+#[allow(unused_macros)]
 macro_rules! validate {
     ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DemuxerError::InvalidData); } };
 }
 
+#[cfg(any(feature="demuxer_bmv",feature="demuxer_bmv3"))]
+mod bmv;
+#[cfg(any(feature="demuxer_fst",feature="demuxer_fcmp"))]
+mod fst;
 #[cfg(feature="demuxer_gdv")]
 mod gdv;
+#[cfg(feature="demuxer_imax")]
+mod imax;
+#[cfg(feature="demuxer_q")]
+mod q;
+#[cfg(feature="demuxer_smush")]
+mod smush;
+#[cfg(feature="demuxer_vmd")]
+mod vmd;
+#[cfg(feature="demuxer_vx")]
+mod vx;
 
-const GAME_DEMUXERS: &[&'static DemuxerCreator] = &[
+const GAME_DEMUXERS: &[&dyn DemuxerCreator] = &[
+#[cfg(feature="demuxer_bmv")]
+    &bmv::BMVDemuxerCreator {},
+#[cfg(feature="demuxer_bmv3")]
+    &bmv::BMV3DemuxerCreator {},
+#[cfg(feature="demuxer_fcmp")]
+    &fst::FCMPDemuxerCreator {},
+#[cfg(feature="demuxer_fst")]
+    &fst::FSTDemuxerCreator {},
 #[cfg(feature="demuxer_gdv")]
     &gdv::GDVDemuxerCreator {},
+#[cfg(feature="demuxer_imax")]
+    &imax::IMAXDemuxerCreator {},
+#[cfg(feature="demuxer_q")]
+    &q::QDemuxerCreator {},
+#[cfg(feature="demuxer_smush")]
+    &smush::SmushDemuxerCreator {},
+#[cfg(feature="demuxer_vmd")]
+    &vmd::VMDDemuxerCreator {},
+#[cfg(feature="demuxer_vx")]
+    &vx::VXDemuxerCreator {},
 ];
 
+/// Registers all available demuxers provided by this crate.
 pub fn game_register_all_demuxers(rd: &mut RegisteredDemuxers) {
-    for demuxer in GAME_DEMUXERS.into_iter() {
+    for demuxer in GAME_DEMUXERS.iter() {
         rd.add_demuxer(*demuxer);
     }
 }