105 lines
3.1 KiB
C
105 lines
3.1 KiB
C
#include <stdio.h>
|
|
|
|
#ifdef USE_PORTAUDIO
|
|
#include <portaudio.h>
|
|
|
|
#ifdef WIN32
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
void printPortAudioDevices()
|
|
{
|
|
int i, numDevices, defaultDisplayed;
|
|
const PaDeviceInfo *deviceInfo;
|
|
PaStreamParameters inputParameters, outputParameters;
|
|
PaError err;
|
|
|
|
|
|
Pa_Initialize();
|
|
|
|
printf( "\nPortAudio version number = %d\nPortAudio version text = '%s'\n",
|
|
Pa_GetVersion(), Pa_GetVersionText() );
|
|
|
|
|
|
numDevices = Pa_GetDeviceCount();
|
|
if( numDevices < 0 )
|
|
{
|
|
printf( "ERROR: Pa_GetDeviceCount returned 0x%x\n", numDevices );
|
|
err = numDevices;
|
|
goto error;
|
|
}
|
|
|
|
printf( "Number of devices = %d\n", numDevices );
|
|
for( i=0; i<numDevices; i++ )
|
|
{
|
|
deviceInfo = Pa_GetDeviceInfo( i );
|
|
printf( "--------------------------------------- device #%d\n", i );
|
|
|
|
/* Mark global and API specific default devices */
|
|
defaultDisplayed = 0;
|
|
if( i == Pa_GetDefaultInputDevice() )
|
|
{
|
|
printf( "[ Default Input" );
|
|
defaultDisplayed = 1;
|
|
}
|
|
else if( i == Pa_GetHostApiInfo( deviceInfo->hostApi )->defaultInputDevice )
|
|
{
|
|
const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo( deviceInfo->hostApi );
|
|
printf( "[ Default %s Input", hostInfo->name );
|
|
defaultDisplayed = 1;
|
|
}
|
|
|
|
if( i == Pa_GetDefaultOutputDevice() )
|
|
{
|
|
printf( (defaultDisplayed ? "," : "[") );
|
|
printf( " Default Output" );
|
|
defaultDisplayed = 1;
|
|
}
|
|
else if( i == Pa_GetHostApiInfo( deviceInfo->hostApi )->defaultOutputDevice )
|
|
{
|
|
const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo( deviceInfo->hostApi );
|
|
printf( (defaultDisplayed ? "," : "[") );
|
|
printf( " Default %s Output", hostInfo->name );
|
|
defaultDisplayed = 1;
|
|
}
|
|
|
|
if( defaultDisplayed )
|
|
printf( " ]\n" );
|
|
|
|
/* print device info fields */
|
|
#ifdef WIN32
|
|
{ /* Use wide char on windows, so we can show UTF-8 encoded device names */
|
|
wchar_t wideName[MAX_PATH];
|
|
MultiByteToWideChar(CP_UTF8, 0, deviceInfo->name, -1, wideName, MAX_PATH-1);
|
|
wprintf( L"Name = %s\n", wideName );
|
|
}
|
|
#else
|
|
printf( "Name = %s\n", deviceInfo->name );
|
|
#endif
|
|
printf( "Host API = %s\n", Pa_GetHostApiInfo( deviceInfo->hostApi )->name );
|
|
printf( "Max inputs = %d", deviceInfo->maxInputChannels );
|
|
printf( ", Max outputs = %d\n", deviceInfo->maxOutputChannels );
|
|
printf( "Default sample rate = %8.2f\n", deviceInfo->defaultSampleRate );
|
|
}
|
|
|
|
Pa_Terminate();
|
|
|
|
printf("----------------------------------------------\n");
|
|
return;
|
|
|
|
error:
|
|
Pa_Terminate();
|
|
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 ) );
|
|
}
|
|
|
|
#else
|
|
|
|
void printPortAudioDevices()
|
|
{
|
|
printf("PortAudio not supported in this build of dsd\n");
|
|
}
|
|
|
|
#endif
|