cook: build multichannel map
[nihav.git] / nihav-realmedia / src / codecs / cook.rs
index b4e2ea90747fac5b814ce3ba094b79067bcf7eed..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;
@@ -691,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";