cook: build multichannel map
[nihav.git] / nihav-realmedia / src / codecs / cook.rs
index 448ccae1e569ab7347792d2be581d4d3486e027b..b4e17f3f6f2163fc6a4df78956ba316f33858193 100644 (file)
@@ -456,7 +456,7 @@ impl CookChannelPair {
                 *out *= cur_gain;
                 cur_gain *= cur_gain2;
             }
-            for i in 0..self.samples { self.delay[ch][i] = dsp.out[i]; }
+            self.delay[ch][..self.samples].copy_from_slice(&dsp.out[..self.samples]);
         }
         Ok(())
     }
@@ -582,6 +582,7 @@ impl NADecoder for CookDecoder {
                             let pair_chmap = self.pairs[i].read_hdr_v2(&mut br)?;
                             self.pairs[i].start_ch = start_ch;
                             validate!((chmap & pair_chmap) == 0);
+                            chmap |= pair_chmap;
                             start_ch += self.pairs[i].mode.get_channels();
                         }
                         self.channels = start_ch;
@@ -676,6 +677,12 @@ impl NADecoder for CookDecoder {
     }
 }
 
+impl NAOptionHandler for CookDecoder {
+    fn get_supported_options(&self) -> &[NAOptionDefinition] { &[] }
+    fn set_options(&mut self, _options: &[NAOption]) { }
+    fn query_option_value(&self, _name: &str) -> Option<NAValue> { None }
+}
+
 pub fn get_decoder() -> Box<dyn NADecoder + Send> {
     Box::new(CookDecoder::new())
 }
@@ -685,14 +692,14 @@ mod test {
     use nihav_core::codecs::RegisteredDecoders;
     use nihav_core::demuxers::RegisteredDemuxers;
     use nihav_codec_support::test::dec_video::*;
-    use crate::realmedia_register_all_codecs;
+    use crate::realmedia_register_all_decoders;
     use crate::realmedia_register_all_demuxers;
     #[test]
     fn test_cook() {
         let mut dmx_reg = RegisteredDemuxers::new();
         realmedia_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        realmedia_register_all_codecs(&mut dec_reg);
+        realmedia_register_all_decoders(&mut dec_reg);
 
 //        let file = "assets/RV/rv30_weighted_mc.rm";
         let file = "assets/RV/multichannel.rma";