mirror of
https://github.com/reactos/reactos.git
synced 2025-05-08 03:07:05 +00:00
- Implement retrieving position
svn path=/trunk/; revision=41899
This commit is contained in:
parent
dec6dd70e3
commit
85cde828b2
3 changed files with 47 additions and 2 deletions
|
@ -121,7 +121,7 @@ MmeOpenWaveDevice(
|
||||||
if ( ! MMSUCCESS(Result) )
|
if ( ! MMSUCCESS(Result) )
|
||||||
return TranslateInternalMmResult(Result);
|
return TranslateInternalMmResult(Result);
|
||||||
|
|
||||||
Result = SetWaveDeviceFormat(SoundDeviceInstance, Format, sizeof(WAVEFORMATEX));
|
Result = SetWaveDeviceFormat(SoundDeviceInstance, DeviceId, Format, sizeof(WAVEFORMATEX));
|
||||||
if ( ! MMSUCCESS(Result) )
|
if ( ! MMSUCCESS(Result) )
|
||||||
{
|
{
|
||||||
/* TODO: Destroy sound instance */
|
/* TODO: Destroy sound instance */
|
||||||
|
@ -204,3 +204,46 @@ MmeResetWavePlayback(
|
||||||
|
|
||||||
return StopStreaming(SoundDeviceInstance);
|
return StopStreaming(SoundDeviceInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MMRESULT
|
||||||
|
MmeGetPosition(
|
||||||
|
IN MMDEVICE_TYPE DeviceType,
|
||||||
|
IN DWORD DeviceId,
|
||||||
|
IN DWORD PrivateHandle,
|
||||||
|
IN MMTIME* Time,
|
||||||
|
IN DWORD Size)
|
||||||
|
{
|
||||||
|
MMRESULT Result;
|
||||||
|
PSOUND_DEVICE_INSTANCE SoundDeviceInstance;
|
||||||
|
PSOUND_DEVICE SoundDevice;
|
||||||
|
PMMFUNCTION_TABLE FunctionTable;
|
||||||
|
|
||||||
|
VALIDATE_MMSYS_PARAMETER( PrivateHandle );
|
||||||
|
SoundDeviceInstance = (PSOUND_DEVICE_INSTANCE) PrivateHandle;
|
||||||
|
|
||||||
|
if ( ! IsValidSoundDeviceInstance(SoundDeviceInstance) )
|
||||||
|
return MMSYSERR_INVALHANDLE;
|
||||||
|
|
||||||
|
Result = GetSoundDeviceFromInstance(SoundDeviceInstance, &SoundDevice);
|
||||||
|
if ( ! MMSUCCESS(Result) )
|
||||||
|
return TranslateInternalMmResult(Result);
|
||||||
|
|
||||||
|
if ( Size != sizeof(MMTIME) )
|
||||||
|
return MMSYSERR_INVALPARAM;
|
||||||
|
|
||||||
|
Result = GetSoundDeviceFunctionTable(SoundDevice, &FunctionTable);
|
||||||
|
if ( ! MMSUCCESS(Result) )
|
||||||
|
return TranslateInternalMmResult(Result);
|
||||||
|
|
||||||
|
if ( FunctionTable->GetPos == NULL )
|
||||||
|
{
|
||||||
|
/* This indicates bad practice, really! If you can open, why not close?! */
|
||||||
|
return MMSYSERR_NOTSUPPORTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Call the driver */
|
||||||
|
Result = FunctionTable->GetPos(SoundDeviceInstance, Time);
|
||||||
|
|
||||||
|
return Result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ QueryWaveDeviceFormatSupport(
|
||||||
MMRESULT
|
MMRESULT
|
||||||
SetWaveDeviceFormat(
|
SetWaveDeviceFormat(
|
||||||
IN PSOUND_DEVICE_INSTANCE SoundDeviceInstance,
|
IN PSOUND_DEVICE_INSTANCE SoundDeviceInstance,
|
||||||
|
IN DWORD DeviceId,
|
||||||
IN LPWAVEFORMATEX Format,
|
IN LPWAVEFORMATEX Format,
|
||||||
IN DWORD FormatSize)
|
IN DWORD FormatSize)
|
||||||
{
|
{
|
||||||
|
@ -87,5 +88,5 @@ SetWaveDeviceFormat(
|
||||||
if ( ! FunctionTable->SetWaveFormat )
|
if ( ! FunctionTable->SetWaveFormat )
|
||||||
return MMSYSERR_NOTSUPPORTED;
|
return MMSYSERR_NOTSUPPORTED;
|
||||||
|
|
||||||
return FunctionTable->SetWaveFormat(SoundDeviceInstance, Format, FormatSize);
|
return FunctionTable->SetWaveFormat(SoundDeviceInstance, DeviceId, Format, FormatSize);
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,6 +113,7 @@ wodMessage(
|
||||||
|
|
||||||
case WODM_GETPOS :
|
case WODM_GETPOS :
|
||||||
{
|
{
|
||||||
|
Result = MmeGetPosition(WAVE_OUT_DEVICE_TYPE, DeviceId, PrivateHandle, (MMTIME*)Parameter1, Parameter2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue