f5939fd529821fd2f62001e1ab9a1ada16a84428
[nihav.git] / nihav-ms / src / codecs / mod.rs
1 use nihav_core::codecs::*;
2
3 macro_rules! validate {
4 ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
5 }
6
7 #[cfg(feature="decoder_msvideo1")]
8 pub mod msvideo1;
9
10 #[cfg(feature="decoder_ima_adpcm_ms")]
11 pub mod imaadpcm;
12
13 #[cfg(any(feature="decoder_ms_adpcm", feature="encoder_ms_adpcm"))]
14 pub mod msadpcm;
15
16 const MS_CODECS: &[DecoderInfo] = &[
17 #[cfg(feature="decoder_msvideo1")]
18 DecoderInfo { name: "msvideo1", get_decoder: msvideo1::get_decoder },
19 #[cfg(feature="decoder_ima_adpcm_ms")]
20 DecoderInfo { name: "ima-adpcm-ms", get_decoder: imaadpcm::get_decoder },
21 #[cfg(feature="decoder_ms_adpcm")]
22 DecoderInfo { name: "ms-adpcm", get_decoder: msadpcm::get_decoder },
23 ];
24
25 /// Registers all available codecs provided by this crate.
26 pub fn ms_register_all_codecs(rd: &mut RegisteredDecoders) {
27 for decoder in MS_CODECS.iter() {
28 rd.add_decoder(decoder.clone());
29 }
30 }
31
32 #[cfg(feature="encoder_msvideo1")]
33 pub mod msvideo1enc;
34
35 const MS_ENCODERS: &[EncoderInfo] = &[
36 #[cfg(feature="encoder_msvideo1")]
37 EncoderInfo { name: "msvideo1", get_encoder: msvideo1enc::get_encoder },
38 #[cfg(feature="encoder_ms_adpcm")]
39 EncoderInfo { name: "ms-adpcm", get_encoder: msadpcm::get_encoder },
40 ];
41
42 /// Registers all available encoders provided by this crate.
43 pub fn ms_register_all_encoders(re: &mut RegisteredEncoders) {
44 for encoder in MS_ENCODERS.iter() {
45 re.add_encoder(encoder.clone());
46 }
47 }