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.
This commit is contained in:
philburk 2011-02-28 23:56:48 +00:00
commit 7aad01a1d3
5 changed files with 49 additions and 25 deletions

View file

@ -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

View file

@ -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) )
{

View file

@ -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 */

View file

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

View file

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