rename register_all_codecs to register_all_decoders
[nihav.git] / nihav-indeo / src / codecs / imc.rs
index c89552273a750b70849a48e44eacc1217932ff18..ea84d0ab01977f91285045264d60488f5df197d7 100644 (file)
@@ -7,8 +7,8 @@ use nihav_core::frame::*;
 use nihav_core::codecs::*;
 use nihav_core::io::bitreader::*;
 use nihav_core::io::codebook::*;
-use nihav_core::dsp::fft::*;
-use nihav_core::dsp::window::*;
+use nihav_codec_support::dsp::fft::*;
+use nihav_codec_support::dsp::window::*;
 
 const BANDS:      usize =  32;
 const COEFFS:     usize = 256;
@@ -103,6 +103,7 @@ impl BitAlloc {
             self.skip_flag[i]       = false;
         }
     }
+    #[allow(clippy::cyclomatic_complexity)]
     fn calculate_bit_allocation(&mut self, ch_data: &mut IMCChannel, bits: usize, fixed_head: bool, adj_idx: usize) -> DecoderResult<()> {
 
         let mut peak = 0.0;
@@ -728,7 +729,7 @@ impl IMCDecoder {
     }
 
     fn decode_block(&mut self, data: &[u8], ch: usize, dst: &mut [f32]) -> DecoderResult<()> {
-        let mut br = BitReader::new(&data[BLOCK_SIZE*ch..], BLOCK_SIZE, BitReaderMode::LE16MSB);
+        let mut br = BitReader::new(&data[BLOCK_SIZE*ch..][..BLOCK_SIZE], BitReaderMode::LE16MSB);
         let hdr = br.read(9)?;
         validate!((hdr & 0x18) == 0);
 
@@ -922,13 +923,21 @@ impl NADecoder for IMCDecoder {
         frm.set_keyframe(true);
         Ok(frm.into_ref())
     }
+    fn flush(&mut self) {
+    }
+}
+
+impl NAOptionHandler for IMCDecoder {
+    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_imc() -> Box<dyn NADecoder> {
+pub fn get_decoder_imc() -> Box<dyn NADecoder + Send> {
     Box::new(IMCDecoder::new(true))
 }
 
-pub fn get_decoder_iac() -> Box<dyn NADecoder> {
+pub fn get_decoder_iac() -> Box<dyn NADecoder + Send> {
     Box::new(IMCDecoder::new(false))
 }
 
@@ -1109,22 +1118,22 @@ const IMC_CB_SELECTOR: [[usize; BANDS]; 4] = [
 mod test {
     use nihav_core::codecs::RegisteredDecoders;
     use nihav_core::demuxers::RegisteredDemuxers;
-    use nihav_core::test::dec_video::*;
-    use crate::codecs::indeo_register_all_codecs;
-    use nihav_commonfmt::demuxers::generic_register_all_demuxers;
+    use nihav_codec_support::test::dec_video::*;
+    use crate::indeo_register_all_decoders;
+    use nihav_commonfmt::generic_register_all_demuxers;
     #[test]
     fn test_imc() {
         let mut dmx_reg = RegisteredDemuxers::new();
         generic_register_all_demuxers(&mut dmx_reg);
         let mut dec_reg = RegisteredDecoders::new();
-        indeo_register_all_codecs(&mut dec_reg);
+        indeo_register_all_decoders(&mut dec_reg);
 
 //        let file = "assets/Indeo/neal73_saber.avi";
 //        let file = "assets/Indeo/IMC/hvalen.avi";
         let file = "assets/Indeo/IMC/8khz.avi";
 //        let file = "assets/Indeo/STsKlassFist-1a.avi";
 //        let file = "assets/Indeo/IMC/Angel Bday.avi";
-        test_decode_audio("avi", file, None, "imc", &dmx_reg, &dec_reg);
+        test_decode_audio("avi", file, None, None/*Some("imc")*/, &dmx_reg, &dec_reg);
         //test_file_decoding("avi", file, None, false, true, None);
     }
 }