X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-vivo%2Fsrc%2Fcodecs%2Fg723_1.rs;h=89d694d15df2e979888a998a7b4005cb055c0d29;hb=e6aaad5c5273cd814b5748b7faf3751835a37217;hp=42dda3a5dbb783802288d04160c7ce843c392ff5;hpb=78fb6560c73965d834b215fb0b49505ae5443288;p=nihav.git diff --git a/nihav-vivo/src/codecs/g723_1.rs b/nihav-vivo/src/codecs/g723_1.rs index 42dda3a..89d694d 100644 --- a/nihav-vivo/src/codecs/g723_1.rs +++ b/nihav-vivo/src/codecs/g723_1.rs @@ -396,7 +396,7 @@ impl G7231Decoder { Self::inverse_quant(&self.prev_lsp, &mut cur_lsp, &self.lsp_index, bad_frame); Self::interpolate_lsp(&mut self.lpc, &cur_lsp, &self.prev_lsp); self.prev_lsp.copy_from_slice(&cur_lsp); - (&mut self.excitation[..MAX_PITCH]).copy_from_slice(&self.prev_excitation); + self.excitation[..MAX_PITCH].copy_from_slice(&self.prev_excitation); if self.erased_frames == 0 { let mut acb_vector = [0; SUBFRAME_LEN]; self.interp_gain = FIXED_CB_GAIN[(self.subframe[2].amp_index + self.subframe[3].amp_index) >> 1]; @@ -562,15 +562,15 @@ impl G7231Decoder { } } - (&mut self.synth_buf[LPC_ORDER..][..MAX_PITCH]).copy_from_slice(&self.prev_excitation); + self.synth_buf[LPC_ORDER..][..MAX_PITCH].copy_from_slice(&self.prev_excitation); let mut acb_vec = [0; SUBFRAME_LEN]; let mut tmp = [0; SUBFRAME_LEN * 2]; for i in (0..SUBFRAMES).step_by(2) { let buf = &mut self.synth_buf[LPC_ORDER + SUBFRAME_LEN * i..]; self.subframe[i].gen_acb_excitation(&mut acb_vec, buf, self.is_6300); - (&mut buf[..SUBFRAME_LEN]).copy_from_slice(&acb_vec); + buf[..SUBFRAME_LEN].copy_from_slice(&acb_vec); self.subframe[i + 1].gen_acb_excitation(&mut acb_vec, &buf[SUBFRAME_LEN..], self.is_6300); - (&mut buf[SUBFRAME_LEN..][..SUBFRAME_LEN]).copy_from_slice(&acb_vec); + buf[SUBFRAME_LEN..][..SUBFRAME_LEN].copy_from_slice(&acb_vec); let mut max = 0; for j in 0..SUBFRAME_LEN*2 { @@ -783,9 +783,9 @@ impl G7231Decoder { } } fn formant_postfilter(&mut self, dst: &mut [i16]) { - (&mut self.synth_buf[..LPC_ORDER]).copy_from_slice(&self.fir_mem); + self.synth_buf[..LPC_ORDER].copy_from_slice(&self.fir_mem); let mut filter_data = [0; LPC_ORDER + SAMPLES]; - (&mut filter_data[..LPC_ORDER]).copy_from_slice(&self.iir_mem); + filter_data[..LPC_ORDER].copy_from_slice(&self.iir_mem); let mut filter_coef = [[0; LPC_ORDER]; 2]; for i in 0..SUBFRAMES { @@ -938,14 +938,14 @@ impl NADecoder for G7231Decoder { let abuf = alloc_audio_buffer(self.ainfo, SAMPLES, self.chmap.clone())?; let mut adata = abuf.get_abuf_i16().unwrap(); - let mut asamples = adata.get_data_mut().unwrap(); + let asamples = adata.get_data_mut().unwrap(); if self.cur_ftype == G7231FrameType::Active { - self.synth_frame_active(&mut asamples, bad_frame); + self.synth_frame_active(asamples, bad_frame); } else { self.synth_frame_other(); } self.prev_ftype = self.cur_ftype; - (&mut self.synth_buf[..LPC_ORDER]).copy_from_slice(&self.filt_mem); + self.synth_buf[..LPC_ORDER].copy_from_slice(&self.filt_mem); for i in 0..SUBFRAMES { Self::do_lpc(&mut self.synth_buf, LPC_ORDER + i * SUBFRAME_LEN, &self.lpc[i]); } @@ -984,6 +984,7 @@ mod test { let mut dec_reg = RegisteredDecoders::new(); vivo_register_all_decoders(&mut dec_reg); + // sample: https://samples.mplayerhq.hu/vivo/viv1/adalogo.viv let file = "assets/Misc/adalogo.viv"; //let file = "assets/Misc/gr_al.viv"; //test_decode_audio("vivo", file, Some(1500), None/*Some("g7231")*/, &dmx_reg, &dec_reg);