let max_energy = tgt_energy.max(fwd_energy).max(fwd_res_energy).max(bwd_energy).max(bwd_res_energy);
let scale = norm_bits(max_energy, 31);
let max_energy = tgt_energy.max(fwd_energy).max(fwd_res_energy).max(bwd_energy).max(bwd_res_energy);
let scale = norm_bits(max_energy, 31);
let fwd_energy = fwd_energy << scale >> 16;
let fwd_res_energy = fwd_res_energy << scale >> 16;
let bwd_energy = bwd_energy << scale >> 16;
let fwd_energy = fwd_energy << scale >> 16;
let fwd_res_energy = fwd_res_energy << scale >> 16;
let bwd_energy = bwd_energy << scale >> 16;
fn compute_ppf_gains(&mut self, offset: usize, is_6300: bool, tgt_energy: i32, corr_energy: i32, res_energy: i32) {
self.ppf_index = offset;
fn compute_ppf_gains(&mut self, offset: usize, is_6300: bool, tgt_energy: i32, corr_energy: i32, res_energy: i32) {
self.ppf_index = offset;
}
fn next_range(&mut self, range: usize) -> usize {
let val = (self.next() & 0x7FFF) as usize;
}
fn next_range(&mut self, range: usize) -> usize {
let val = (self.next() & 0x7FFF) as usize;
const CNG_BSEG: [i32; 3] = [ 2048, 18432, 231233 ];
let shift = 16 - cur_gain * 2;
let t = if shift > 0 { sid_gain << shift } else { sid_gain >> -shift };
const CNG_BSEG: [i32; 3] = [ 2048, 18432, 231233 ];
let shift = 16 - cur_gain * 2;
let t = if shift > 0 { sid_gain << shift } else { sid_gain >> -shift };
let best_energy = dot_product(&self.synth_buf[LPC_ORDER + MAX_PITCH + SUBFRAME_LEN * 2 - pos..], &self.synth_buf[LPC_ORDER + MAX_PITCH + SUBFRAME_LEN * 2 - pos..], SUBFRAME_LEN * 2);
let best_energy = best_energy.saturating_add(1 << 15) >> 16;
let best_energy = dot_product(&self.synth_buf[LPC_ORDER + MAX_PITCH + SUBFRAME_LEN * 2 - pos..], &self.synth_buf[LPC_ORDER + MAX_PITCH + SUBFRAME_LEN * 2 - pos..], SUBFRAME_LEN * 2);
let best_energy = best_energy.saturating_add(1 << 15) >> 16;
let mut bad_frame = false;
let mut br = BitReader::new(src.as_slice(), BitReaderMode::LE);
let mut bad_frame = false;
let mut br = BitReader::new(src.as_slice(), BitReaderMode::LE);
use nihav_core::codecs::RegisteredDecoders;
use nihav_core::demuxers::RegisteredDemuxers;
use nihav_codec_support::test::dec_video::*;
use nihav_core::codecs::RegisteredDecoders;
use nihav_core::demuxers::RegisteredDemuxers;
use nihav_codec_support::test::dec_video::*;
use crate::vivo_register_all_demuxers;
#[test]
fn test_g723_1() {
let mut dmx_reg = RegisteredDemuxers::new();
vivo_register_all_demuxers(&mut dmx_reg);
let mut dec_reg = RegisteredDecoders::new();
use crate::vivo_register_all_demuxers;
#[test]
fn test_g723_1() {
let mut dmx_reg = RegisteredDemuxers::new();
vivo_register_all_demuxers(&mut dmx_reg);
let mut dec_reg = RegisteredDecoders::new();
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);
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);