r2630 - trunk/libminisip/source/soundcard
mikma at minisip.org
mikma at minisip.org
Sun Jun 4 15:09:36 CEST 2006
Author: mikma
Date: 2006-06-04 15:09:35 +0200 (Sun, 04 Jun 2006)
New Revision: 2630
Modified:
trunk/libminisip/source/soundcard/DirectSoundDriver.cxx
Log:
Enumerate sound capture devices.
Modified: trunk/libminisip/source/soundcard/DirectSoundDriver.cxx
===================================================================
--- trunk/libminisip/source/soundcard/DirectSoundDriver.cxx 2006-06-04 13:08:20 UTC (rev 2629)
+++ trunk/libminisip/source/soundcard/DirectSoundDriver.cxx 2006-06-04 13:09:35 UTC (rev 2630)
@@ -63,7 +63,8 @@
}
static BOOL CALLBACK dsEnumCallback(LPGUID guid, LPCSTR description,
- LPCSTR module, LPVOID context){
+ LPCSTR module, LPVOID context,
+ bool capture){
std::vector<SoundDeviceName> *names = (std::vector<SoundDeviceName>*)context;
string uuid;
@@ -79,21 +80,38 @@
uuid = "0";
}
- string name = DRIVER_PREFIX + ':' + uuid;
- SoundDeviceName deviceName( name, description );
+ string name = string( DRIVER_PREFIX ) + ':' + uuid;
+ // FIXME detect channel count.
+ int maxInputChannels = capture ? 2 : 0;
+ int maxOutputChannels = capture ? 0 : 2;
+ SoundDeviceName deviceName( name, description, maxInputChannels, maxOutputChannels );
names->push_back( deviceName );
return true;
}
+static BOOL CALLBACK dsEnumPlaybackCallback(LPGUID guid, LPCSTR description,
+ LPCSTR module, LPVOID context){
+ return dsEnumCallback(guid, description, module, context, false);
+}
+
+static BOOL CALLBACK dsEnumCaptureCallback(LPGUID guid, LPCSTR description,
+ LPCSTR module, LPVOID context){
+ return dsEnumCallback(guid, description, module, context, true);
+}
+
std::vector<SoundDeviceName> DirectSoundDriver::getDeviceNames() const {
std::vector<SoundDeviceName> names;
- if( DirectSoundEnumerate( dsEnumCallback, &names ) != DS_OK ){
+ if( DirectSoundEnumerate( dsEnumPlaybackCallback, &names ) != DS_OK ){
cerr << "DirectSoundDriver::getDeviceNames DirectSoundEnumerate failed" << endl;
}
+ if( DirectSoundCaptureEnumerate( dsEnumCaptureCallback, &names ) != DS_OK ){
+ cerr << "DirectSoundDriver::getDeviceNames DirectSoundEnumerate failed" << endl;
+ }
+
return names;
}
More information about the Minisip-devel
mailing list