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;
}
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;
}
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];
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;
}
}
} 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;
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()?;
}
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; }
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;
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];
- }
+ }
}
}
}
#[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<Option<Box<NADecoder>>> = 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);
}
}