]> git.nihav.org Git - nihav.git/blobdiff - nihav-itu/src/codecs/mod.rs
h264: add multi-threaded decoder
[nihav.git] / nihav-itu / src / codecs / mod.rs
index ac1f7d6d68aec57ea6fc6d4a8a32ca73363fb4a4..a3873bf5c34f65222ac6b8e7a72f7702941f71a3 100644 (file)
@@ -1,8 +1,13 @@
 use nihav_core::codecs::*;
 
+#[cfg(debug_assertions)]
 macro_rules! validate {
     ($a:expr) => { if !$a { println!("check failed at {}:{}", file!(), line!()); return Err(DecoderError::InvalidData); } };
 }
+#[cfg(not(debug_assertions))]
+macro_rules! validate {
+    ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } };
+}
 
 #[allow(clippy::collapsible_else_if)]
 #[allow(clippy::too_many_arguments)]
@@ -21,3 +26,15 @@ pub fn itu_register_all_decoders(rd: &mut RegisteredDecoders) {
         rd.add_decoder(*decoder);
     }
 }
+
+const ITU_MT_CODECS: &[MTDecoderInfo] = &[
+#[cfg(feature="decoder_h264")]
+    MTDecoderInfo { name: "h264", get_decoder: h264::get_decoder_mt },
+];
+
+/// Registers all available multi-threaded decoders provided by this crate.
+pub fn itu_register_all_mt_decoders(rd: &mut RegisteredMTDecoders) {
+    for decoder in ITU_MT_CODECS.iter() {
+        rd.add_decoder(*decoder);
+    }
+}