]> git.nihav.org Git - nihav.git/blob - nihav-realmedia/src/codecs/mod.rs
468296c4e1637c35b07d964df325721a6cc348be
[nihav.git] / nihav-realmedia / 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(any(feature="decoder_realvideo3", feature="decoder_realvideo4"))]
13 #[allow(clippy::too_many_arguments)]
14 mod rv3040;
15 #[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4", feature="encoder_realvideo4"))]
16 #[allow(clippy::erasing_op)]
17 mod 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)]
24 mod rv34dsp;
25
26 #[cfg(feature="decoder_realvideo1")]
27 pub mod rv10;
28 #[cfg(feature="decoder_realvideo2")]
29 pub mod rv20;
30 #[cfg(feature="decoder_realvideo3")]
31 pub 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)]
36 pub mod rv30dsp;
37 #[cfg(feature="decoder_realvideo4")]
38 pub mod rv40;
39 #[cfg(any(feature="decoder_realvideo4", feature="encoder_realvideo4"))]
40 pub 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)]
46 pub mod rv40dsp;
47 #[cfg(feature="decoder_realvideo6")]
48 pub mod rv60;
49 #[cfg(feature="decoder_realvideo6")]
50 #[allow(clippy::identity_op)]
51 #[allow(clippy::too_many_arguments)]
52 pub 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)]
58 pub mod rv60dsp;
59
60 #[cfg(feature="decoder_realaudio144")]
61 pub mod ra144;
62 #[cfg(feature="decoder_realaudio288")]
63 pub mod ra288;
64 #[cfg(feature="decoder_cook")]
65 pub mod cook;
66 #[cfg(any(feature="decoder_cook", feature="encoder_cook"))]
67 pub mod cookdata;
68 #[cfg(feature="decoder_ralf")]
69 pub mod ralf;
70
71 const 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.
94 pub 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")]
101 mod cookenc;
102
103 #[cfg(feature="encoder_realvideo4")]
104 mod rv40enc;
105
106 #[cfg(feature="encoders")]
107 const 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")]
117 pub fn realmedia_register_all_encoders(re: &mut RegisteredEncoders) {
118 for encoder in ENCODERS.iter() {
119 re.add_encoder(*encoder);
120 }
121 }