switch NACodecInfo to Arc
[nihav.git] / nihav-realmedia / src / codecs / ralf.rs
index f65eaeaff0254536ad1df2421902981582825e9f..307436c9ed03743a7158a5f88761c28383e7cba7 100644 (file)
@@ -1,5 +1,3 @@
-use std::rc::Rc;
-use std::cell::RefCell;
 use nihav_core::formats::*;
 use nihav_core::frame::*;
 use nihav_core::codecs::*;
@@ -246,7 +244,7 @@ struct Block {
 
 const RALF_MAX_PACKET_SIZE: usize = 8192;
 struct RALFDecoder {
-    info:           Rc<NACodecInfo>,
+    info:           NACodecInfoRef,
     chmap:          NAChannelMap,
     channels:       u8,
 
@@ -303,7 +301,7 @@ impl RALFDecoder {
         let ch0 = abuf.get_offset(0) + self.sample_offset;
         let ch1 = abuf.get_offset(1) + self.sample_offset;
         let mut adata = abuf.get_abuf_i16().unwrap();
-        let mut output = adata.get_data_mut();
+        let output = adata.get_data_mut().unwrap();
         match dmode {
             0 => {
                     for i in 0..length {
@@ -357,7 +355,7 @@ fn read_block_length(br: &mut BitReader) -> DecoderResult<usize> {
 }
 
 impl NADecoder for RALFDecoder {
-    fn init(&mut self, info: Rc<NACodecInfo>) -> DecoderResult<()> {
+    fn init(&mut self, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             let edata = info.get_extradata().unwrap();
 
@@ -477,11 +475,20 @@ pub fn get_decoder() -> Box<NADecoder> {
 
 #[cfg(test)]
 mod test {
-    use crate::test::dec_video::*;
+    use nihav_core::codecs::RegisteredDecoders;
+    use nihav_core::demuxers::RegisteredDemuxers;
+    use nihav_core::test::dec_video::*;
+    use crate::codecs::realmedia_register_all_codecs;
+    use crate::demuxers::realmedia_register_all_demuxers;
     #[test]
     fn test_ralf() {
+        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);
+
         let file = "assets/RV/rv40_ralf.rmvb";
-        test_decode_audio("realmedia", file, Some(2000), "ralf");
+        test_decode_audio("realmedia", file, Some(2000), "ralf", &dmx_reg, &dec_reg);
 //panic!("end");
     }
 }