]> git.nihav.org Git - nihav.git/blobdiff - src/codecs/mod.rs
simplify error handling
[nihav.git] / src / codecs / mod.rs
index 782d4513a0d2dfe42b7cebeb0407373ca153e44c..7edcf9eb2e6cdb60ea3292f269505eca78908ea3 100644 (file)
@@ -3,7 +3,6 @@ pub mod indeo2;
 
 use std::rc::Rc;
 use frame::*;
-use demuxers::*;
 use io::byteio::ByteIOError;
 use io::bitreader::BitReaderError;
 use io::codebook::CodebookError;
@@ -42,3 +41,22 @@ pub trait NADecoder {
     fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<Rc<NAFrame>>;
 }
 
+#[derive(Clone,Copy)]
+pub struct DecoderInfo {
+    name: &'static str,
+    get_decoder: fn () -> Box<NADecoder>,
+}
+
+const DECODERS: &[DecoderInfo] = &[
+#[cfg(feature="decoder_indeo2")]
+    DecoderInfo { name: "indeo2", get_decoder: indeo2::get_decoder },
+];
+
+pub fn find_decoder(name: &str) -> Option<fn () -> Box<NADecoder>> {
+    for &dec in DECODERS {
+        if dec.name == name {
+            return Some(dec.get_decoder);
+        }
+    }
+    None
+}