]> git.nihav.org Git - nihav.git/blob - nihav-game/src/demuxers/mod.rs
avi: fix handling of multiple palette changes in single 'pc' chunk
[nihav.git] / nihav-game / src / demuxers / mod.rs
1 use nihav_core::demuxers::*;
2
3 #[allow(unused_macros)]
4 #[cfg(debug_assertions)]
5 macro_rules! validate {
6 ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DemuxerError::InvalidData); } };
7 }
8 #[cfg(not(debug_assertions))]
9 macro_rules! validate {
10 ($a:expr) => { if !$a { return Err(DemuxerError::InvalidData); } };
11 }
12
13 #[cfg(any(feature="demuxer_bmv",feature="demuxer_bmv3"))]
14 mod bmv;
15 #[cfg(feature="demuxer_cnm")]
16 mod cnm;
17 #[cfg(any(feature="demuxer_fst",feature="demuxer_fcmp"))]
18 mod fst;
19 #[cfg(feature="demuxer_gdv")]
20 mod gdv;
21 #[cfg(feature="demuxer_hl_fmv")]
22 mod hl_fmv;
23 #[cfg(feature="demuxer_imax")]
24 mod imax;
25 #[cfg(feature="demuxer_q")]
26 mod q;
27 #[cfg(feature="demuxer_rbt")]
28 mod rbt;
29 #[cfg(feature="demuxer_seq")]
30 mod seq;
31 #[cfg(feature="demuxer_sga")]
32 mod sga;
33 #[cfg(feature="demuxer_siff")]
34 mod siff;
35 #[cfg(feature="demuxer_smush")]
36 mod smush;
37 #[cfg(feature="demuxer_vmd")]
38 mod vmd;
39 #[cfg(feature="demuxer_vx")]
40 mod vx;
41
42 const GAME_DEMUXERS: &[&dyn DemuxerCreator] = &[
43 #[cfg(feature="demuxer_bmv")]
44 &bmv::BMVDemuxerCreator {},
45 #[cfg(feature="demuxer_bmv3")]
46 &bmv::BMV3DemuxerCreator {},
47 #[cfg(feature="demuxer_cnm")]
48 &cnm::CNMDemuxerCreator {},
49 #[cfg(feature="demuxer_fcmp")]
50 &fst::FCMPDemuxerCreator {},
51 #[cfg(feature="demuxer_fst")]
52 &fst::FSTDemuxerCreator {},
53 #[cfg(feature="demuxer_gdv")]
54 &gdv::GDVDemuxerCreator {},
55 #[cfg(feature="demuxer_hl_fmv")]
56 &hl_fmv::HighlanderFMVDemuxerCreator {},
57 #[cfg(feature="demuxer_imax")]
58 &imax::IMAXDemuxerCreator {},
59 #[cfg(feature="demuxer_q")]
60 &q::QDemuxerCreator {},
61 #[cfg(feature="demuxer_rbt")]
62 &rbt::RobotDemuxerCreator {},
63 #[cfg(feature="demuxer_seq")]
64 &seq::SequenceDemuxerCreator {},
65 #[cfg(feature="demuxer_sga")]
66 &sga::SGADemuxerCreator {},
67 #[cfg(feature="demuxer_siff")]
68 &siff::SIFFDemuxerCreator {},
69 #[cfg(feature="demuxer_smush")]
70 &smush::SmushDemuxerCreator {},
71 #[cfg(feature="demuxer_smush")]
72 &smush::MCMPDemuxerCreator {},
73 #[cfg(feature="demuxer_vmd")]
74 &vmd::VMDDemuxerCreator {},
75 #[cfg(feature="demuxer_vx")]
76 &vx::VXDemuxerCreator {},
77 ];
78
79 /// Registers all available demuxers provided by this crate.
80 pub fn game_register_all_demuxers(rd: &mut RegisteredDemuxers) {
81 for demuxer in GAME_DEMUXERS.iter() {
82 rd.add_demuxer(*demuxer);
83 }
84 }