From 60236434ca3269b219c2db99b58b54bc0bbee78f Mon Sep 17 00:00:00 2001 From: drowe67 Date: Thu, 19 Nov 2015 20:58:38 +0000 Subject: [PATCH] create returns NULL with invalid mode git-svn-id: https://svn.code.sf.net/p/freetel/code@2493 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/codec2.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/codec2-dev/src/codec2.c b/codec2-dev/src/codec2.c index c8552db4..d9ed51c8 100644 --- a/codec2-dev/src/codec2.c +++ b/codec2-dev/src/codec2.c @@ -104,16 +104,17 @@ struct CODEC2 * codec2_create(int mode) if (c2 == NULL) return NULL; - assert( - (mode == CODEC2_MODE_3200) || - (mode == CODEC2_MODE_2400) || - (mode == CODEC2_MODE_1600) || - (mode == CODEC2_MODE_1400) || - (mode == CODEC2_MODE_1300) || - (mode == CODEC2_MODE_1200) || - (mode == CODEC2_MODE_700) || - (mode == CODEC2_MODE_700B) - ); + if ((mode != CODEC2_MODE_3200) && + (mode != CODEC2_MODE_2400) && + (mode != CODEC2_MODE_1400) && + (mode != CODEC2_MODE_1300) && + (mode != CODEC2_MODE_1200) && + (mode != CODEC2_MODE_700) && + (mode != CODEC2_MODE_700B) + ) { + return NULL; + } + c2->mode = mode; for(i=0; iSn[i] = 1.0; @@ -1392,7 +1393,7 @@ void codec2_encode_700(struct CODEC2 *c2, unsigned char * bits, short speech[]) c2->bpf_buf[i] = c2->bpf_buf[4*N+i]; for(i=0; i<4*N; i++) c2->bpf_buf[BPF_N+i] = speech[i]; - inverse_filter(&c2->bpf_buf[BPF_N], bpf, 4*N, bpf_out, BPF_N); + inverse_filter(&c2->bpf_buf[BPF_N], bpf, 4*N, bpf_out, BPF_N-1); for(i=0; i<4*N; i++) bpf_speech[i] = bpf_out[i]; @@ -1604,7 +1605,7 @@ void codec2_encode_700b(struct CODEC2 *c2, unsigned char * bits, short speech[]) c2->bpf_buf[i] = c2->bpf_buf[4*N+i]; for(i=0; i<4*N; i++) c2->bpf_buf[BPF_N+i] = speech[i]; - inverse_filter(&c2->bpf_buf[BPF_N], bpfb, 4*N, bpf_out, BPF_N); + inverse_filter(&c2->bpf_buf[BPF_N], bpfb, 4*N, bpf_out, BPF_N-1); for(i=0; i<4*N; i++) bpf_speech[i] = bpf_out[i]; -- 2.25.1