X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Findeo%2Fimc.rs;h=f11daa90c29a3a7b7723ca80840dd7fe81a85808;hb=4a9d2671dbfa6cab657ef52d321f153174cb6e1b;hp=b96b8a739a4132ace6c315e21617b7afbdbcccad;hpb=d699da6e1340740b3224dd7395ba381b639acb4e;p=nihav.git diff --git a/src/codecs/indeo/imc.rs b/src/codecs/indeo/imc.rs index b96b8a7..f11daa9 100644 --- a/src/codecs/indeo/imc.rs +++ b/src/codecs/indeo/imc.rs @@ -2,13 +2,13 @@ use std::mem; use std::ptr; use std::f32::consts; -use formats::*; -use frame::*; +use crate::formats::*; +use crate::frame::*; use super::super::*; -use io::bitreader::*; -use io::codebook::*; -use dsp::fft::*; -use dsp::window::*; +use crate::io::bitreader::*; +use crate::io::codebook::*; +use crate::dsp::fft::*; +use crate::dsp::window::*; const BANDS: usize = 32; const COEFFS: usize = 256; @@ -434,7 +434,7 @@ impl IMCDecoder { } fn read_level_coeffs_raw(&mut self, br: &mut BitReader, ch: usize) -> DecoderResult<()> { - let mut ch_data = &mut self.ch_data[ch]; + let ch_data = &mut self.ch_data[ch]; let maxc_pos = br.read(5)? as usize; let max_coef = br.read(7)? as u8; @@ -458,7 +458,7 @@ impl IMCDecoder { } fn calculate_channel_values(&mut self, ch: usize) { - let mut ch_data = &mut self.ch_data[ch]; + let ch_data = &mut self.ch_data[ch]; let mut tmp2: [f32; BANDS+1] = [0.0; BANDS+1]; let mut tmp3: [f32; BANDS] = [0.0; BANDS]; @@ -526,7 +526,7 @@ impl IMCDecoder { self.ba.keep_flag[i] = level[i] == 16; } if reset { - let mut ch_data = &mut self.ch_data[ch]; + let ch_data = &mut self.ch_data[ch]; let (mut c1, mut c2) = calc_maxcoef(level[0] as f32); ch_data.new_floor[0] = c1; ch_data.log_floor[0] = c2; @@ -550,7 +550,7 @@ impl IMCDecoder { } } } else { - let mut ch_data = &mut self.ch_data[ch]; + let ch_data = &mut self.ch_data[ch]; for i in 0..BANDS { if level[i] < 16 { let lval = level[i] - 7; @@ -570,7 +570,7 @@ impl IMCDecoder { self.ba.band_width[i] = 0; } } - + for i in 0..BANDS-1 { if self.ba.band_width[i] > 0 { self.ba.band_present[i] = br.read_bool()?; @@ -582,7 +582,7 @@ impl IMCDecoder { } fn read_skip_flags(&mut self, br: &mut BitReader) -> DecoderResult<()> { - let mut ba = &mut self.ba; + let ba = &mut self.ba; for band in 0..BANDS { if !ba.band_present[band] || ba.band_width[band] == 0 { continue; } @@ -697,7 +697,7 @@ impl IMCDecoder { fn inv_quant(&mut self, ch: usize, raw_coeffs: bool) { let qidx: usize = if raw_coeffs { 1 } else { 0 }; - let mut ch_data = &mut self.ch_data[ch]; + let ch_data = &mut self.ch_data[ch]; for band in 0..BANDS { for i in IMC_BANDS[band]..IMC_BANDS[band + 1] { ch_data.cw[i] = 0.0; @@ -721,7 +721,7 @@ impl IMCDecoder { ch_data.cw[i] = quant[val - 1] * ch_data.adj_floor[band]; } else { ch_data.cw[i] = -quant[max - val - 1] * ch_data.adj_floor[band]; - } + } } } } @@ -1107,69 +1107,15 @@ const IMC_CB_SELECTOR: [[usize; BANDS]; 4] = [ #[cfg(test)] mod test { - use codecs::*; - use demuxers::*; - use io::byteio::*; - use test::wavwriter::WavWriter; - + use crate::test::dec_video::*; #[test] fn test_imc() { - let avi_dmx = find_demuxer("avi").unwrap(); -// let mut file = File::open("assets/neal73_saber.avi").unwrap(); -// let mut file = File::open("assets/IMC/hvalen.avi").unwrap(); -// let mut file = File::open("assets/IMC/8khz.avi").unwrap(); -// let mut file = File::open("assets/STsKlassFist-1a.avi").unwrap(); - let mut file = File::open("assets/IMC/Angel Bday.avi").unwrap(); - let mut fr = FileReader::new_read(&mut file); - let mut br = ByteReader::new(&mut fr); - let mut dmx = avi_dmx.new_demuxer(&mut br); - dmx.open().unwrap(); - - let mut file = File::create("assets/imc-out.wav").unwrap(); - let mut fw = FileWriter::new_write(&mut file); - let mut wr = ByteWriter::new(&mut fw); - let mut wwr = WavWriter::new(&mut wr); - let mut wrote_header = false; - - let mut decs: Vec>> = Vec::new(); - for i in 0..dmx.get_num_streams() { - let s = dmx.get_stream(i).unwrap(); - let info = s.get_info(); - let decfunc = find_decoder(info.get_name()); - if let Some(df) = decfunc { - if info.is_audio() { - let mut dec = (df)(); - dec.init(info).unwrap(); - decs.push(Some(dec)); - } else { - decs.push(None); - } - } else { - decs.push(None); - } - } - - loop { - let pktres = dmx.get_frame(); - if let Err(e) = pktres { - if e == DemuxerError::EOF { break; } - panic!("error"); - } - let pkt = pktres.unwrap(); - //if pkt.get_pts().unwrap() > 10 { break; } - let streamno = pkt.get_stream().get_id() as usize; - if let Some(ref mut dec) = decs[streamno] { - let frm_ = dec.decode(&pkt).unwrap(); - let frm = frm_.borrow(); - if frm.get_info().is_audio() { - if !wrote_header { - wwr.write_header(frm.get_info().as_ref().get_properties().get_audio_info().unwrap()).unwrap(); - wrote_header = true; - } - wwr.write_frame(frm.get_buffer()).unwrap(); - } - } - } -panic!("the end"); +// let file = "assets/neal73_saber.avi"; +// let file = "assets/IMC/hvalen.avi"; + let file = "assets/IMC/8khz.avi"; +// let file = "assets/STsKlassFist-1a.avi"; +// let file = "assets/IMC/Angel Bday.avi"; + test_decode_audio("avi", file, None, "imc"); + //test_file_decoding("avi", file, None, false, true, None); } }