739315b07105101eb634796c86291b2efd876859
[nihav.git] / nihav-ms / 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_msrle")]
13 pub mod msrle;
14
15 #[cfg(feature="decoder_msvideo1")]
16 pub mod msvideo1;
17
18 #[cfg(feature="decoder_ima_adpcm_ms")]
19 pub mod imaadpcm;
20
21 #[cfg(feature="encoder_ima_adpcm_ms")]
22 pub mod imaadpcmenc;
23
24 #[cfg(any(feature="decoder_ms_adpcm", feature="encoder_ms_adpcm"))]
25 pub mod msadpcm;
26
27 const MS_CODECS: &[DecoderInfo] = &[
28 #[cfg(feature="decoder_msrle")]
29 DecoderInfo { name: "msrle", get_decoder: msrle::get_decoder },
30 #[cfg(feature="decoder_msvideo1")]
31 DecoderInfo { name: "msvideo1", get_decoder: msvideo1::get_decoder },
32 #[cfg(feature="decoder_ima_adpcm_ms")]
33 DecoderInfo { name: "ima-adpcm-ms", get_decoder: imaadpcm::get_decoder },
34 #[cfg(feature="decoder_ms_adpcm")]
35 DecoderInfo { name: "ms-adpcm", get_decoder: msadpcm::get_decoder },
36 ];
37
38 /// Registers all available codecs provided by this crate.
39 pub fn ms_register_all_decoders(rd: &mut RegisteredDecoders) {
40 for decoder in MS_CODECS.iter() {
41 rd.add_decoder(*decoder);
42 }
43 }
44
45 #[cfg(feature="encoder_msvideo1")]
46 pub mod msvideo1enc;
47
48 const MS_ENCODERS: &[EncoderInfo] = &[
49 #[cfg(feature="encoder_msvideo1")]
50 EncoderInfo { name: "msvideo1", get_encoder: msvideo1enc::get_encoder },
51 #[cfg(feature="encoder_ms_adpcm")]
52 EncoderInfo { name: "ms-adpcm", get_encoder: msadpcm::get_encoder },
53 #[cfg(feature="encoder_ima_adpcm_ms")]
54 EncoderInfo { name: "ima-adpcm-ms", get_encoder: imaadpcmenc::get_encoder },
55 ];
56
57 /// Registers all available encoders provided by this crate.
58 pub fn ms_register_all_encoders(re: &mut RegisteredEncoders) {
59 for encoder in MS_ENCODERS.iter() {
60 re.add_encoder(*encoder);
61 }
62 }