From: philburk Date: Mon, 28 Feb 2011 23:56:48 +0000 (+0000) Subject: Added patest_write_sine_nonint to Makefile. X-Git-Tag: pa_stable_v19_20110326_r1647~35 X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=7aad01a1d38be5903e24f2c8b209bf4a77fbbd50;p=portaudio Added patest_write_sine_nonint to Makefile. Check for paNonInterleaved on Mac and return paSampleFormatNotSupported. Fix pa_minlat.c. Linux was complaining about not checking fgets return value. --- diff --git a/Makefile.in b/Makefile.in index 87e6c7c..c613ca1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -95,6 +95,7 @@ TESTS = \ bin/patest_underflow \ bin/patest_wire \ bin/patest_write_sine \ + bin/patest_write_sine_nonint \ bin/pa_devs \ bin/pa_fuzz \ bin/pa_minlat diff --git a/qa/loopback/src/paqa.c b/qa/loopback/src/paqa.c index c5d9eca..5ad9368 100644 --- a/qa/loopback/src/paqa.c +++ b/qa/loopback/src/paqa.c @@ -292,7 +292,7 @@ static int RecordAndPlayBlockingIO( PaStream *inStream, long framesPerBuffer = test->framesPerBuffer; if( framesPerBuffer <= 0 ) { - framesPerBuffer = 64; // bigger values might run past end of recording + framesPerBuffer = maxPerBuffer; // bigger values might run past end of recording } // Read in audio. @@ -553,7 +553,7 @@ static void PaQa_TeardownLoopbackContext( LoopbackContext *loopbackContextPtr ) /*******************************************************************/ static void PaQa_PrintShortErrorReport( PaQaAnalysisResult *analysisResultPtr, int channel ) { - printf("#%d ", channel); + printf("channel %d ", channel); if( analysisResultPtr->popPosition > 0 ) { printf("POP %0.3f at %d, ", (double)analysisResultPtr->popAmplitude, (int)analysisResultPtr->popPosition ); @@ -1008,7 +1008,7 @@ int main( int argc, char **argv ) } } - result = PaQa_TestAnalyzer(); + //result = PaQa_TestAnalyzer(); if( (result == 0) && (justMath == 0) ) { diff --git a/src/hostapi/coreaudio/pa_mac_core.c b/src/hostapi/coreaudio/pa_mac_core.c index 7862d0e..d1decc9 100644 --- a/src/hostapi/coreaudio/pa_mac_core.c +++ b/src/hostapi/coreaudio/pa_mac_core.c @@ -1340,13 +1340,19 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, (float) sampleRate, framesPerBuffer )); VDBUG( ("Opening Stream.\n") ); - + /*These first few bits of code are from paSkeleton with few modifications.*/ if( inputParameters ) { inputChannelCount = inputParameters->channelCount; inputSampleFormat = inputParameters->sampleFormat; + /* @todo Blocking read/write on Mac is not yet supported. */ + if( inputSampleFormat & paNonInterleaved ) + { + return paSampleFormatNotSupported; + } + /* unless alternate device specification is supported, reject the use of paUseHostApiSpecificDeviceSpecification */ @@ -1371,6 +1377,12 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, outputChannelCount = outputParameters->channelCount; outputSampleFormat = outputParameters->sampleFormat; + /* @todo Blocking read/write on Mac is not yet supported. */ + if( outputSampleFormat & paNonInterleaved ) + { + return paSampleFormatNotSupported; + } + /* unless alternate device specification is supported, reject the use of paUseHostApiSpecificDeviceSpecification */ diff --git a/src/hostapi/coreaudio/pa_mac_core_blocking.c b/src/hostapi/coreaudio/pa_mac_core_blocking.c index 6d31a71..5a98826 100644 --- a/src/hostapi/coreaudio/pa_mac_core_blocking.c +++ b/src/hostapi/coreaudio/pa_mac_core_blocking.c @@ -71,12 +71,12 @@ #endif /* - * This fnuction determines the size of a particular sample format. + * This function determines the size of a particular sample format. * if the format is not recognized, this returns zero. */ static size_t computeSampleSizeFromFormat( PaSampleFormat format ) { - switch( format ) { + switch( format & (~paNonInterleaved) ) { case paFloat32: return 4; case paInt32: return 4; case paInt24: return 3; @@ -91,7 +91,7 @@ static size_t computeSampleSizeFromFormat( PaSampleFormat format ) */ static size_t computeSampleSizeFromFormatPow2( PaSampleFormat format ) { - switch( format ) { + switch( format & (~paNonInterleaved) ) { case paFloat32: return 4; case paInt32: return 4; case paInt24: return 4; diff --git a/test/pa_minlat.c b/test/pa_minlat.c index c9dad0b..0106cf3 100644 --- a/test/pa_minlat.c +++ b/test/pa_minlat.c @@ -107,6 +107,7 @@ int main( int argc, char **argv ) int framesPerBuffer; double sampleRate = 44100.0; char str[256]; + char *line; printf("pa_minlat - Determine minimum latency for your computer.\n"); printf(" usage: pa_minlat {userBufferSize}\n"); @@ -157,24 +158,34 @@ int main( int argc, char **argv ) /* Ask user for a new nlatency. */ printf("\nMove windows around to see if the sound glitches.\n"); printf("Latency now %d, enter new number of frames, or 'q' to quit: ", outLatency ); - fgets( str, 256, stdin ); - { - /* Get rid of newline */ - size_t l = strlen( str ) - 1; - if( str[ l ] == '\n') - str[ l ] = '\0'; - } - if( str[0] == 'q' ) go = 0; - else - { - outLatency = atol( str ); - if( outLatency < minLatency ) - { - printf( "Latency below minimum of %d! Set to minimum!!!\n", minLatency ); - outLatency = minLatency; - } - } - /* Stop sound until ENTER hit. */ + line = fgets( str, 256, stdin ); + if( line == NULL ) + { + go = 0; + } + else + { + { + /* Get rid of newline */ + size_t l = strlen( str ) - 1; + if( str[ l ] == '\n') + str[ l ] = '\0'; + } + + + if( str[0] == 'q' ) go = 0; + else + { + outLatency = atol( str ); + if( outLatency < minLatency ) + { + printf( "Latency below minimum of %d! Set to minimum!!!\n", minLatency ); + outLatency = minLatency; + } + } + + } + /* Stop sound until ENTER hit. */ err = Pa_StopStream( stream ); if( err != paNoError ) goto error; err = Pa_CloseStream( stream );