fix clippy warnings
[nihav.git] / nihav-core / src / muxers / mod.rs
index 9f40d54424349bd8c1914e31f1f0d9bb36220212..eb71df5ec36b2f7e57ee10f013ed5470bc2b112c 100644 (file)
@@ -74,10 +74,10 @@ pub struct Muxer<'a> {
 
 impl<'a> Muxer<'a> {
     /// Constructs a new `Muxer` instance.
-    fn new(mux: Box<dyn MuxCore<'a> + 'a>, str: StreamManager) -> Self {
+    fn new(mux: Box<dyn MuxCore<'a> + 'a>, strmgr: StreamManager) -> Self {
         Muxer {
             mux,
-            streams:    str,
+            streams:    strmgr,
         }
     }
     /// Returns a stream reference by its number.
@@ -97,11 +97,11 @@ impl<'a> Muxer<'a> {
         self.streams.iter()
     }
 
-    /// Demuxes a new packet from the container.
+    /// Queues a new packet for muxing.
     pub fn mux_frame(&mut self, pkt: NAPacket) -> MuxerResult<()> {
         self.mux.mux_frame(&self.streams, pkt)
     }
-    /// Returns internal seek index.
+    /// Flushes the current muxing state.
     pub fn flush(&mut self) -> MuxerResult<()> {
         self.mux.flush()
     }
@@ -111,6 +111,18 @@ impl<'a> Muxer<'a> {
     }
 }
 
+impl<'a> NAOptionHandler for Muxer<'a> {
+    fn get_supported_options(&self) -> &[NAOptionDefinition] {
+        self.mux.get_supported_options()
+    }
+    fn set_options(&mut self, options: &[NAOption]) {
+        self.mux.set_options(options);
+    }
+    fn query_option_value(&self, name: &str) -> Option<NAValue> {
+        self.mux.query_option_value(name)
+    }
+}
+
 /// The trait for creating muxers.
 pub trait MuxerCreator {
     /// Creates new muxer instance that will use `ByteWriter` for output.
@@ -122,16 +134,16 @@ pub trait MuxerCreator {
 }
 
 /// Creates muxer for a provided bytestream writer.
-pub fn create_muxer<'a>(mxcr: &MuxerCreator, str: StreamManager, bw: &'a mut ByteWriter<'a>) -> MuxerResult<Muxer<'a>> {
+pub fn create_muxer<'a>(mxcr: &dyn MuxerCreator, strmgr: StreamManager, bw: &'a mut ByteWriter<'a>) -> MuxerResult<Muxer<'a>> {
     let mut mux = mxcr.new_muxer(bw);
-    mux.create(&str)?;
-    Ok(Muxer::new(mux, str))
+    mux.create(&strmgr)?;
+    Ok(Muxer::new(mux, strmgr))
 }
 
 /// List of registered muxers.
 #[derive(Default)]
 pub struct RegisteredMuxers {
-    muxes:  Vec<&'static MuxerCreator>,
+    muxes:  Vec<&'static dyn MuxerCreator>,
 }
 
 impl RegisteredMuxers {
@@ -140,16 +152,15 @@ impl RegisteredMuxers {
         Self { muxes: Vec::new() }
     }
     /// Registers a new muxer.
-    pub fn add_muxer(&mut self, mux: &'static MuxerCreator) {
+    pub fn add_muxer(&mut self, mux: &'static dyn MuxerCreator) {
         self.muxes.push(mux);
     }
     /// Searches for a muxer that supports requested container format.
-    pub fn find_muxer(&self, name: &str) -> Option<&MuxerCreator> {
-        for &mux in self.muxes.iter() {
-            if mux.get_name() == name {
-                return Some(mux);
-            }
-        }
-        None
+    pub fn find_muxer(&self, name: &str) -> Option<&dyn MuxerCreator> {
+        self.muxes.iter().find(|&&mux| mux.get_name() == name).copied()
+    }
+    /// Provides an iterator over currently registered muxers.
+    pub fn iter(&self) -> std::slice::Iter<&dyn MuxerCreator> {
+        self.muxes.iter()
     }
 }