make validate!() print message only in debug builds
[nihav.git] / nihav-qt / src / codecs / mod.rs
CommitLineData
4c1582cf
KS
1use nihav_core::codecs::*;
2
71d7f397 3#[cfg(debug_assertions)]
4c1582cf
KS
4macro_rules! validate {
5 ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
6}
71d7f397
KS
7#[cfg(not(debug_assertions))]
8macro_rules! validate {
9 ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } };
10}
4c1582cf
KS
11
12#[cfg(feature="decoder_rle")]
13mod rle;
14
15#[cfg(feature="decoder_rpza")]
16mod rpza;
17
18#[cfg(feature="decoder_smc")]
19mod smc;
20
21#[cfg(feature="decoder_svq1")]
22mod svq1;
23#[cfg(feature="decoder_svq1")]
24mod 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)]
32mod 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)]
40mod svq3dsp;
41
40494a85
KS
42#[cfg(feature="decoder_alac")]
43mod alac;
44
4c1582cf
KS
45#[cfg(feature="decoder_ima_adpcm_qt")]
46mod imaadpcm;
47
48#[cfg(feature="decoder_mace")]
49mod mace;
50
51#[cfg(any(feature="decoder_qdm",feature="decoder_qdm2"))]
52#[allow(clippy::unreadable_literal)]
53mod qdmcommon;
54#[cfg(feature="decoder_qdm")]
55#[allow(clippy::needless_range_loop)]
56#[allow(clippy::unreadable_literal)]
57mod qdmc;
58#[cfg(feature="decoder_qdm2")]
59#[allow(clippy::needless_range_loop)]
60#[allow(clippy::excessive_precision)]
61#[allow(clippy::unreadable_literal)]
62mod qdm2fft;
63#[cfg(feature="decoder_qdm2")]
64#[allow(clippy::needless_range_loop)]
65#[allow(clippy::excessive_precision)]
66#[allow(clippy::unreadable_literal)]
67mod qdm2qmf;
68#[cfg(feature="decoder_qdm2")]
69#[allow(clippy::excessive_precision)]
70#[allow(clippy::unreadable_literal)]
71mod qdm2;
72
73const 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 },
40494a85
KS
84#[cfg(feature="decoder_alac")]
85 DecoderInfo { name: "alac", get_decoder: alac::get_decoder },
4c1582cf
KS
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.
78fb6560 99pub fn qt_register_all_decoders(rd: &mut RegisteredDecoders) {
4c1582cf 100 for decoder in QT_CODECS.iter() {
b7c882c1 101 rd.add_decoder(*decoder);
4c1582cf
KS
102 }
103}