More work on making freq.[ch] more generic

This commit is contained in:
Jean-Marc Valin 2018-12-13 17:40:05 -05:00
parent fb3112ade6
commit 12f16df6b7
3 changed files with 15 additions and 12 deletions

View file

@ -64,12 +64,12 @@ void compute_band_energy(float *bandE, const kiss_fft_cpx *X) {
{ {
int j; int j;
int band_size; int band_size;
band_size = (eband5ms[i+1]-eband5ms[i])<<FRAME_SIZE_SHIFT; band_size = (eband5ms[i+1]-eband5ms[i])*WINDOW_SIZE_5MS;
for (j=0;j<band_size;j++) { for (j=0;j<band_size;j++) {
float tmp; float tmp;
float frac = (float)j/band_size; float frac = (float)j/band_size;
tmp = SQUARE(X[(eband5ms[i]<<FRAME_SIZE_SHIFT) + j].r); tmp = SQUARE(X[(eband5ms[i]*WINDOW_SIZE_5MS) + j].r);
tmp += SQUARE(X[(eband5ms[i]<<FRAME_SIZE_SHIFT) + j].i); tmp += SQUARE(X[(eband5ms[i]*WINDOW_SIZE_5MS) + j].i);
sum[i] += (1-frac)*tmp; sum[i] += (1-frac)*tmp;
sum[i+1] += frac*tmp; sum[i+1] += frac*tmp;
} }
@ -89,12 +89,12 @@ void compute_band_corr(float *bandE, const kiss_fft_cpx *X, const kiss_fft_cpx *
{ {
int j; int j;
int band_size; int band_size;
band_size = (eband5ms[i+1]-eband5ms[i])<<FRAME_SIZE_SHIFT; band_size = (eband5ms[i+1]-eband5ms[i])*WINDOW_SIZE_5MS;
for (j=0;j<band_size;j++) { for (j=0;j<band_size;j++) {
float tmp; float tmp;
float frac = (float)j/band_size; float frac = (float)j/band_size;
tmp = X[(eband5ms[i]<<FRAME_SIZE_SHIFT) + j].r * P[(eband5ms[i]<<FRAME_SIZE_SHIFT) + j].r; tmp = X[(eband5ms[i]*WINDOW_SIZE_5MS) + j].r * P[(eband5ms[i]*WINDOW_SIZE_5MS) + j].r;
tmp += X[(eband5ms[i]<<FRAME_SIZE_SHIFT) + j].i * P[(eband5ms[i]<<FRAME_SIZE_SHIFT) + j].i; tmp += X[(eband5ms[i]*WINDOW_SIZE_5MS) + j].i * P[(eband5ms[i]*WINDOW_SIZE_5MS) + j].i;
sum[i] += (1-frac)*tmp; sum[i] += (1-frac)*tmp;
sum[i+1] += frac*tmp; sum[i+1] += frac*tmp;
} }
@ -114,10 +114,10 @@ void interp_band_gain(float *g, const float *bandE) {
{ {
int j; int j;
int band_size; int band_size;
band_size = (eband5ms[i+1]-eband5ms[i])<<FRAME_SIZE_SHIFT; band_size = (eband5ms[i+1]-eband5ms[i])*WINDOW_SIZE_5MS;
for (j=0;j<band_size;j++) { for (j=0;j<band_size;j++) {
float frac = (float)j/band_size; float frac = (float)j/band_size;
g[(eband5ms[i]<<FRAME_SIZE_SHIFT) + j] = (1-frac)*bandE[i] + frac*bandE[i+1]; g[(eband5ms[i]*WINDOW_SIZE_5MS) + j] = (1-frac)*bandE[i] + frac*bandE[i+1];
} }
} }
} }

View file

@ -28,9 +28,12 @@
#define PREEMPHASIS (0.85f) #define PREEMPHASIS (0.85f)
#define FRAME_SIZE_SHIFT 2 #define FRAME_SIZE_5MS (2)
#define FRAME_SIZE (40<<FRAME_SIZE_SHIFT) #define OVERLAP_SIZE_5MS (2)
#define OVERLAP_SIZE (FRAME_SIZE) #define WINDOW_SIZE_5MS (FRAME_SIZE_5MS + OVERLAP_SIZE_5MS)
#define FRAME_SIZE (80*FRAME_SIZE_5MS)
#define OVERLAP_SIZE (80*OVERLAP_SIZE_5MS)
#define WINDOW_SIZE (FRAME_SIZE + OVERLAP_SIZE) #define WINDOW_SIZE (FRAME_SIZE + OVERLAP_SIZE)
#define FREQ_SIZE (WINDOW_SIZE/2 + 1) #define FREQ_SIZE (WINDOW_SIZE/2 + 1)

View file

@ -28,9 +28,9 @@
#include <stdio.h> #include <stdio.h>
#include "arch.h" #include "arch.h"
#include "lpcnet.h" #include "lpcnet.h"
#include "freq.h"
#define FRAME_SIZE 160
int main(int argc, char **argv) { int main(int argc, char **argv) {
FILE *fin, *fout; FILE *fin, *fout;
LPCNetState *net; LPCNetState *net;