]> git.nihav.org Git - nihav.git/blame_incremental - 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
1use nihav_core::codecs::*;
2
3#[cfg(debug_assertions)]
4macro_rules! validate {
5 ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
6}
7#[cfg(not(debug_assertions))]
8macro_rules! validate {
9 ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } };
10}
11
12#[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4"))]
13#[allow(clippy::too_many_arguments)]
14mod rv3040;
15#[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4", feature="encoder_realvideo4"))]
16#[allow(clippy::erasing_op)]
17mod rv34codes;
18#[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4"))]
19#[allow(clippy::collapsible_else_if)]
20#[allow(clippy::erasing_op)]
21#[allow(clippy::identity_op)]
22#[allow(clippy::many_single_char_names)]
23#[allow(clippy::too_many_arguments)]
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")]
33#[allow(clippy::many_single_char_names)]
34#[allow(clippy::neg_multiply)]
35#[allow(clippy::too_many_arguments)]
36pub mod rv30dsp;
37#[cfg(feature="decoder_realvideo4")]
38pub mod rv40;
39#[cfg(any(feature="decoder_realvideo4", feature="encoder_realvideo4"))]
40pub mod rv40data;
41#[cfg(feature="decoder_realvideo4")]
42#[allow(clippy::eq_op)]
43#[allow(clippy::erasing_op)]
44#[allow(clippy::many_single_char_names)]
45#[allow(clippy::too_many_arguments)]
46pub mod rv40dsp;
47#[cfg(feature="decoder_realvideo6")]
48pub mod rv60;
49#[cfg(feature="decoder_realvideo6")]
50#[allow(clippy::identity_op)]
51#[allow(clippy::too_many_arguments)]
52pub mod rv60codes;
53#[cfg(feature="decoder_realvideo6")]
54#[allow(clippy::erasing_op)]
55#[allow(clippy::identity_op)]
56#[allow(clippy::many_single_char_names)]
57#[allow(clippy::too_many_arguments)]
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;
66#[cfg(any(feature="decoder_cook", feature="encoder_cook"))]
67pub mod cookdata;
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
93/// Registers all available codecs provided by this crate.
94pub fn realmedia_register_all_decoders(rd: &mut RegisteredDecoders) {
95 for decoder in RM_CODECS.iter() {
96 rd.add_decoder(*decoder);
97 }
98}
99
100#[cfg(feature="encoder_cook")]
101mod cookenc;
102
103#[cfg(feature="encoder_realvideo4")]
104mod rv40enc;
105
106#[cfg(feature="encoders")]
107const ENCODERS: &[EncoderInfo] = &[
108#[cfg(feature="encoder_cook")]
109 EncoderInfo { name: "cook", get_encoder: cookenc::get_encoder },
110
111#[cfg(feature="encoder_realvideo4")]
112 EncoderInfo { name: "realvideo4", get_encoder: rv40enc::get_encoder },
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}