switch to better FFT interface and more flexible FFT implementation
[nihav.git] / nihav-realmedia / src / codecs / cook.rs
index 5f61d2e48a2656b756149b3013cb9fedb7b2f8c2..ec59b638d84b1e5d5d88c5648672a9d4a4c4b40d 100644 (file)
@@ -1,9 +1,6 @@
-use std::rc::Rc;
-use std::cell::RefCell;
 use nihav_core::formats::*;
 use nihav_core::frame::*;
 use nihav_core::codecs::*;
-use nihav_core::dsp::fft::FFTMode;
 use nihav_core::dsp::mdct::IMDCT;
 use nihav_core::io::bitreader::*;
 use nihav_core::io::byteio::{ByteReader, MemoryReader};
@@ -114,7 +111,7 @@ impl CookDSP {
             gain_tab[i] = pow_tab[i + 53].powf(8.0 / fsamples);
         }
         let size = samples;
-        CookDSP { imdct: IMDCT::new(FFTMode::SplitRadix, samples*2, false), window: window, out: [0.0; 2048], size, pow_tab, hpow_tab, gain_tab }
+        CookDSP { imdct: IMDCT::new(samples*2, false), window: window, out: [0.0; 2048], size, pow_tab, hpow_tab, gain_tab }
     }
 }
 
@@ -433,7 +430,7 @@ impl CookChannelPair {
         for ch in 0..self.mode.get_channels() {
             let off = abuf.get_offset(ch + self.start_ch);
             let mut adata = abuf.get_abuf_f32().unwrap();
-            let mut output = adata.get_data_mut();
+            let output = adata.get_data_mut().unwrap();
             let dst = &mut output[off..];
 
             dsp.imdct.imdct(&self.block[ch], &mut dsp.out);
@@ -523,7 +520,7 @@ impl RND {
 }
 
 struct CookDecoder {
-    info:       Rc<NACodecInfo>,
+    info:       NACodecInfoRef,
     chmap:      NAChannelMap,
     src:        [u8; 65536],
     num_pairs:  usize,
@@ -553,7 +550,7 @@ impl CookDecoder {
 }
 
 impl NADecoder for CookDecoder {
-    fn init(&mut self, info: Rc<NACodecInfo>) -> DecoderResult<()> {
+    fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(ainfo) = info.get_properties() {
             let edata = info.get_extradata().unwrap();
             validate!(edata.len() >= 4);
@@ -634,7 +631,7 @@ impl NADecoder for CookDecoder {
             Err(DecoderError::InvalidData)
         }
     }
-    fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
+    fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let info = pkt.get_stream().get_info();
         validate!(info.get_properties().is_audio());
         let pktbuf = pkt.get_buffer();
@@ -670,7 +667,7 @@ impl NADecoder for CookDecoder {
 
         let mut frm = NAFrame::new_from_pkt(pkt, self.info.replace_info(NACodecTypeInfo::Audio(ainfo)), abuf);
         frm.set_keyframe(true);
-        Ok(Rc::new(RefCell::new(frm)))
+        Ok(frm.into_ref())
     }
 }