make validate!() print message only in debug builds
[nihav.git] / nihav-qt / src / codecs / mod.rs
1 use nihav_core::codecs::*;
2
3 #[cfg(debug_assertions)]
4 macro_rules! validate {
5 ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
6 }
7 #[cfg(not(debug_assertions))]
8 macro_rules! validate {
9 ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } };
10 }
11
12 #[cfg(feature="decoder_rle")]
13 mod rle;
14
15 #[cfg(feature="decoder_rpza")]
16 mod rpza;
17
18 #[cfg(feature="decoder_smc")]
19 mod smc;
20
21 #[cfg(feature="decoder_svq1")]
22 mod svq1;
23 #[cfg(feature="decoder_svq1")]
24 mod svq1data;
25
26 #[cfg(feature="decoder_svq3")]
27 #[allow(clippy::collapsible_if)]
28 #[allow(clippy::identity_op)]
29 #[allow(clippy::needless_range_loop)]
30 #[allow(clippy::too_many_arguments)]
31 #[allow(clippy::verbose_bit_mask)]
32 mod svq3;
33 #[cfg(feature="decoder_svq3")]
34 #[allow(clippy::collapsible_if)]
35 #[allow(clippy::erasing_op)]
36 #[allow(clippy::identity_op)]
37 #[allow(clippy::many_single_char_names)]
38 #[allow(clippy::needless_range_loop)]
39 #[allow(clippy::unreadable_literal)]
40 mod svq3dsp;
41
42 #[cfg(feature="decoder_alac")]
43 mod alac;
44
45 #[cfg(feature="decoder_ima_adpcm_qt")]
46 mod imaadpcm;
47
48 #[cfg(feature="decoder_mace")]
49 mod mace;
50
51 #[cfg(any(feature="decoder_qdm",feature="decoder_qdm2"))]
52 #[allow(clippy::unreadable_literal)]
53 mod qdmcommon;
54 #[cfg(feature="decoder_qdm")]
55 #[allow(clippy::needless_range_loop)]
56 #[allow(clippy::unreadable_literal)]
57 mod qdmc;
58 #[cfg(feature="decoder_qdm2")]
59 #[allow(clippy::needless_range_loop)]
60 #[allow(clippy::excessive_precision)]
61 #[allow(clippy::unreadable_literal)]
62 mod qdm2fft;
63 #[cfg(feature="decoder_qdm2")]
64 #[allow(clippy::needless_range_loop)]
65 #[allow(clippy::excessive_precision)]
66 #[allow(clippy::unreadable_literal)]
67 mod qdm2qmf;
68 #[cfg(feature="decoder_qdm2")]
69 #[allow(clippy::excessive_precision)]
70 #[allow(clippy::unreadable_literal)]
71 mod qdm2;
72
73 const QT_CODECS: &[DecoderInfo] = &[
74 #[cfg(feature="decoder_rle")]
75 DecoderInfo { name: "qt-rle", get_decoder: rle::get_decoder },
76 #[cfg(feature="decoder_rpza")]
77 DecoderInfo { name: "apple-video", get_decoder: rpza::get_decoder },
78 #[cfg(feature="decoder_smc")]
79 DecoderInfo { name: "qt-smc", get_decoder: smc::get_decoder },
80 #[cfg(feature="decoder_svq1")]
81 DecoderInfo { name: "sorenson-video", get_decoder: svq1::get_decoder },
82 #[cfg(feature="decoder_svq3")]
83 DecoderInfo { name: "sorenson-video3", get_decoder: svq3::get_decoder },
84 #[cfg(feature="decoder_alac")]
85 DecoderInfo { name: "alac", get_decoder: alac::get_decoder },
86 #[cfg(feature="decoder_ima_adpcm_qt")]
87 DecoderInfo { name: "ima-adpcm-qt", get_decoder: imaadpcm::get_decoder },
88 #[cfg(feature="decoder_mace")]
89 DecoderInfo { name: "mace-3", get_decoder: mace::get_decoder_3 },
90 #[cfg(feature="decoder_mace")]
91 DecoderInfo { name: "mace-6", get_decoder: mace::get_decoder_6 },
92 #[cfg(feature="decoder_qdm")]
93 DecoderInfo { name: "qdesign-music", get_decoder: qdmc::get_decoder },
94 #[cfg(feature="decoder_qdm2")]
95 DecoderInfo { name: "qdesign-music2", get_decoder: qdm2::get_decoder },
96 ];
97
98 /// Registers all available codecs provided by this crate.
99 pub fn qt_register_all_decoders(rd: &mut RegisteredDecoders) {
100 for decoder in QT_CODECS.iter() {
101 rd.add_decoder(*decoder);
102 }
103 }