1 use nihav_core::codecs::*;
3 #[cfg(debug_assertions)]
4 macro_rules! validate {
5 ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
7 #[cfg(not(debug_assertions))]
8 macro_rules! validate {
9 ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } };
12 #[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4"))]
13 #[allow(clippy::too_many_arguments)]
15 #[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4", feature="encoder_realvideo4"))]
16 #[allow(clippy::erasing_op)]
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)]
26 #[cfg(feature="decoder_realvideo1")]
28 #[cfg(feature="decoder_realvideo2")]
30 #[cfg(feature="decoder_realvideo3")]
32 #[cfg(feature="decoder_realvideo3")]
33 #[allow(clippy::many_single_char_names)]
34 #[allow(clippy::neg_multiply)]
35 #[allow(clippy::too_many_arguments)]
37 #[cfg(feature="decoder_realvideo4")]
39 #[cfg(any(feature="decoder_realvideo4", feature="encoder_realvideo4"))]
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)]
47 #[cfg(feature="decoder_realvideo6")]
49 #[cfg(feature="decoder_realvideo6")]
50 #[allow(clippy::identity_op)]
51 #[allow(clippy::too_many_arguments)]
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)]
60 #[cfg(feature="decoder_realaudio144")]
62 #[cfg(feature="decoder_realaudio288")]
64 #[cfg(feature="decoder_cook")]
66 #[cfg(any(feature="decoder_cook", feature="encoder_cook"))]
68 #[cfg(feature="decoder_ralf")]
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 },
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 },
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);
100 #[cfg(feature="encoder_cook")]
103 #[cfg(feature="encoder_realvideo4")]
106 #[cfg(feature="encoders")]
107 const ENCODERS: &[EncoderInfo] = &[
108 #[cfg(feature="encoder_cook")]
109 EncoderInfo { name: "cook", get_encoder: cookenc::get_encoder },
111 #[cfg(feature="encoder_realvideo4")]
112 EncoderInfo { name: "realvideo4", get_encoder: rv40enc::get_encoder },
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);