This commit is contained in:
Sean McBride 2025-02-10 22:26:09 +02:00 committed by GitHub
commit d904bd9979
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 22 deletions

View File

@ -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);
} }

View File

@ -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);
} }
} }