From 8c2495320adc68b5b2ece9db8e6fd6eb742c5aef Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sun, 4 Jun 2017 07:53:28 +0000 Subject: [PATCH] c2sim working with phase0 at 16k, sounds quite reasonable, but room for improvement git-svn-id: https://svn.code.sf.net/p/freetel/code@3154 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/c2sim.c | 9 +++++++-- codec2-dev/src/dump.c | 4 +++- codec2-dev/src/newamp1.c | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/codec2-dev/src/c2sim.c b/codec2-dev/src/c2sim.c index af8eaecf..ee667ee4 100644 --- a/codec2-dev/src/c2sim.c +++ b/codec2-dev/src/c2sim.c @@ -50,6 +50,7 @@ #include "phaseexp.h" #include "bpf.h" #include "bpfb.h" +#include "newamp1.h" void synth_one_frame(int n_samp, codec2_fftr_cfg fftr_inv_cfg, short buf[], MODEL *model, float Sn_[], float Pn[], int prede, float *de_mem, float gain); void print_help(const struct option *long_options, int num_opts, char* argv[]); @@ -430,9 +431,12 @@ int main(int argc, char *argv[]) /* Initialise ------------------------------------------------------------*/ - fft_fwd_cfg = codec2_fft_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in several places */ + fft_fwd_cfg = codec2_fft_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in several places */ fftr_fwd_cfg = codec2_fftr_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in several places */ fftr_inv_cfg = codec2_fftr_alloc(FFT_DEC, 1, NULL, NULL); /* inverse FFT, used just for synth */ + codec2_fft_cfg phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 0, NULL, NULL); + codec2_fft_cfg phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 1, NULL, NULL); + make_analysis_window(&c2const, fft_fwd_cfg, w, W); make_synthesis_window(&c2const, Pn); quantise_init(); @@ -880,7 +884,8 @@ int main(int argc, char *argv[]) int ret = fread(H, sizeof(COMP), MAX_AMP, fhm); assert(ret == MAX_AMP); } else { - sample_phase(&model_dec[i], H, Aw); + determine_phase(&c2const, H, &model_dec[i], NEWAMP1_PHASE_NFFT, phase_fft_fwd_cfg, phase_fft_inv_cfg); + //sample_phase(&model_dec[i], H, Aw); } phase_synth_zero_order(n_samp, &model_dec[i], ex_phase, H); } diff --git a/codec2-dev/src/dump.c b/codec2-dev/src/dump.c index 20bf0229..c8b3b310 100644 --- a/codec2-dev/src/dump.c +++ b/codec2-dev/src/dump.c @@ -238,7 +238,7 @@ void dump_softdec(float *softdec, int n) void dump_model(MODEL *model) { int l; char s[MAX_STR]; - char line[2048]; + char line[MAX_STR*10]; if (!dumpon) return; @@ -252,10 +252,12 @@ void dump_model(MODEL *model) { for(l=1; l<=model->L; l++) { sprintf(s,"%12f ",model->A[l]); strcat(line, s); + assert(strlen(line) < MAX_STR*10); } for(l=model->L+1; l<=MAX_AMP; l++) { sprintf(s,"%12f ", 0.0); strcat(line,s); + assert(strlen(line) < MAX_STR*10); } sprintf(s,"%d\n",model->voiced); diff --git a/codec2-dev/src/newamp1.c b/codec2-dev/src/newamp1.c index ebb7257b..45c39f48 100644 --- a/codec2-dev/src/newamp1.c +++ b/codec2-dev/src/newamp1.c @@ -378,7 +378,7 @@ void determine_phase(C2CONST *c2const, COMP H[], MODEL *model, int Nfft, codec2_ for(m=1; m<=model->L; m++) { AmdB[m] = 20.0*log10(model->A[m]); - rate_L_sample_freqs_kHz[m] = (float)m*model->Wo*4.0/M_PI; + rate_L_sample_freqs_kHz[m] = (float)m*model->Wo*(c2const->Fs/2000.0)/M_PI; } for(i=0; i