add A-law and mu-law decoders
[nihav.git] / nihav-commonfmt / src / codecs / mod.rs
index 886b8076c2aa126cf2761a1b043701024032d67a..99c9e7bb82cda63da8b5f90cb3c81e2e67bed675 100644 (file)
@@ -4,6 +4,8 @@ macro_rules! validate {
     ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
 }
 
+#[cfg(feature="decoder_cinepak")]
+mod cinepak;
 #[cfg(feature="decoder_clearvideo")]
 mod clearvideo;
 
@@ -11,7 +13,7 @@ mod clearvideo;
 mod aac;
 #[cfg(feature="decoder_atrac3")]
 mod atrac3;
-#[cfg(feature="decoder_pcm")]
+#[cfg(any(feature="decoder_pcm",feature="encoder_pcm"))]
 mod pcm;
 #[cfg(feature="decoder_sipro")]
 mod sipro;
@@ -19,6 +21,8 @@ mod sipro;
 mod ts102366;
 
 const DECODERS: &[DecoderInfo] = &[
+#[cfg(feature="decoder_cinepak")]
+    DecoderInfo { name: "cinepak", get_decoder: cinepak::get_decoder },
 #[cfg(feature="decoder_clearvideo")]
     DecoderInfo { name: "clearvideo", get_decoder: clearvideo::get_decoder },
 #[cfg(feature="decoder_clearvideo")]
@@ -26,6 +30,10 @@ const DECODERS: &[DecoderInfo] = &[
 
 #[cfg(feature="decoder_pcm")]
     DecoderInfo { name: "pcm", get_decoder: pcm::get_decoder },
+#[cfg(feature="decoder_pcm")]
+    DecoderInfo { name: "alaw", get_decoder: pcm::get_a_law_decoder },
+#[cfg(feature="decoder_pcm")]
+    DecoderInfo { name: "ulaw", get_decoder: pcm::get_mu_law_decoder },
 #[cfg(feature="decoder_sipro")]
     DecoderInfo { name: "sipro", get_decoder: sipro::get_decoder },
 #[cfg(feature="decoder_ts102366")]
@@ -36,8 +44,28 @@ const DECODERS: &[DecoderInfo] = &[
     DecoderInfo { name: "aac", get_decoder: aac::get_decoder },
 ];
 
+/// Registers all available codecs provided by this crate.
 pub fn generic_register_all_codecs(rd: &mut RegisteredDecoders) {
-    for decoder in DECODERS.into_iter() {
+    for decoder in DECODERS.iter() {
         rd.add_decoder(decoder.clone());
     }
 }
+
+#[cfg(feature="encoder_cinepak")]
+mod cinepakenc;
+
+const ENCODERS: &[EncoderInfo] = &[
+#[cfg(feature="encoder_cinepak")]
+    EncoderInfo { name: "cinepak", get_encoder: cinepakenc::get_encoder },
+
+#[cfg(feature="encoder_pcm")]
+    EncoderInfo { name: "pcm", get_encoder: pcm::get_encoder },
+];
+
+/// Registers all available encoders provided by this crate.
+pub fn generic_register_all_encoders(re: &mut RegisteredEncoders) {
+    for encoder in ENCODERS.iter() {
+        re.add_encoder(encoder.clone());
+    }
+}
+