diff options
Diffstat (limited to 'portaudio/test/patest_jack_wasapi.c')
-rw-r--r-- | portaudio/test/patest_jack_wasapi.c | 343 |
1 files changed, 0 insertions, 343 deletions
diff --git a/portaudio/test/patest_jack_wasapi.c b/portaudio/test/patest_jack_wasapi.c deleted file mode 100644 index bd79881..0000000 --- a/portaudio/test/patest_jack_wasapi.c +++ /dev/null @@ -1,343 +0,0 @@ -/** @file pa_test_jack_wasapi.c - @ingroup test_src - @brief Print out jack information for WASAPI endpoints - @author Reid Bishop <rbish@attglobal.net> -*/ -/* - * $Id: pa_test_jack_wasapi.c 1368 2008-03-01 00:38:27Z rbishop $ - * - * This program uses the PortAudio Portable Audio Library. - * For more information see: http://www.portaudio.com/ - * Copyright (c) 1999-2010 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. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ -#include <stdio.h> -#include "portaudio.h" -#include "pa_win_wasapi.h" - - -/* -* Helper function to determine if a given enum is present in mask variable -* -*/ -static int IsInMask(int val, int val2) -{ - return ((val & val2) == val2); -} - -/* -* This routine enumerates through the ChannelMapping for the IJackDescription -*/ - -static void EnumIJackChannels(int channelMapping) -{ - printf("Channel Mapping: "); - if(channelMapping == PAWIN_SPEAKER_DIRECTOUT) - { - printf("DIRECTOUT\n"); - return; - } - if(IsInMask(channelMapping, PAWIN_SPEAKER_FRONT_LEFT)) - printf("FRONT_LEFT, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_FRONT_RIGHT)) - printf("FRONT_RIGHT, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_FRONT_CENTER)) - printf("FRONT_CENTER, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_LOW_FREQUENCY)) - printf("LOW_FREQUENCY, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_BACK_LEFT)) - printf("BACK_LEFT, "); - if(IsInMask(channelMapping,PAWIN_SPEAKER_BACK_RIGHT)) - printf("BACK_RIGHT, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_FRONT_LEFT_OF_CENTER)) - printf("FRONT_LEFT_OF_CENTER, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_FRONT_RIGHT_OF_CENTER)) - printf("FRONT_RIGHT_OF_CENTER, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_BACK_CENTER)) - printf("BACK_CENTER, "); - if(IsInMask(channelMapping,PAWIN_SPEAKER_SIDE_LEFT)) - printf("SIDE_LEFT, "); - if(IsInMask(channelMapping,PAWIN_SPEAKER_SIDE_RIGHT)) - printf("SIDE_RIGHT, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_TOP_CENTER)) - printf("TOP_CENTER, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_TOP_FRONT_LEFT)) - printf("TOP_FRONT_LEFT, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_TOP_FRONT_CENTER)) - printf("TOP_FRONT_CENTER, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_TOP_FRONT_RIGHT)) - printf("TOP_FRONT_RIGHT, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_TOP_BACK_LEFT)) - printf("TOP_BACK_LEFT, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_TOP_BACK_CENTER)) - printf("TOP_BACK_CENTER, "); - if(IsInMask(channelMapping, PAWIN_SPEAKER_TOP_BACK_RIGHT)) - printf("TOP_BACK_RIGHT, "); - - printf("\n"); -} - -/* -* This routine enumerates through the Jack Connection Types enums for IJackDescription -*/ -static void EnumIJackConnectionType(int cType) -{ - printf("Connection Type: "); - switch(cType) - { - case eJackConnTypeUnknown: - printf("eJackConnTypeUnknown"); - break; - case eJackConnType3Point5mm: - printf("eJackConnType3Point5mm"); - break; - case eJackConnTypeQuarter: - printf("eJackConnTypeQuarter"); - break; - case eJackConnTypeAtapiInternal: - printf("eJackConnTypeAtapiInternal"); - break; - case eJackConnTypeRCA: - printf("eJackConnTypeRCA"); - break; - case eJackConnTypeOptical: - printf("eJackConnTypeOptical"); - break; - case eJackConnTypeOtherDigital: - printf("eJackConnTypeOtherDigital"); - break; - case eJackConnTypeOtherAnalog: - printf("eJackConnTypeOtherAnalog"); - break; - case eJackConnTypeMultichannelAnalogDIN: - printf("eJackConnTypeMultichannelAnalogDIN"); - break; - case eJackConnTypeXlrProfessional: - printf("eJackConnTypeXlrProfessional"); - break; - case eJackConnTypeRJ11Modem: - printf("eJackConnTypeRJ11Modem"); - break; - case eJackConnTypeCombination: - printf("eJackConnTypeCombination"); - break; - } - printf("\n"); -} - -/* -* This routine enumerates through the GeoLocation enums for the IJackDescription -*/ -static void EnumIJackGeoLocation(int iVal) -{ - printf("Geometric Location: "); - switch(iVal) - { - case eJackGeoLocRear: - printf("eJackGeoLocRear"); - break; - case eJackGeoLocFront: - printf("eJackGeoLocFront"); - break; - case eJackGeoLocLeft: - printf("eJackGeoLocLeft"); - break; - case eJackGeoLocRight: - printf("eJackGeoLocRight"); - break; - case eJackGeoLocTop: - printf("eJackGeoLocTop"); - break; - case eJackGeoLocBottom: - printf("eJackGeoLocBottom"); - break; - case eJackGeoLocRearPanel: - printf("eJackGeoLocRearPanel"); - break; - case eJackGeoLocRiser: - printf("eJackGeoLocRiser"); - break; - case eJackGeoLocInsideMobileLid: - printf("eJackGeoLocInsideMobileLid"); - break; - case eJackGeoLocDrivebay: - printf("eJackGeoLocDrivebay"); - break; - case eJackGeoLocHDMI: - printf("eJackGeoLocHDMI"); - break; - case eJackGeoLocOutsideMobileLid: - printf("eJackGeoLocOutsideMobileLid"); - break; - case eJackGeoLocATAPI: - printf("eJackGeoLocATAPI"); - break; - } - printf("\n"); -} - -/* -* This routine enumerates through the GenLocation enums for the IJackDescription -*/ -static void EnumIJackGenLocation(int iVal) -{ - printf("General Location: "); - switch(iVal) - { - case eJackGenLocPrimaryBox: - printf("eJackGenLocPrimaryBox"); - break; - case eJackGenLocInternal: - printf("eJackGenLocInternal"); - break; - case eJackGenLocSeparate: - printf("eJackGenLocSeparate"); - break; - case eJackGenLocOther: - printf("eJackGenLocOther"); - break; - } - printf("\n"); -} - -/* -* This routine enumerates through the PortConnection enums for the IJackDescription -*/ -static void EnumIJackPortConnection(int iVal) -{ - printf("Port Type: "); - switch(iVal) - { - case eJackPortConnJack: - printf("eJackPortConnJack"); - break; - case eJackPortConnIntegratedDevice: - printf("eJackPortConnIntegratedDevice"); - break; - case eJackPortConnBothIntegratedAndJack: - printf("eJackPortConnBothIntegratedAndJack"); - break; - case eJackPortConnUnknown: - printf("eJackPortConnUnknown"); - break; - } - printf("\n"); -} - -/* -* This routine retrieves and parses the KSJACK_DESCRIPTION structure for -* the provided device ID. -*/ -static PaError GetJackInformation(int deviceId) -{ - PaError err; - int i; - int jackCount = 0; - PaWasapiJackDescription jackDesc; - - err = PaWasapi_GetJackCount(deviceId, &jackCount); - if( err != paNoError ) return err; - - fprintf( stderr,"Number of Jacks: %d \n", jackCount ); - - for( i = 0; i<jackCount; i++ ) - { - fprintf( stderr,"Jack #%d:\n", i ); - - err = PaWasapi_GetJackDescription(deviceId, i, &jackDesc); - if( err != paNoError ) - { - fprintf( stderr,"Failed getting description." ); - continue; - } - else - { - printf("Is connected: %s\n",(jackDesc.isConnected)?"true":"false"); - EnumIJackChannels(jackDesc.channelMapping); - EnumIJackConnectionType(jackDesc.connectionType); - EnumIJackGeoLocation(jackDesc.geoLocation); - EnumIJackGenLocation(jackDesc.genLocation); - EnumIJackPortConnection(jackDesc.portConnection); - printf("Jack Color: 0x%06X\n", jackDesc.color); - printf("\n"); - } - } - return 0; -} - - -/*******************************************************************/ -int main(void); -int main(void) -{ - PaError err; - const PaDeviceInfo *device; - int i; - int jackCount = 0; - int isInput = 0; - - printf("PortAudio Test: WASAPI Jack Configuration"); - err = Pa_Initialize(); - if( err != paNoError ) goto error; - - /* Find all WASAPI devices */ - for( i = 0; i < Pa_GetDeviceCount(); ++i ) - { - device = Pa_GetDeviceInfo(i); - if( Pa_GetDeviceInfo(i)->hostApi == Pa_HostApiTypeIdToHostApiIndex(paWASAPI) ) - { - if( device->maxOutputChannels == 0 ) - { - isInput = 1; - } - printf("------------------------------------------\n"); - printf("Device: %s",device->name); - if(isInput) - printf(" (Input) %d Channels\n",device->maxInputChannels); - else - printf(" (Output) %d Channels\n",device->maxOutputChannels); - // Try to see if this WASAPI device can provide Jack information - err = GetJackInformation(i); - if( err != paNoError ) goto error; - } - } - Pa_Terminate(); - printf("Test finished.\n"); - return err; - -error: - Pa_Terminate(); - fprintf( stderr, "An error occurred while using the portaudio stream\n" ); - fprintf( stderr, "Error number: %d\n", err ); - fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( err ) ); - return err; -} |