From 6129ba34b3d41e7a6eaf2f5b7f27a5d703036dd9 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sun, 10 Jun 2012 12:20:24 +0000 Subject: [PATCH] phase synth converted to kiss_fft git-svn-id: https://svn.code.sf.net/p/freetel/code@540 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/c2sim.c | 12 ++++++------ codec2-dev/src/codec2.c | 8 ++++---- codec2-dev/src/interp.c | 3 ++- codec2-dev/src/interp.h | 11 +++++++---- codec2-dev/src/nlp.c | 1 - codec2-dev/src/phase.c | 15 +++++++++------ codec2-dev/src/phase.h | 6 ++++-- codec2-dev/src/quantise.c | 38 ++++++++++++++++++++++---------------- codec2-dev/src/quantise.h | 6 ++++-- 9 files changed, 58 insertions(+), 42 deletions(-) diff --git a/codec2-dev/src/c2sim.c b/codec2-dev/src/c2sim.c index 354c3452..51089be4 100644 --- a/codec2-dev/src/c2sim.c +++ b/codec2-dev/src/c2sim.c @@ -311,7 +311,7 @@ int main(int argc, char *argv[]) fft_enc_cfg = kiss_fft_alloc(FFT_ENC, 1, NULL, NULL); fft_dec_cfg = kiss_fft_alloc(FFT_DEC, 0, NULL, NULL); - make_analysis_window(fft_enc_cfg, w,W); + make_analysis_window(fft_enc_cfg, w, W); make_synthesis_window(Pn); quantise_init(); @@ -574,7 +574,7 @@ int main(int argc, char *argv[]) } - aks_to_M2(ak, order, &model, e, &snr, 1); + aks_to_M2(fft_dec_cfg, ak, order, &model, e, &snr, 1); /* note SNR on interpolated frames can't be measured properly by comparing Am as L has changed. We can dump interp lsps @@ -625,7 +625,7 @@ int main(int argc, char *argv[]) interp_model.voiced = voiced1; - interpolate_lsp(&interp_model, &prev_model, &model, + interpolate_lsp(fft_dec_cfg, &interp_model, &prev_model, &model, prev_lsps_, prev_e, lsps_, e, ak_interp, lsps_interp); apply_lpc_correction(&interp_model); @@ -660,7 +660,7 @@ int main(int argc, char *argv[]) #endif if (phase0) - phase_synth_zero_order(&interp_model, ak_interp, ex_phase, + phase_synth_zero_order(fft_dec_cfg, &interp_model, ak_interp, ex_phase, order); if (postfilt) postfilter(&interp_model, &bg_est); @@ -672,7 +672,7 @@ int main(int argc, char *argv[]) /* decode this frame */ if (phase0) - phase_synth_zero_order(&model, ak, ex_phase, order); + phase_synth_zero_order(fft_dec_cfg, &model, ak, ex_phase, order); if (postfilt) postfilter(&model, &bg_est); synth_one_frame(fft_dec_cfg, buf, &model, Sn_, Pn); @@ -695,7 +695,7 @@ int main(int argc, char *argv[]) /* no decimation - sythesise each 10ms frame immediately */ if (phase0) - phase_synth_zero_order(&model, ak, ex_phase, order); + phase_synth_zero_order(fft_dec_cfg, &model, ak, ex_phase, order); if (postfilt) postfilter(&model, &bg_est); synth_one_frame(fft_dec_cfg, buf, &model, Sn_, Pn); diff --git a/codec2-dev/src/codec2.c b/codec2-dev/src/codec2.c index f55e33dc..b981c7ef 100644 --- a/codec2-dev/src/codec2.c +++ b/codec2-dev/src/codec2.c @@ -356,7 +356,7 @@ void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char * interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5); for(i=0; i<2; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); - aks_to_M2(&ak[i][0], LPC_ORD, &model[i], e[i], &snr, 1); + aks_to_M2(c2->fft_dec_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 1); apply_lpc_correction(&model[i]); } @@ -528,7 +528,7 @@ void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char * } for(i=0; i<4; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); - aks_to_M2(&ak[i][0], LPC_ORD, &model[i], e[i], &snr, 1); + aks_to_M2(c2->fft_dec_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 1); apply_lpc_correction(&model[i]); } @@ -705,7 +705,7 @@ void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char * } for(i=0; i<4; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); - aks_to_M2(&ak[i][0], LPC_ORD, &model[i], e[i], &snr, 1); + aks_to_M2(c2->fft_dec_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 1); apply_lpc_correction(&model[i]); } @@ -737,7 +737,7 @@ void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, float { int i; - phase_synth_zero_order(model, ak, &c2->ex_phase, LPC_ORD); + phase_synth_zero_order(c2->fft_dec_cfg, model, ak, &c2->ex_phase, LPC_ORD); postfilter(model, &c2->bg_est); synthesise(c2->fft_dec_cfg, c2->Sn_, model, c2->Pn, 1); diff --git a/codec2-dev/src/interp.c b/codec2-dev/src/interp.c index 253e57bf..2aca6b26 100644 --- a/codec2-dev/src/interp.c +++ b/codec2-dev/src/interp.c @@ -146,6 +146,7 @@ float sample_log_amp(MODEL *model, float w) \*---------------------------------------------------------------------------*/ void interpolate_lsp( + kiss_fft_cfg fft_dec_cfg, MODEL *interp, /* interpolated model params */ MODEL *prev, /* previous frames model params */ MODEL *next, /* next frames model params */ @@ -200,7 +201,7 @@ void interpolate_lsp( /* convert back to amplitudes */ lsp_to_lpc(lsps_interp, ak_interp, LPC_ORD); - aks_to_M2(ak_interp, LPC_ORD, interp, e, &snr, 0); + aks_to_M2(fft_dec_cfg, ak_interp, LPC_ORD, interp, e, &snr, 0); //printf(" interp: ak[1]: %f A[1] %f\n", ak_interp[1], interp->A[1]); } diff --git a/codec2-dev/src/interp.h b/codec2-dev/src/interp.h index 87caf574..312ccb76 100644 --- a/codec2-dev/src/interp.h +++ b/codec2-dev/src/interp.h @@ -28,11 +28,14 @@ #ifndef __INTERP__ #define __INTERP__ +#include "kiss_fft.h" + void interpolate(MODEL *interp, MODEL *prev, MODEL *next); -void interpolate_lsp(MODEL *interp, MODEL *prev, MODEL *next, - float *prev_lsps, float prev_e, - float *next_lsps, float next_e, - float *ak_interp, float *lsps_interp); +void interpolate_lsp(kiss_fft_cfg fft_dec_cfg, + MODEL *interp, MODEL *prev, MODEL *next, + float *prev_lsps, float prev_e, + float *next_lsps, float next_e, + float *ak_interp, float *lsps_interp); void interp_Wo(MODEL *interp, MODEL *prev, MODEL *next); float interp_energy(float prev, float next); void interpolate_lsp_ver2(float interp[], float prev[], float next[], float weight); diff --git a/codec2-dev/src/nlp.c b/codec2-dev/src/nlp.c index d5d53edc..c417020a 100644 --- a/codec2-dev/src/nlp.c +++ b/codec2-dev/src/nlp.c @@ -261,7 +261,6 @@ float nlp( dump_dec(Fw); #endif kiss_fft(nlp->fft_cfg, (kiss_fft_cpx *)fw, (kiss_fft_cpx *)Fw); - //fft(&Fw[0].real,PE_FFT_SIZE,1); for(i=0; i