mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 05:55:42 +00:00
[AUDIO-BRINGUP]
- Pass audio device id to wdmaud.drv callback functions - Extend VALIDATE_MMSYS_PARAMETER macro - Handle case when the caller does not pass handle of mixer, but a device id - Pass device id to mmixer library - Remove dead code - MS sndvol32.exe now gets further, but crashes in user32 IntCallMessageProc svn path=/branches/audio-bringup/; revision=49931
This commit is contained in:
parent
6c8e7899a9
commit
6cee9e1837
6 changed files with 114 additions and 107 deletions
|
@ -20,6 +20,7 @@
|
|||
|
||||
MMRESULT
|
||||
MmeGetLineInfo(
|
||||
IN UINT DeviceId,
|
||||
IN UINT Message,
|
||||
IN DWORD_PTR PrivateHandle,
|
||||
IN DWORD_PTR Parameter1,
|
||||
|
@ -32,6 +33,21 @@ MmeGetLineInfo(
|
|||
|
||||
//SND_TRACE(L"Getting mixer info %u\n", Message);
|
||||
|
||||
if ( PrivateHandle == 0 )
|
||||
{
|
||||
Result = GetSoundDevice(MIXER_DEVICE_TYPE, DeviceId, &SoundDevice);
|
||||
|
||||
if ( ! MMSUCCESS(Result) )
|
||||
return TranslateInternalMmResult(Result);
|
||||
|
||||
Result = GetSoundDeviceFunctionTable(SoundDevice, &FunctionTable);
|
||||
if ( ! MMSUCCESS(Result) )
|
||||
return TranslateInternalMmResult(Result);
|
||||
|
||||
Result = FunctionTable->QueryMixerInfo(NULL, DeviceId, Message, (LPVOID)Parameter1, Parameter2);
|
||||
return Result;
|
||||
}
|
||||
|
||||
VALIDATE_MMSYS_PARAMETER( PrivateHandle );
|
||||
SoundDeviceInstance = (PSOUND_DEVICE_INSTANCE) PrivateHandle;
|
||||
|
||||
|
@ -46,7 +62,7 @@ MmeGetLineInfo(
|
|||
if ( ! FunctionTable->QueryMixerInfo )
|
||||
return MMSYSERR_NOTSUPPORTED;
|
||||
|
||||
Result = FunctionTable->QueryMixerInfo(SoundDeviceInstance, Message, (LPVOID)Parameter1, Parameter2);
|
||||
Result = FunctionTable->QueryMixerInfo(SoundDeviceInstance, DeviceId, Message, (LPVOID)Parameter1, Parameter2);
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
@ -100,7 +116,7 @@ mxdMessage(
|
|||
(LPWAVEOPENDESC) Parameter1, /* unused */
|
||||
Parameter2,
|
||||
(DWORD*) PrivateHandle);
|
||||
|
||||
VALIDATE_MMSYS_PARAMETER(*(DWORD_PTR*)PrivateHandle);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -113,7 +129,8 @@ mxdMessage(
|
|||
|
||||
case MXDM_GETCONTROLDETAILS :
|
||||
{
|
||||
Result = MmeGetLineInfo(Message,
|
||||
Result = MmeGetLineInfo(DeviceId,
|
||||
Message,
|
||||
PrivateHandle,
|
||||
Parameter1,
|
||||
Parameter2);
|
||||
|
@ -123,7 +140,8 @@ mxdMessage(
|
|||
|
||||
case MXDM_SETCONTROLDETAILS :
|
||||
{
|
||||
Result = MmeGetLineInfo(Message,
|
||||
Result = MmeGetLineInfo(DeviceId,
|
||||
Message,
|
||||
PrivateHandle,
|
||||
Parameter1,
|
||||
Parameter2);
|
||||
|
@ -133,7 +151,8 @@ mxdMessage(
|
|||
|
||||
case MXDM_GETLINECONTROLS :
|
||||
{
|
||||
Result = MmeGetLineInfo(Message,
|
||||
Result = MmeGetLineInfo(DeviceId,
|
||||
Message,
|
||||
PrivateHandle,
|
||||
Parameter1,
|
||||
Parameter2);
|
||||
|
@ -143,7 +162,8 @@ mxdMessage(
|
|||
|
||||
case MXDM_GETLINEINFO :
|
||||
{
|
||||
Result = MmeGetLineInfo(Message,
|
||||
Result = MmeGetLineInfo(DeviceId,
|
||||
Message,
|
||||
PrivateHandle,
|
||||
Parameter1,
|
||||
Parameter2);
|
||||
|
|
|
@ -89,7 +89,7 @@ MMixerOpen(
|
|||
if (Status != MM_STATUS_SUCCESS)
|
||||
{
|
||||
/* invalid context passed */
|
||||
DPRINT1("invalid context\n");
|
||||
DPRINT1("invalid context\n");
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ MMixerOpen(
|
|||
if (!MixerInfo)
|
||||
{
|
||||
/* invalid mixer id */
|
||||
DPRINT1("invalid mixer id %lu\n", MixerId);
|
||||
DPRINT1("invalid mixer id %lu\n", MixerId);
|
||||
return MM_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
|
@ -115,8 +115,9 @@ MMixerOpen(
|
|||
MIXER_STATUS
|
||||
MMixerGetLineInfo(
|
||||
IN PMIXER_CONTEXT MixerContext,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG Flags,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG MixerId,
|
||||
IN ULONG Flags,
|
||||
OUT LPMIXERLINEW MixerLine)
|
||||
{
|
||||
MIXER_STATUS Status;
|
||||
|
@ -131,6 +132,17 @@ MMixerGetLineInfo(
|
|||
/* invalid context passed */
|
||||
return Status;
|
||||
}
|
||||
if ((Flags & (MIXER_OBJECTF_MIXER | MIXER_OBJECTF_HMIXER)) == MIXER_OBJECTF_MIXER)
|
||||
{
|
||||
/* caller passed mixer id */
|
||||
MixerHandle = (HANDLE)MMixerGetMixerInfoByIndex(MixerContext, MixerId);
|
||||
|
||||
if (!MixerHandle)
|
||||
{
|
||||
/* invalid parameter */
|
||||
return MM_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
/* clear hmixer from flags */
|
||||
Flags &=~MIXER_OBJECTF_HMIXER;
|
||||
|
@ -220,6 +232,7 @@ MIXER_STATUS
|
|||
MMixerGetLineControls(
|
||||
IN PMIXER_CONTEXT MixerContext,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG MixerId,
|
||||
IN ULONG Flags,
|
||||
OUT LPMIXERLINECONTROLSW MixerLineControls)
|
||||
{
|
||||
|
@ -238,6 +251,18 @@ MMixerGetLineControls(
|
|||
return Status;
|
||||
}
|
||||
|
||||
if ((Flags & (MIXER_OBJECTF_MIXER | MIXER_OBJECTF_HMIXER)) == MIXER_OBJECTF_MIXER)
|
||||
{
|
||||
/* caller passed mixer id */
|
||||
MixerHandle = (HANDLE)MMixerGetMixerInfoByIndex(MixerContext, MixerId);
|
||||
|
||||
if (!MixerHandle)
|
||||
{
|
||||
/* invalid parameter */
|
||||
return MM_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
Flags &= ~MIXER_OBJECTF_HMIXER;
|
||||
|
||||
if (Flags == MIXER_GETLINECONTROLSF_ALL)
|
||||
|
@ -312,6 +337,7 @@ MIXER_STATUS
|
|||
MMixerSetControlDetails(
|
||||
IN PMIXER_CONTEXT MixerContext,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG MixerId,
|
||||
IN ULONG Flags,
|
||||
OUT LPMIXERCONTROLDETAILS MixerControlDetails)
|
||||
{
|
||||
|
@ -330,6 +356,18 @@ MMixerSetControlDetails(
|
|||
return Status;
|
||||
}
|
||||
|
||||
if ((Flags & (MIXER_OBJECTF_MIXER | MIXER_OBJECTF_HMIXER)) == MIXER_OBJECTF_MIXER)
|
||||
{
|
||||
/* caller passed mixer id */
|
||||
MixerHandle = (HANDLE)MMixerGetMixerInfoByIndex(MixerContext, MixerId);
|
||||
|
||||
if (!MixerHandle)
|
||||
{
|
||||
/* invalid parameter */
|
||||
return MM_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
/* get mixer info */
|
||||
MixerInfo = (LPMIXER_INFO)MixerHandle;
|
||||
|
||||
|
@ -362,6 +400,7 @@ MIXER_STATUS
|
|||
MMixerGetControlDetails(
|
||||
IN PMIXER_CONTEXT MixerContext,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG MixerId,
|
||||
IN ULONG Flags,
|
||||
OUT LPMIXERCONTROLDETAILS MixerControlDetails)
|
||||
{
|
||||
|
@ -380,6 +419,18 @@ MMixerGetControlDetails(
|
|||
return Status;
|
||||
}
|
||||
|
||||
if ((Flags & (MIXER_OBJECTF_MIXER | MIXER_OBJECTF_HMIXER)) == MIXER_OBJECTF_MIXER)
|
||||
{
|
||||
/* caller passed mixer id */
|
||||
MixerHandle = (HANDLE)MMixerGetMixerInfoByIndex(MixerContext, MixerId);
|
||||
|
||||
if (!MixerHandle)
|
||||
{
|
||||
/* invalid parameter */
|
||||
return MM_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
/* get mixer info */
|
||||
MixerInfo = (LPMIXER_INFO)MixerHandle;
|
||||
|
||||
|
|
|
@ -149,7 +149,8 @@ MMixerOpen(
|
|||
MIXER_STATUS
|
||||
MMixerGetLineInfo(
|
||||
IN PMIXER_CONTEXT MixerContext,
|
||||
IN HANDLE MixerHandle,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG MixerId,
|
||||
IN ULONG Flags,
|
||||
OUT LPMIXERLINEW MixerLine);
|
||||
|
||||
|
@ -157,6 +158,7 @@ MIXER_STATUS
|
|||
MMixerGetLineControls(
|
||||
IN PMIXER_CONTEXT MixerContext,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG MixerId,
|
||||
IN ULONG Flags,
|
||||
OUT LPMIXERLINECONTROLSW MixerLineControls);
|
||||
|
||||
|
@ -164,6 +166,7 @@ MIXER_STATUS
|
|||
MMixerSetControlDetails(
|
||||
IN PMIXER_CONTEXT MixerContext,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG MixerId,
|
||||
IN ULONG Flags,
|
||||
OUT LPMIXERCONTROLDETAILS MixerControlDetails);
|
||||
|
||||
|
@ -171,6 +174,7 @@ MIXER_STATUS
|
|||
MMixerGetControlDetails(
|
||||
IN PMIXER_CONTEXT MixerContext,
|
||||
IN HANDLE MixerHandle,
|
||||
IN ULONG MixerId,
|
||||
IN ULONG Flags,
|
||||
OUT LPMIXERCONTROLDETAILS MixerControlDetails);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue