mirror of
https://github.com/mborgerding/kissfft.git
synced 2025-05-27 21:20:27 -04:00
Merge 40c515c091
into febd4caeed
This commit is contained in:
commit
d904bd9979
@ -41,7 +41,6 @@ size_t kiss_fastfir( kiss_fastfir_cfg cfg, kffsamp_t * inbuf, kffsamp_t * outbuf
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int verbose=0;
|
|
||||||
|
|
||||||
|
|
||||||
struct kiss_fastfir_state{
|
struct kiss_fastfir_state{
|
||||||
@ -68,7 +67,7 @@ kiss_fastfir_cfg kiss_fastfir_alloc(
|
|||||||
size_t i;
|
size_t i;
|
||||||
size_t nfft=0;
|
size_t nfft=0;
|
||||||
float scale;
|
float scale;
|
||||||
int n_freq_bins;
|
size_t n_freq_bins;
|
||||||
if (pnfft)
|
if (pnfft)
|
||||||
nfft=*pnfft;
|
nfft=*pnfft;
|
||||||
|
|
||||||
@ -150,7 +149,7 @@ kiss_fastfir_cfg kiss_fastfir_alloc(
|
|||||||
FFTFWD(st->fftcfg,st->tmpbuf,st->fir_freq_resp);
|
FFTFWD(st->fftcfg,st->tmpbuf,st->fir_freq_resp);
|
||||||
|
|
||||||
/* TODO: this won't work for fixed point */
|
/* TODO: this won't work for fixed point */
|
||||||
scale = 1.0 / st->nfft;
|
scale = 1.0f / st->nfft;
|
||||||
|
|
||||||
for ( i=0; i < st->n_freq_bins; ++i ) {
|
for ( i=0; i < st->n_freq_bins; ++i ) {
|
||||||
#ifdef USE_SIMD
|
#ifdef USE_SIMD
|
||||||
@ -244,6 +243,8 @@ size_t kiss_fastfir(
|
|||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
static int verbose=0;
|
||||||
|
|
||||||
static
|
static
|
||||||
void direct_file_filter(
|
void direct_file_filter(
|
||||||
FILE * fin,
|
FILE * fin,
|
||||||
@ -345,7 +346,7 @@ void do_file_filter(
|
|||||||
|
|
||||||
kiss_fastfir_cfg cfg;
|
kiss_fastfir_cfg cfg;
|
||||||
kffsamp_t *inbuf,*outbuf;
|
kffsamp_t *inbuf,*outbuf;
|
||||||
int nread,nwrite;
|
size_t nread,nwrite;
|
||||||
size_t idx_inbuf;
|
size_t idx_inbuf;
|
||||||
|
|
||||||
fdout = fileno(fout);
|
fdout = fileno(fout);
|
||||||
@ -373,7 +374,8 @@ void do_file_filter(
|
|||||||
nwrite = kiss_fastfir(cfg, inbuf, outbuf,nread,&idx_inbuf) * sizeof(kffsamp_t);
|
nwrite = kiss_fastfir(cfg, inbuf, outbuf,nread,&idx_inbuf) * sizeof(kffsamp_t);
|
||||||
/* kiss_fastfir moved any unused samples to the front of inbuf and updated idx_inbuf */
|
/* kiss_fastfir moved any unused samples to the front of inbuf and updated idx_inbuf */
|
||||||
|
|
||||||
if ( write(fdout, outbuf, nwrite) != nwrite ) {
|
ssize_t written = write(fdout, outbuf, nwrite);
|
||||||
|
if ( written < 0 || (size_t)written != nwrite ) {
|
||||||
perror("short write");
|
perror("short write");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -16,15 +16,15 @@
|
|||||||
#include "kiss_fft.h"
|
#include "kiss_fft.h"
|
||||||
#include "kiss_fftr.h"
|
#include "kiss_fftr.h"
|
||||||
|
|
||||||
int nfft=1024;
|
static int nfft=1024;
|
||||||
FILE * fin=NULL;
|
static FILE * fin=NULL;
|
||||||
FILE * fout=NULL;
|
static FILE * fout=NULL;
|
||||||
|
|
||||||
int navg=20;
|
static int navg=20;
|
||||||
int remove_dc=0;
|
static int remove_dc=0;
|
||||||
int nrows=0;
|
static int nrows=0;
|
||||||
float * vals=NULL;
|
static float * vals=NULL;
|
||||||
int stereo=0;
|
static int stereo=0;
|
||||||
|
|
||||||
static
|
static
|
||||||
void config(int argc,char** argv)
|
void config(int argc,char** argv)
|
||||||
@ -83,9 +83,9 @@ static
|
|||||||
void val2rgb(float x,rgb_t *p)
|
void val2rgb(float x,rgb_t *p)
|
||||||
{
|
{
|
||||||
const double pi = 3.14159265358979;
|
const double pi = 3.14159265358979;
|
||||||
p->g = (int)(255*sin(x*pi));
|
p->g = (png_byte)(255*sin(x*pi));
|
||||||
p->r = (int)(255*abs(sin(x*pi*3/2)));
|
p->r = (png_byte)(255*fabs(sin(x*pi*3/2)));
|
||||||
p->b = (int)(255*abs(sin(x*pi*5/2)));
|
p->b = (png_byte)(255*fabs(sin(x*pi*5/2)));
|
||||||
//fprintf(stderr,"%.2f : %d,%d,%d\n",x,(int)p->r,(int)p->g,(int)p->b);
|
//fprintf(stderr,"%.2f : %d,%d,%d\n",x,(int)p->r,(int)p->g,(int)p->b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ void cpx2pixels(rgb_t * res,const float * fbuf,size_t n)
|
|||||||
|
|
||||||
fprintf(stderr,"min ==%f,max=%f\n",minval,maxval);
|
fprintf(stderr,"min ==%f,max=%f\n",minval,maxval);
|
||||||
valrange = maxval-minval;
|
valrange = maxval-minval;
|
||||||
if (valrange == 0) {
|
if (valrange == 0.0f) {
|
||||||
fprintf(stderr,"min == max == %f\n",minval);
|
fprintf(stderr,"min == max == %f\n",minval);
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
@ -121,7 +121,7 @@ void transform_signal(void)
|
|||||||
kiss_fft_cpx *fbuf;
|
kiss_fft_cpx *fbuf;
|
||||||
float *mag2buf;
|
float *mag2buf;
|
||||||
int i;
|
int i;
|
||||||
int n;
|
size_t n;
|
||||||
int avgctr=0;
|
int avgctr=0;
|
||||||
|
|
||||||
int nfreqs=nfft/2+1;
|
int nfreqs=nfft/2+1;
|
||||||
@ -135,13 +135,13 @@ void transform_signal(void)
|
|||||||
while (1) {
|
while (1) {
|
||||||
if (stereo) {
|
if (stereo) {
|
||||||
n = fread(inbuf,sizeof(short)*2,nfft,fin);
|
n = fread(inbuf,sizeof(short)*2,nfft,fin);
|
||||||
if (n != nfft )
|
if (n != (size_t)nfft )
|
||||||
break;
|
break;
|
||||||
for (i=0;i<nfft;++i)
|
for (i=0;i<nfft;++i)
|
||||||
tbuf[i] = inbuf[2*i] + inbuf[2*i+1];
|
tbuf[i] = inbuf[2*i] + inbuf[2*i+1];
|
||||||
}else{
|
}else{
|
||||||
n = fread(inbuf,sizeof(short),nfft,fin);
|
n = fread(inbuf,sizeof(short),nfft,fin);
|
||||||
if (n != nfft )
|
if (n != (size_t)nfft )
|
||||||
break;
|
break;
|
||||||
for (i=0;i<nfft;++i)
|
for (i=0;i<nfft;++i)
|
||||||
tbuf[i] = inbuf[i];
|
tbuf[i] = inbuf[i];
|
||||||
@ -164,9 +164,9 @@ void transform_signal(void)
|
|||||||
avgctr=0;
|
avgctr=0;
|
||||||
++nrows;
|
++nrows;
|
||||||
CHECKNULL( vals = (float*)realloc(vals,sizeof(float)*nrows*nfreqs) );
|
CHECKNULL( vals = (float*)realloc(vals,sizeof(float)*nrows*nfreqs) );
|
||||||
float eps = 1;
|
float eps = 1.0f;
|
||||||
for (i=0;i<nfreqs;++i)
|
for (i=0;i<nfreqs;++i)
|
||||||
vals[(nrows - 1) * nfreqs + i] = 10 * log10 ( mag2buf[i] / navg + eps );
|
vals[(nrows - 1) * nfreqs + i] = 10.0f * log10f ( mag2buf[i] / navg + eps );
|
||||||
memset(mag2buf,0,sizeof(mag2buf[0])*nfreqs);
|
memset(mag2buf,0,sizeof(mag2buf[0])*nfreqs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user