From 16ac58df9323533534c7e6d449ea437c64984ed0 Mon Sep 17 00:00:00 2001 From: Mark Borgerding Date: Mon, 2 Feb 2004 03:51:52 +0000 Subject: [PATCH] : --- tools/psdpng.c | 68 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 17 deletions(-) diff --git a/tools/psdpng.c b/tools/psdpng.c index 10215e5..9a30dbb 100644 --- a/tools/psdpng.c +++ b/tools/psdpng.c @@ -32,9 +32,10 @@ FILE * fout=NULL; int navg=20; float * valbuf=NULL; +int remove_dc=1; -png_bytepp row_pointers=NULL; size_t nrows=0; +float * vals=NULL; void config(int argc,char** argv) { @@ -82,24 +83,34 @@ typedef struct png_byte b; } rgb_t; -png_bytep cpx2pixels(kiss_fft_cpx * fbuf,size_t nfreqs) + +rgb_t val2rgb(float x) +{ + const double pi = 3.14159265358979; + rgb_t p; + + p.g = (int)(255*sin(x*pi)); + p.r = (int)(255*abs(sin(x*pi*3/2))); + p.b = (int)(255*abs(sin(x*pi*5/2))); + return p; +} + + +void cpx2pixels(rgb_t * res,const float * fbuf,size_t nfreqs) { int i; - rgb_t * res = (rgb_t*)malloc(nfreqs*4 ); - //TODO + float minval,maxval,valrange; + minval=maxval=fbuf[0]; for (i = 0; i < nfreqs; ++i) { - float binpower = fbuf[i].r * fbuf[i].r + fbuf[i].i * fbuf[i].i; - res[i].r = 0; - res[i].g = 0; - res[i].b = 0; - if (i&1) { - res[i].r = i/2; - } - - //valbuf[(nrows - 1) * nfreqs + i] = 10 * log10 (binpower); + if (fbuf[i] > maxval) maxval = fbuf[i]; + if (fbuf[i] < minval) minval = fbuf[i]; } - return res; + + valrange = maxval-minval; + + for (i = 0; i < nfreqs; ++i) + res[i] = val2rgb( (fbuf[i] - minval)/valrange ); } void transform_signal() @@ -130,6 +141,11 @@ void transform_signal() // do FFT kiss_fftr(cfg,tbuf,fbuf); + if (remove_dc) { + fbuf[0].r = 0; + fbuf[0].i = 0; + } + for (i=0;i