From b83c67d9aafde8f4445fbab572ce47a29ac70b91 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sun, 8 Jul 2012 05:32:47 +0000 Subject: [PATCH] moved port audio test programs git-svn-id: https://svn.code.sf.net/p/freetel/code@587 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/unittest/Makefile.am | 14 +-- codec2-dev/unittest/Makefile.in | 38 +----- codec2-dev/unittest/pa_play.c | 199 ----------------------------- codec2-dev/unittest/pa_rec.c | 210 ------------------------------- codec2-dev/unittest/pa_recplay.c | 205 ------------------------------ 5 files changed, 2 insertions(+), 664 deletions(-) delete mode 100644 codec2-dev/unittest/pa_play.c delete mode 100644 codec2-dev/unittest/pa_rec.c delete mode 100644 codec2-dev/unittest/pa_recplay.c diff --git a/codec2-dev/unittest/Makefile.am b/codec2-dev/unittest/Makefile.am index 17018176..a3fae663 100644 --- a/codec2-dev/unittest/Makefile.am +++ b/codec2-dev/unittest/Makefile.am @@ -3,7 +3,7 @@ AUTOMAKE_OPTS = gnu NAME = libcodec2 AM_CPPFLAGS = $(AM_CFLAGS) -noinst_PROGRAMS = genres genlsp extract vqtrain vqtrainjnd tnlp tinterp tquant vq_train_jvm scalarlsptest tfdmdv t48_8 lspsync create_interleaver tlspsens pa_rec pa_play pa_recplay +noinst_PROGRAMS = genres genlsp extract vqtrain vqtrainjnd tnlp tinterp tquant vq_train_jvm scalarlsptest tfdmdv t48_8 lspsync create_interleaver tlspsens genres_SOURCES = genres.c ../src/lpc.c genres_LDADD = $(lib_LTLIBRARIES) @@ -68,15 +68,3 @@ 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 ../src/fdmdv.c ../src/kiss_fft.c -pa_rec_LDADD = $(lib_LTLIBRARIES) -lportaudio -pa_rec_LDFLAGS = $(LIBS) - -pa_play_SOURCES = pa_play.c ../src/fdmdv.c ../src/kiss_fft.c -pa_play_LDADD = $(lib_LTLIBRARIES) -lportaudio -pa_play_LDFLAGS = $(LIBS) - -pa_recplay_SOURCES = pa_recplay.c ../src/fdmdv.c ../src/kiss_fft.c -pa_recplay_LDADD = $(lib_LTLIBRARIES) -lportaudio -pa_recplay_LDFLAGS = $(LIBS) - diff --git a/codec2-dev/unittest/Makefile.in b/codec2-dev/unittest/Makefile.in index 50c54b76..ab863f6c 100644 --- a/codec2-dev/unittest/Makefile.in +++ b/codec2-dev/unittest/Makefile.in @@ -40,8 +40,7 @@ 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) \ - pa_rec$(EXEEXT) pa_play$(EXEEXT) pa_recplay$(EXEEXT) + lspsync$(EXEEXT) create_interleaver$(EXEEXT) tlspsens$(EXEEXT) subdir = unittest DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -74,18 +73,6 @@ am_lspsync_OBJECTS = lspsync.$(OBJEXT) quantise.$(OBJEXT) \ pack.$(OBJEXT) $(am__objects_1) lspsync_OBJECTS = $(am_lspsync_OBJECTS) lspsync_DEPENDENCIES = -am_pa_play_OBJECTS = pa_play.$(OBJEXT) fdmdv.$(OBJEXT) \ - kiss_fft.$(OBJEXT) -pa_play_OBJECTS = $(am_pa_play_OBJECTS) -pa_play_DEPENDENCIES = -am_pa_rec_OBJECTS = pa_rec.$(OBJEXT) fdmdv.$(OBJEXT) \ - kiss_fft.$(OBJEXT) -pa_rec_OBJECTS = $(am_pa_rec_OBJECTS) -pa_rec_DEPENDENCIES = -am_pa_recplay_OBJECTS = pa_recplay.$(OBJEXT) fdmdv.$(OBJEXT) \ - kiss_fft.$(OBJEXT) -pa_recplay_OBJECTS = $(am_pa_recplay_OBJECTS) -pa_recplay_DEPENDENCIES = am_scalarlsptest_OBJECTS = scalarlsptest.$(OBJEXT) quantise.$(OBJEXT) \ lpc.$(OBJEXT) lsp.$(OBJEXT) dump.$(OBJEXT) kiss_fft.$(OBJEXT) \ $(am__objects_1) @@ -142,14 +129,12 @@ 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) \ - $(pa_play_SOURCES) $(pa_rec_SOURCES) $(pa_recplay_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) \ - $(pa_play_SOURCES) $(pa_rec_SOURCES) $(pa_recplay_SOURCES) \ $(scalarlsptest_SOURCES) $(t48_8_SOURCES) $(tfdmdv_SOURCES) \ $(tinterp_SOURCES) $(tlspsens_SOURCES) $(tnlp_SOURCES) \ $(tquant_SOURCES) $(vq_train_jvm_SOURCES) $(vqtrain_SOURCES) \ @@ -313,15 +298,6 @@ 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) -pa_play_SOURCES = pa_play.c ../src/fdmdv.c ../src/kiss_fft.c -pa_play_LDADD = $(lib_LTLIBRARIES) -lportaudio -pa_play_LDFLAGS = $(LIBS) -pa_recplay_SOURCES = pa_recplay.c ../src/fdmdv.c ../src/kiss_fft.c -pa_recplay_LDADD = $(lib_LTLIBRARIES) -lportaudio -pa_recplay_LDFLAGS = $(LIBS) all: all-am .SUFFIXES: @@ -377,15 +353,6 @@ 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_play$(EXEEXT): $(pa_play_OBJECTS) $(pa_play_DEPENDENCIES) - @rm -f pa_play$(EXEEXT) - $(LINK) $(pa_play_LDFLAGS) $(pa_play_OBJECTS) $(pa_play_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) -pa_recplay$(EXEEXT): $(pa_recplay_OBJECTS) $(pa_recplay_DEPENDENCIES) - @rm -f pa_recplay$(EXEEXT) - $(LINK) $(pa_recplay_LDFLAGS) $(pa_recplay_OBJECTS) $(pa_recplay_LDADD) $(LIBS) scalarlsptest$(EXEEXT): $(scalarlsptest_OBJECTS) $(scalarlsptest_DEPENDENCIES) @rm -f scalarlsptest$(EXEEXT) $(LINK) $(scalarlsptest_LDFLAGS) $(scalarlsptest_OBJECTS) $(scalarlsptest_LDADD) $(LIBS) @@ -444,9 +411,6 @@ 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_play.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pa_rec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pa_recplay.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_play.c b/codec2-dev/unittest/pa_play.c deleted file mode 100644 index 00ea0868..00000000 --- a/codec2-dev/unittest/pa_play.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - pa_play.c - David Rowe - July 8 2012 - - Converts samples from a 16 bit short 8000 Hz rawfile to 480000Hz - sample rate and plays them using the default sound device. Used as - an intermediate step in Portaudio integration. - - Modified from paex_record.c Portaudio example. Original author - author Phil Burk http://www.softsynth.com -*/ - -/* - * $Id: paex_record.c 1752 2011-09-08 03:21:55Z philburk $ - * - * This program uses the PortAudio Portable Audio Library. - * For more information see: http://www.portaudio.com - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include -#include -#include -#include "portaudio.h" -#include "fdmdv.h" - -#define SAMPLE_RATE 48000 /* 48 kHz sampling rate rec. as we - can trust accuracy of sound - card */ -#define N8 160 /* processing buffer size at 8 kHz */ -#define N48 (N8*FDMDV_OS) /* processing buffer size at 48 kHz */ -#define MEM8 (FDMDV_OS_TAPS/FDMDV_OS) -#define NUM_CHANNELS 2 /* I think most sound cards prefer - stereo, we will convert to mono - as we sample */ - -/* state information passed to call back */ - -typedef struct { - FILE *fin; - float in8k[MEM8 + N8]; -} paTestData; - - -/* - This routine will be called by the PortAudio engine when audio is - required. It may be called at interrupt level on some machines so - don't do anything that could mess up the system like calling - malloc() or free(). -*/ - -static int playCallback( const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, - const PaStreamCallbackTimeInfo* timeInfo, - PaStreamCallbackFlags statusFlags, - void *userData ) -{ - paTestData *data = (paTestData*)userData; - FILE *fin = data->fin; - int i, nread; - int finished; - short *wptr = (short*)outputBuffer; - float *in8k = data->in8k; - float out48k[N48]; - short out48k_short[N48]; - short in8k_short[N8]; - - (void) outputBuffer; /* Prevent unused variable warnings. */ - (void) timeInfo; - (void) statusFlags; - (void) userData; - - /* note Portaudio docs recs. against making systems calls like - fwrite() in this callback but seems to work OK */ - - nread = fread(in8k_short, sizeof(short), N8, fin); - if (nread == N8) - finished = paContinue; - else - finished = paComplete; - - for(i=0; idefaultLowOutputLatency; - outputParameters.hostApiSpecificStreamInfo = NULL; - - /* Play some audio --------------------------------------------- */ - - err = Pa_OpenStream( - &stream, - NULL, - &outputParameters, - SAMPLE_RATE, - N48, - paClipOff, - playCallback, - &data ); - if( err != paNoError ) goto done; - - err = Pa_StartStream( stream ); - if( err != paNoError ) goto done; - - while( ( err = Pa_IsStreamActive( stream ) ) == 1 ) - { - Pa_Sleep(100); - } - if( err < 0 ) goto done; - - err = Pa_CloseStream( stream ); - if( err != paNoError ) goto done; - - fclose(data.fin); - - -done: - Pa_Terminate(); - if( err != paNoError ) - { - fprintf( stderr, "An error occured while using the portaudio stream\n" ); - fprintf( stderr, "Error number: %d\n", err ); - fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( err ) ); - err = 1; /* Always return 0 or 1, but no other return codes. */ - } - return err; -} - diff --git a/codec2-dev/unittest/pa_rec.c b/codec2-dev/unittest/pa_rec.c deleted file mode 100644 index 79366621..00000000 --- a/codec2-dev/unittest/pa_rec.c +++ /dev/null @@ -1,210 +0,0 @@ -/* - pa_rec.c - David Rowe - July 6 2012 - - Records at 48000 Hz from default sound device, convertes to 8 kHz, - and saves to raw file. Used to get experience with Portaudio. - - Modified from paex_record.c Portaudio example. Original author - author Phil Burk http://www.softsynth.com - - To Build: - - gcc paex_rec.c -o paex_rec -lm -lrt -lportaudio -pthread -*/ - -/* - * $Id: paex_record.c 1752 2011-09-08 03:21:55Z philburk $ - * - * This program uses the PortAudio Portable Audio Library. - * For more information see: http://www.portaudio.com - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include -#include -#include -#include "portaudio.h" -#include "fdmdv.h" - -#define SAMPLE_RATE 48000 /* 48 kHz sampling rate rec. as we - can trust accuracy of sound - card */ -#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 prefer - stereo, we will convert to mono - as we sample */ - -/* state information passed to call back */ - -typedef struct { - FILE *fout; - int framesLeft; - float in48k[FDMDV_OS_TAPS + N48]; -} paTestData; - - -/* - This routine will be called by the PortAudio engine when audio is - available. It may be called at interrupt level on some machines so - don't do anything that could mess up the system like calling - malloc() or free(). -*/ - -static int recordCallback( const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, - const PaStreamCallbackTimeInfo* timeInfo, - PaStreamCallbackFlags statusFlags, - void *userData ) -{ - paTestData *data = (paTestData*)userData; - FILE *fout = data->fout; - int framesToCopy; - int i, n8; - int finished; - short *rptr = (short*)inputBuffer; - float out8k[N8]; - short out8k_short[N8]; - - (void) outputBuffer; /* Prevent unused variable warnings. */ - (void) timeInfo; - (void) statusFlags; - (void) userData; - - if (data->framesLeft < framesPerBuffer) { - framesToCopy = data->framesLeft; - finished = paComplete; - } - else { - framesToCopy = framesPerBuffer; - finished = paContinue; - } - data->framesLeft -= framesToCopy; - - assert(inputBuffer != NULL); - - /* 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]; - - /* save 8k to disk */ - - for(i=0; idefaultLowInputLatency; - inputParameters.hostApiSpecificStreamInfo = NULL; - - /* Record some audio --------------------------------------------- */ - - err = Pa_OpenStream( - &stream, - &inputParameters, - NULL, /* &outputParameters, */ - SAMPLE_RATE, - N48, - paClipOff, /* we won't output out of range samples so don't bother clipping them */ - recordCallback, - &data ); - if( err != paNoError ) goto done; - - err = Pa_StartStream( stream ); - if( err != paNoError ) goto done; - - while( ( err = Pa_IsStreamActive( stream ) ) == 1 ) - { - Pa_Sleep(100); - } - if( err < 0 ) goto done; - - err = Pa_CloseStream( stream ); - if( err != paNoError ) goto done; - - fclose(data.fout); - - -done: - Pa_Terminate(); - if( err != paNoError ) - { - fprintf( stderr, "An error occured while using the portaudio stream\n" ); - fprintf( stderr, "Error number: %d\n", err ); - fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( err ) ); - err = 1; /* Always return 0 or 1, but no other return codes. */ - } - return err; -} - diff --git a/codec2-dev/unittest/pa_recplay.c b/codec2-dev/unittest/pa_recplay.c deleted file mode 100644 index c62eb905..00000000 --- a/codec2-dev/unittest/pa_recplay.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - pa_recplay.c - David Rowe - July 8 2012 - - Echos audio from sound card input to sound card output. Samples at - 48 kHz, converts to 8 kHz, converts back to 48kHz, and plays using - the default sound device. Used as an intermediate step in - Portaudio integration. - - Modified from paex_record.c Portaudio example. Original author - author Phil Burk http://www.softsynth.com -*/ - -/* - * $Id: paex_record.c 1752 2011-09-08 03:21:55Z philburk $ - * - * This program uses the PortAudio Portable Audio Library. - * For more information see: http://www.portaudio.com - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include -#include -#include -#include "portaudio.h" -#include "fdmdv.h" - -#define SAMPLE_RATE 48000 /* 48 kHz sampling rate rec. as we - can trust accuracy of sound - card */ -#define N8 160 /* processing buffer size at 8 kHz */ -#define N48 (N8*FDMDV_OS) /* processing buffer size at 48 kHz */ -#define MEM8 (FDMDV_OS_TAPS/FDMDV_OS) -#define NUM_CHANNELS 2 /* I think most sound cards prefer - stereo, we will convert to mono - as we sample */ - -/* state information passed to call back */ - -typedef struct { - float in48k[FDMDV_OS_TAPS + N48]; - float in8k[MEM8 + N8]; -} paTestData; - - -/* - This routine will be called by the PortAudio engine when audio is - required. It may be called at interrupt level on some machines so - don't do anything that could mess up the system like calling - malloc() or free(). -*/ - -static int callback( const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, - const PaStreamCallbackTimeInfo* timeInfo, - PaStreamCallbackFlags statusFlags, - void *userData ) -{ - paTestData *data = (paTestData*)userData; - int i; - short *rptr = (short*)inputBuffer; - short *wptr = (short*)outputBuffer; - float *in8k = data->in8k; - float *in48k = data->in48k; - float out8k[N8]; - float out48k[N48]; - short out48k_short[N48]; - - (void) outputBuffer; /* Prevent unused variable warnings. */ - (void) timeInfo; - (void) statusFlags; - (void) userData; - - assert(inputBuffer != NULL); - - /* just use left channel */ - - for(i=0; iin48k[i+FDMDV_OS_TAPS] = *rptr; - - /* downsample and update filter memory */ - - fdmdv_48_to_8(out8k, &in48k[FDMDV_OS_TAPS], N8); - for(i=0; idefaultLowInputLatency; - inputParameters.hostApiSpecificStreamInfo = NULL; - - outputParameters.device = Pa_GetDefaultOutputDevice(); /* default input device */ - if (outputParameters.device == paNoDevice) { - fprintf(stderr,"Error: No default output device.\n"); - goto done; - } - outputParameters.channelCount = NUM_CHANNELS; /* stereo input */ - outputParameters.sampleFormat = paInt16; - outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultLowOutputLatency; - outputParameters.hostApiSpecificStreamInfo = NULL; - - /* Play some audio --------------------------------------------- */ - - err = Pa_OpenStream( - &stream, - &inputParameters, - &outputParameters, - SAMPLE_RATE, - N48, - paClipOff, - callback, - &data ); - if( err != paNoError ) goto done; - - err = Pa_StartStream( stream ); - if( err != paNoError ) goto done; - - while( ( err = Pa_IsStreamActive( stream ) ) == 1 ) - { - Pa_Sleep(100); - } - if( err < 0 ) goto done; - - err = Pa_CloseStream( stream ); - if( err != paNoError ) goto done; - - -done: - Pa_Terminate(); - if( err != paNoError ) - { - fprintf( stderr, "An error occured while using the portaudio stream\n" ); - fprintf( stderr, "Error number: %d\n", err ); - fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( err ) ); - err = 1; /* Always return 0 or 1, but no other return codes. */ - } - return err; -} - -- 2.25.1