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