From: drowe67 Date: Fri, 6 Jul 2012 03:00:17 +0000 (+0000) Subject: added 48 to 8 kHz donw conversion to pa_rec.c X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=2f478aea9e60842eca55ff3700cfc7300355e27a;p=freetel-svn-tracking.git added 48 to 8 kHz donw conversion to pa_rec.c git-svn-id: https://svn.code.sf.net/p/freetel/code@582 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/unittest/Makefile.am b/codec2-dev/unittest/Makefile.am index 77d13f01..592442b2 100644 --- a/codec2-dev/unittest/Makefile.am +++ b/codec2-dev/unittest/Makefile.am @@ -68,7 +68,7 @@ tlspsens_SOURCES = tlspsens.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src tlspsens_LDADD = $(lib_LTLIBRARIES) tlspsens_LDFLAGS = $(LIBS) -pa_rec_SOURCES = pa_rec.c +pa_rec_SOURCES = pa_rec.c ../src/fdmdv.c ../src/kiss_fft.c pa_rec_LDADD = $(lib_LTLIBRARIES) -lportaudio pa_rec_LDFLAGS = $(LIBS) diff --git a/codec2-dev/unittest/Makefile.in b/codec2-dev/unittest/Makefile.in index 5feb72b6..242ae343 100644 --- a/codec2-dev/unittest/Makefile.in +++ b/codec2-dev/unittest/Makefile.in @@ -40,7 +40,8 @@ noinst_PROGRAMS = genres$(EXEEXT) genlsp$(EXEEXT) extract$(EXEEXT) \ vqtrain$(EXEEXT) vqtrainjnd$(EXEEXT) tnlp$(EXEEXT) \ tinterp$(EXEEXT) tquant$(EXEEXT) vq_train_jvm$(EXEEXT) \ scalarlsptest$(EXEEXT) tfdmdv$(EXEEXT) t48_8$(EXEEXT) \ - lspsync$(EXEEXT) create_interleaver$(EXEEXT) tlspsens$(EXEEXT) + lspsync$(EXEEXT) create_interleaver$(EXEEXT) tlspsens$(EXEEXT) \ + pa_rec$(EXEEXT) subdir = unittest DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -73,6 +74,10 @@ am_lspsync_OBJECTS = lspsync.$(OBJEXT) quantise.$(OBJEXT) \ pack.$(OBJEXT) $(am__objects_1) lspsync_OBJECTS = $(am_lspsync_OBJECTS) lspsync_DEPENDENCIES = +am_pa_rec_OBJECTS = pa_rec.$(OBJEXT) fdmdv.$(OBJEXT) \ + kiss_fft.$(OBJEXT) +pa_rec_OBJECTS = $(am_pa_rec_OBJECTS) +pa_rec_DEPENDENCIES = am_scalarlsptest_OBJECTS = scalarlsptest.$(OBJEXT) quantise.$(OBJEXT) \ lpc.$(OBJEXT) lsp.$(OBJEXT) dump.$(OBJEXT) kiss_fft.$(OBJEXT) \ $(am__objects_1) @@ -129,16 +134,16 @@ LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(create_interleaver_SOURCES) $(extract_SOURCES) \ $(genlsp_SOURCES) $(genres_SOURCES) $(lspsync_SOURCES) \ - $(scalarlsptest_SOURCES) $(t48_8_SOURCES) $(tfdmdv_SOURCES) \ - $(tinterp_SOURCES) $(tlspsens_SOURCES) $(tnlp_SOURCES) \ - $(tquant_SOURCES) $(vq_train_jvm_SOURCES) $(vqtrain_SOURCES) \ - $(vqtrainjnd_SOURCES) + $(pa_rec_SOURCES) $(scalarlsptest_SOURCES) $(t48_8_SOURCES) \ + $(tfdmdv_SOURCES) $(tinterp_SOURCES) $(tlspsens_SOURCES) \ + $(tnlp_SOURCES) $(tquant_SOURCES) $(vq_train_jvm_SOURCES) \ + $(vqtrain_SOURCES) $(vqtrainjnd_SOURCES) DIST_SOURCES = $(create_interleaver_SOURCES) $(extract_SOURCES) \ $(genlsp_SOURCES) $(genres_SOURCES) $(lspsync_SOURCES) \ - $(scalarlsptest_SOURCES) $(t48_8_SOURCES) $(tfdmdv_SOURCES) \ - $(tinterp_SOURCES) $(tlspsens_SOURCES) $(tnlp_SOURCES) \ - $(tquant_SOURCES) $(vq_train_jvm_SOURCES) $(vqtrain_SOURCES) \ - $(vqtrainjnd_SOURCES) + $(pa_rec_SOURCES) $(scalarlsptest_SOURCES) $(t48_8_SOURCES) \ + $(tfdmdv_SOURCES) $(tinterp_SOURCES) $(tlspsens_SOURCES) \ + $(tnlp_SOURCES) $(tquant_SOURCES) $(vq_train_jvm_SOURCES) \ + $(vqtrain_SOURCES) $(vqtrainjnd_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -298,6 +303,9 @@ create_interleaver_LDFLAGS = $(LIBS) tlspsens_SOURCES = tlspsens.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/kiss_fft.c ../src/codec2.c ../src/sine.c ../src/nlp.c ../src/pack.c ../src/interp.c ../src/postfilter.c ../src/phase.c $(CODEBOOKS) tlspsens_LDADD = $(lib_LTLIBRARIES) tlspsens_LDFLAGS = $(LIBS) +pa_rec_SOURCES = pa_rec.c ../src/fdmdv.c ../src/kiss_fft.c +pa_rec_LDADD = $(lib_LTLIBRARIES) -lportaudio +pa_rec_LDFLAGS = $(LIBS) all: all-am .SUFFIXES: @@ -353,6 +361,9 @@ genres$(EXEEXT): $(genres_OBJECTS) $(genres_DEPENDENCIES) lspsync$(EXEEXT): $(lspsync_OBJECTS) $(lspsync_DEPENDENCIES) @rm -f lspsync$(EXEEXT) $(LINK) $(lspsync_LDFLAGS) $(lspsync_OBJECTS) $(lspsync_LDADD) $(LIBS) +pa_rec$(EXEEXT): $(pa_rec_OBJECTS) $(pa_rec_DEPENDENCIES) + @rm -f pa_rec$(EXEEXT) + $(LINK) $(pa_rec_LDFLAGS) $(pa_rec_OBJECTS) $(pa_rec_LDADD) $(LIBS) scalarlsptest$(EXEEXT): $(scalarlsptest_OBJECTS) $(scalarlsptest_DEPENDENCIES) @rm -f scalarlsptest$(EXEEXT) $(LINK) $(scalarlsptest_LDFLAGS) $(scalarlsptest_OBJECTS) $(scalarlsptest_LDADD) $(LIBS) @@ -411,6 +422,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lspsync.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/octave.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pa_rec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phase.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postfilter.Po@am__quote@ diff --git a/codec2-dev/unittest/pa_rec.c b/codec2-dev/unittest/pa_rec.c index ad87aef8..6ed22d87 100644 --- a/codec2-dev/unittest/pa_rec.c +++ b/codec2-dev/unittest/pa_rec.c @@ -3,9 +3,10 @@ David Rowe July 6 2012 - Modified from paex_record.c Portaudio example + Records at 48000 Hz from default sound device to a file. - Original author author Phil Burk http://www.softsynth.com + Modified from paex_record.c Portaudio example. Original author + author Phil Burk http://www.softsynth.com To Build: @@ -43,18 +44,19 @@ #include #include #include "portaudio.h" +#include "fdmdv.h" #define SAMPLE_RATE 48000 -#define FRAMES_PER_BUFFER 512 -#define NUM_CHANNELS 2 /* I think most sound cards like stereo, we will - convert to mono as we sample */ +#define N8 160 /* processing buffer size at 8 kHz */ +#define N48 (N8*FDMDV_OS) /* processing buffer size at 48 kHz */ +#define NUM_CHANNELS 2 /* I think most sound cards like stereo, we will + convert to mono as we sample */ #define SAMPLE_SILENCE 0 -typedef short SAMPLE; - typedef struct { FILE *fout; int framesLeft; + float in48k[FDMDV_OS_TAPS + N48]; } paTestData; @@ -71,10 +73,11 @@ static int recordCallback( const void *inputBuffer, void *outputBuffer, paTestData *data = (paTestData*)userData; FILE *fout = data->fout; int framesToCopy; - int i; + int i, n8; int finished; - short buf[FRAMES_PER_BUFFER]; short *rptr = (short*)inputBuffer; + float out8k[N8]; + short out8k_short[N8]; (void) outputBuffer; /* Prevent unused variable warnings. */ (void) timeInfo; @@ -96,13 +99,24 @@ static int recordCallback( const void *inputBuffer, void *outputBuffer, /* just use left channel */ for(i=0; iin48k[i+FDMDV_OS_TAPS] = *rptr; + + /* downsample and update filter memory */ + + fdmdv_48_to_8(out8k, &data->in48k[FDMDV_OS_TAPS], N8); + for(i=0; iin48k[i] = data->in48k[i+framesToCopy]; - /* note Portaudio doc doesn't rec making systems calls in this - callback but seems to work OK */ + /* save 8k to disk */ - fwrite(buf, sizeof(short), framesToCopy, fout); + for(i=0; i