- Implement support of using mmixer wave in/out library functions (not yet used)
- Not yet used
- Remove DIGCF_PRESENT flag from device list as setupapi cannot handle this yet properly
svn path=/trunk/; revision=44663
DeviceHandle = SetupDiGetClassDevs(&CategoryGuid,
NULL,
NULL,
- DIGCF_DEVICEINTERFACE|DIGCF_PRESENT);
+ DIGCF_DEVICEINTERFACE/* FIXME |DIGCF_PRESENT*/);
if (DeviceHandle == INVALID_HANDLE_VALUE)
{
return MMSYSERR_ERROR;
}
+
+ULONG
+WdmAudGetWaveOutCount()
+{
+ return MMixerGetWaveOutCount(&MixerContext);
+}
+
+ULONG
+WdmAudGetWaveInCount()
+{
+ return MMixerGetWaveInCount(&MixerContext);
+}
+
+MMRESULT
+WdmAudGetWaveOutCapabilities(
+ IN ULONG DeviceId,
+ LPWAVEOUTCAPSW Capabilities)
+{
+ if (MMixerWaveOutCapabilities(&MixerContext, DeviceId, Capabilities) == MM_STATUS_SUCCESS)
+ return MMSYSERR_NOERROR;
+
+ return MMSYSERR_ERROR;
+
+}
+
+MMRESULT
+WdmAudGetWaveInCapabilities(
+ IN ULONG DeviceId,
+ LPWAVEINCAPSW Capabilities)
+{
+ if (MMixerWaveInCapabilities(&MixerContext, DeviceId, Capabilities) == MM_STATUS_SUCCESS)
+ return MMSYSERR_NOERROR;
+
+ return MMSYSERR_ERROR;
+}
+
+MMRESULT
+WdmAudOpenWave(
+ OUT PHANDLE hPin,
+ IN DWORD DeviceId,
+ IN PWAVEFORMATEX WaveFormat,
+ IN DWORD bWaveIn)
+{
+ if (MMixerOpenWave(&MixerContext, DeviceId, bWaveIn, WaveFormat, hPin) == MM_STATUS_SUCCESS)
+ {
+ //fixme
+ // start stream if waveout
+ return MMSYSERR_NOERROR;
+ }
+ return MMSYSERR_ERROR;
+}
{
#ifdef USE_MMIXER_LIB
- *DeviceCount = WdmAudGetMixerCount();
+ switch(DeviceType)
+ {
+ case MIXER_DEVICE_TYPE:
+ *DeviceCount = WdmAudGetMixerCount();
+ break;
+ case WAVE_OUT_DEVICE_TYPE:
+ *DeviceCount = WdmAudGetWaveOutCount();
+ break;
+ case WAVE_IN_DEVICE_TYPE:
+ *DeviceCount = WdmAudGetWaveInCount();
+ break;
+ default:
+ *DeviceCount = 0;
+ }
return MMSYSERR_NOERROR;
#else
#ifdef USE_MMIXER_LIB
if (DeviceType == MIXER_DEVICE_TYPE)
{
- return WdmAudGetMixerCapabilties(DeviceId, (LPMIXERCAPSW)Capabilities);
+ return WdmAudGetMixerCapabilities(DeviceId, (LPMIXERCAPSW)Capabilities);
+ }
+ else if (DeviceType == WAVE_OUT_DEVICE_TYPE)
+ {
+ return WdmAudGetWaveOutCapabilities(DeviceId, (LPWAVEOUTCAPSW)Capabilities);
+ }
+ else if (DeviceType == WAVE_IN_DEVICE_TYPE)
+ {
+ return WdmAudGetWaveInCapabilities(DeviceId, (LPWAVEINCAPSW)Capabilities);
}
+
#endif
return MMSYSERR_NOERROR;
}
-
Result = GetSoundDeviceType(SoundDevice, &DeviceType);
+
+#ifdef USE_MMIXER_LIB
+ return WdmAudOpenWavePin(Instance, DeviceId, WaveFormat, DeviceType);
+#endif
+
+
SND_ASSERT( Result == MMSYSERR_NOERROR );
ZeroMemory(&DeviceInfo, sizeof(WDMAUD_DEVICE_INFO));
BOOL
WdmAudInitUserModeMixer();
+ULONG
+WdmAudGetWaveOutCount();
+
+ULONG
+WdmAudGetWaveInCount();
+
ULONG
WdmAudGetMixerCount();
IN ULONG DeviceId,
LPMIXERCAPSW Capabilities);
+MMRESULT
+WdmAudGetWaveOutCapabilities(
+ IN ULONG DeviceId,
+ LPWAVEOUTCAPSW Capabilities);
+
+MMRESULT
+WdmAudGetWaveInCapabilities(
+ IN ULONG DeviceId,
+ LPWAVEINCAPSW Capabilities);
+
MMRESULT
WdmAudCloseMixer(
IN HMIXER Handle,
IN ULONG DeviceId,
IN HANDLE hNotifyEvent);
+MMRESULT
+WdmAudOpenWave(
+ OUT PHANDLE hPin,
+ IN DWORD DeviceId,
+ IN PWAVEFORMATEX WaveFormat,
+ IN DWORD bWaveIn);
+
+
MMRESULT
WdmAudGetLineInfo(
IN HANDLE hMixer,
<library>msvcrt</library>
<library>mmixer</library>
<library>setupapi</library>
+ <library>ksuser</library>
<file>wdmaud.c</file>
<file>mixer.c</file>
<file>mmixer.c</file>