]> git.nihav.org Git - nihav.git/blame - nihav-realmedia/src/codecs/mod.rs
avimux: do not record palette change chunks in OpenDML index
[nihav.git] / nihav-realmedia / src / codecs / mod.rs
CommitLineData
5641dccf
KS
1use nihav_core::codecs::*;
2
71d7f397 3#[cfg(debug_assertions)]
5641dccf
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}
5641dccf
KS
11
12#[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4"))]
d92111a8 13#[allow(clippy::too_many_arguments)]
5641dccf 14mod rv3040;
4965a5e5 15#[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4", feature="encoder_realvideo4"))]
61d3e294 16#[allow(clippy::erasing_op)]
5641dccf
KS
17mod rv34codes;
18#[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4"))]
d92111a8 19#[allow(clippy::collapsible_else_if)]
61d3e294 20#[allow(clippy::erasing_op)]
d92111a8 21#[allow(clippy::identity_op)]
e07387c7 22#[allow(clippy::many_single_char_names)]
d92111a8 23#[allow(clippy::too_many_arguments)]
5641dccf
KS
24mod rv34dsp;
25
26#[cfg(feature="decoder_realvideo1")]
27pub mod rv10;
28#[cfg(feature="decoder_realvideo2")]
29pub mod rv20;
30#[cfg(feature="decoder_realvideo3")]
31pub mod rv30;
32#[cfg(feature="decoder_realvideo3")]
e07387c7
KS
33#[allow(clippy::many_single_char_names)]
34#[allow(clippy::neg_multiply)]
d92111a8 35#[allow(clippy::too_many_arguments)]
5641dccf
KS
36pub mod rv30dsp;
37#[cfg(feature="decoder_realvideo4")]
38pub mod rv40;
4965a5e5 39#[cfg(any(feature="decoder_realvideo4", feature="encoder_realvideo4"))]
eb904044
KS
40pub mod rv40data;
41#[cfg(feature="decoder_realvideo4")]
d92111a8 42#[allow(clippy::eq_op)]
61d3e294 43#[allow(clippy::erasing_op)]
e07387c7 44#[allow(clippy::many_single_char_names)]
d92111a8 45#[allow(clippy::too_many_arguments)]
5641dccf
KS
46pub mod rv40dsp;
47#[cfg(feature="decoder_realvideo6")]
48pub mod rv60;
49#[cfg(feature="decoder_realvideo6")]
d92111a8
KS
50#[allow(clippy::identity_op)]
51#[allow(clippy::too_many_arguments)]
5641dccf
KS
52pub mod rv60codes;
53#[cfg(feature="decoder_realvideo6")]
61d3e294 54#[allow(clippy::erasing_op)]
d92111a8 55#[allow(clippy::identity_op)]
e07387c7 56#[allow(clippy::many_single_char_names)]
d92111a8 57#[allow(clippy::too_many_arguments)]
5641dccf
KS
58pub mod rv60dsp;
59
60#[cfg(feature="decoder_realaudio144")]
61pub mod ra144;
62#[cfg(feature="decoder_realaudio288")]
63pub mod ra288;
64#[cfg(feature="decoder_cook")]
65pub mod cook;
f5c7ce01 66#[cfg(any(feature="decoder_cook", feature="encoder_cook"))]
38c78f36 67pub mod cookdata;
5641dccf
KS
68#[cfg(feature="decoder_ralf")]
69pub mod ralf;
70
71const RM_CODECS: &[DecoderInfo] = &[
72#[cfg(feature="decoder_realvideo1")]
73 DecoderInfo { name: "realvideo1", get_decoder: rv10::get_decoder },
74#[cfg(feature="decoder_realvideo2")]
75 DecoderInfo { name: "realvideo2", get_decoder: rv20::get_decoder },
76#[cfg(feature="decoder_realvideo3")]
77 DecoderInfo { name: "realvideo3", get_decoder: rv30::get_decoder },
78#[cfg(feature="decoder_realvideo4")]
79 DecoderInfo { name: "realvideo4", get_decoder: rv40::get_decoder },
80#[cfg(feature="decoder_realvideo6")]
81 DecoderInfo { name: "realvideo6", get_decoder: rv60::get_decoder },
82
83#[cfg(feature="decoder_realaudio144")]
84 DecoderInfo { name: "ra14.4", get_decoder: ra144::get_decoder },
85#[cfg(feature="decoder_realaudio288")]
86 DecoderInfo { name: "ra28.8", get_decoder: ra288::get_decoder },
87#[cfg(feature="decoder_cook")]
88 DecoderInfo { name: "cook", get_decoder: cook::get_decoder },
89#[cfg(feature="decoder_ralf")]
90 DecoderInfo { name: "ralf", get_decoder: ralf::get_decoder },
91];
92
e64739f8 93/// Registers all available codecs provided by this crate.
78fb6560 94pub fn realmedia_register_all_decoders(rd: &mut RegisteredDecoders) {
61d3e294 95 for decoder in RM_CODECS.iter() {
b7c882c1 96 rd.add_decoder(*decoder);
5641dccf
KS
97 }
98}
f5c7ce01
KS
99
100#[cfg(feature="encoder_cook")]
101mod cookenc;
102
d8bb71fe 103#[cfg(feature="encoder_realvideo4")]
4965a5e5
KS
104mod rv40enc;
105
f5c7ce01
KS
106#[cfg(feature="encoders")]
107const ENCODERS: &[EncoderInfo] = &[
108#[cfg(feature="encoder_cook")]
109 EncoderInfo { name: "cook", get_encoder: cookenc::get_encoder },
4965a5e5 110
d8bb71fe 111#[cfg(feature="encoder_realvideo4")]
4965a5e5 112 EncoderInfo { name: "realvideo4", get_encoder: rv40enc::get_encoder },
f5c7ce01
KS
113];
114
115/// Registers all available encoders provided by this crate.
116#[cfg(feature="encoders")]
117pub fn realmedia_register_all_encoders(re: &mut RegisteredEncoders) {
118 for encoder in ENCODERS.iter() {
119 re.add_encoder(*encoder);
120 }
121}