]> git.nihav.org Git - nihav.git/blame - nihav-commonfmt/src/codecs/mod.rs
avimux: do not record palette change chunks in OpenDML index
[nihav.git] / nihav-commonfmt / src / codecs / mod.rs
CommitLineData
38953fb5
KS
1use nihav_core::codecs::*;
2
71d7f397 3#[cfg(debug_assertions)]
38953fb5
KS
4macro_rules! validate {
5 ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
71d7f397
KS
6}
7#[cfg(not(debug_assertions))]
8macro_rules! validate {
9 ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } };
38953fb5
KS
10}
11
57777a0a
KS
12#[cfg(feature="decoder_cinepak")]
13mod cinepak;
38953fb5 14#[cfg(feature="decoder_clearvideo")]
ba8718ff 15#[allow(clippy::too_many_arguments)]
38953fb5 16mod clearvideo;
fc39649d
KS
17#[cfg(feature="decoder_gif")]
18mod gif;
b5e49861 19#[cfg(feature="decoder_jpeg")]
ba8718ff 20#[allow(clippy::manual_range_contains)]
b5e49861 21mod jpeg;
a715e99f
KS
22#[cfg(feature="decoder_rawvideo")]
23mod rawvideo;
9a59c451
KS
24#[cfg(feature="decoder_rawvideo_ms")]
25mod rawvideo_ms;
19336baf
KS
26#[cfg(feature="decoder_zmbv")]
27mod zmbv;
38953fb5 28
38953fb5 29#[cfg(feature="decoder_atrac3")]
ba8718ff 30#[allow(clippy::excessive_precision)]
61cab15b 31#[allow(clippy::identity_op)]
38953fb5 32mod atrac3;
f5c54c10 33#[cfg(any(feature="decoder_pcm",feature="encoder_pcm"))]
38953fb5
KS
34mod pcm;
35#[cfg(feature="decoder_sipro")]
ba8718ff 36#[allow(clippy::excessive_precision)]
61cab15b 37#[allow(clippy::identity_op)]
38953fb5
KS
38mod sipro;
39#[cfg(feature="decoder_ts102366")]
ba8718ff 40#[allow(clippy::needless_range_loop)]
38953fb5
KS
41mod ts102366;
42
820b4331 43#[cfg(feature="decoders")]
38953fb5 44const DECODERS: &[DecoderInfo] = &[
57777a0a
KS
45#[cfg(feature="decoder_cinepak")]
46 DecoderInfo { name: "cinepak", get_decoder: cinepak::get_decoder },
38953fb5
KS
47#[cfg(feature="decoder_clearvideo")]
48 DecoderInfo { name: "clearvideo", get_decoder: clearvideo::get_decoder },
49#[cfg(feature="decoder_clearvideo")]
50 DecoderInfo { name: "clearvideo_rm", get_decoder: clearvideo::get_decoder_rm },
fc39649d
KS
51#[cfg(feature="decoder_gif")]
52 DecoderInfo { name: "gif", get_decoder: gif::get_decoder },
b5e49861
KS
53#[cfg(feature="decoder_jpeg")]
54 DecoderInfo { name: "jpeg", get_decoder: jpeg::get_decoder },
a715e99f
KS
55#[cfg(feature="decoder_rawvideo")]
56 DecoderInfo { name: "rawvideo", get_decoder: rawvideo::get_decoder },
9a59c451
KS
57#[cfg(feature="decoder_rawvideo_ms")]
58 DecoderInfo { name: "rawvideo-ms", get_decoder: rawvideo_ms::get_decoder },
19336baf
KS
59#[cfg(feature="decoder_zmbv")]
60 DecoderInfo { name: "zmbv", get_decoder: zmbv::get_decoder },
38953fb5
KS
61
62#[cfg(feature="decoder_pcm")]
63 DecoderInfo { name: "pcm", get_decoder: pcm::get_decoder },
67a31585
KS
64#[cfg(feature="decoder_pcm")]
65 DecoderInfo { name: "alaw", get_decoder: pcm::get_a_law_decoder },
66#[cfg(feature="decoder_pcm")]
67 DecoderInfo { name: "ulaw", get_decoder: pcm::get_mu_law_decoder },
38953fb5
KS
68#[cfg(feature="decoder_sipro")]
69 DecoderInfo { name: "sipro", get_decoder: sipro::get_decoder },
70#[cfg(feature="decoder_ts102366")]
71 DecoderInfo { name: "ac3", get_decoder: ts102366::get_decoder },
72#[cfg(feature="decoder_atrac3")]
73 DecoderInfo { name: "atrac3", get_decoder: atrac3::get_decoder },
38953fb5
KS
74];
75
e64739f8 76/// Registers all available codecs provided by this crate.
820b4331 77#[cfg(feature="decoders")]
78fb6560 78pub fn generic_register_all_decoders(rd: &mut RegisteredDecoders) {
c83013a1 79 for decoder in DECODERS.iter() {
b7c882c1 80 rd.add_decoder(*decoder);
38953fb5
KS
81 }
82}
a178c22c
KS
83
84#[cfg(feature="encoder_cinepak")]
85mod cinepakenc;
fc39649d
KS
86#[cfg(feature="encoder_gif")]
87mod gifenc;
b36906e8
KS
88#[cfg(feature="encoder_rawvideo")]
89mod rawvideoenc;
bc815545
KS
90#[cfg(feature="encoder_rawvideo")]
91mod rawvideomsenc;
f1787005
KS
92#[cfg(feature="encoder_zmbv")]
93mod zmbvenc;
a178c22c 94
820b4331 95#[cfg(feature="encoders")]
a178c22c
KS
96const ENCODERS: &[EncoderInfo] = &[
97#[cfg(feature="encoder_cinepak")]
98 EncoderInfo { name: "cinepak", get_encoder: cinepakenc::get_encoder },
fc39649d
KS
99#[cfg(feature="encoder_gif")]
100 EncoderInfo { name: "gif", get_encoder: gifenc::get_encoder },
b36906e8
KS
101#[cfg(feature="encoder_rawvideo")]
102 EncoderInfo { name: "rawvideo", get_encoder: rawvideoenc::get_encoder },
bc815545
KS
103#[cfg(feature="encoder_rawvideo")]
104 EncoderInfo { name: "rawvideo-ms", get_encoder: rawvideomsenc::get_encoder },
f1787005
KS
105#[cfg(feature="encoder_zmbv")]
106 EncoderInfo { name: "zmbv", get_encoder: zmbvenc::get_encoder },
f5c54c10
KS
107
108#[cfg(feature="encoder_pcm")]
109 EncoderInfo { name: "pcm", get_encoder: pcm::get_encoder },
a178c22c
KS
110];
111
112/// Registers all available encoders provided by this crate.
820b4331 113#[cfg(feature="encoders")]
a178c22c
KS
114pub fn generic_register_all_encoders(re: &mut RegisteredEncoders) {
115 for encoder in ENCODERS.iter() {
b7c882c1 116 re.add_encoder(*encoder);
a178c22c
KS
117 }
118}
119