mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 20:59:54 +00:00
quartz: Add mediaseeking stub to audio renderer.
This commit is contained in:
parent
c53a803ab7
commit
9ec4240065
@ -45,6 +45,7 @@ static const IPinVtbl DSoundRender_InputPin_Vtbl;
|
||||
static const IMemInputPinVtbl MemInputPin_Vtbl;
|
||||
static const IBasicAudioVtbl IBasicAudio_Vtbl;
|
||||
static const IReferenceClockVtbl IReferenceClock_Vtbl;
|
||||
static const IMediaSeekingVtbl IMediaSeeking_Vtbl;
|
||||
|
||||
typedef struct DSoundRenderImpl
|
||||
{
|
||||
@ -71,11 +72,31 @@ typedef struct DSoundRenderImpl
|
||||
DWORD last_play_pos;
|
||||
DWORD play_loops;
|
||||
REFERENCE_TIME play_time;
|
||||
MediaSeekingImpl mediaSeeking;
|
||||
|
||||
long volume;
|
||||
long pan;
|
||||
} DSoundRenderImpl;
|
||||
|
||||
static HRESULT sound_mod_stop(IBaseFilter *iface)
|
||||
{
|
||||
FIXME("(%p) stub\n", iface);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT sound_mod_start(IBaseFilter *iface)
|
||||
{
|
||||
FIXME("(%p) stub\n", iface);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT sound_mod_rate(IBaseFilter *iface)
|
||||
{
|
||||
FIXME("(%p) stub\n", iface);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
static HRESULT DSoundRender_InputPin_Construct(const PIN_INFO * pPinInfo, SAMPLEPROC pSampleProc, LPVOID pUserData, QUERYACCEPTPROC pQueryAccept, LPCRITICAL_SECTION pCritSec, IPin ** ppPin)
|
||||
{
|
||||
InputPin * pPinImpl;
|
||||
@ -315,6 +336,9 @@ HRESULT DSoundRender_create(IUnknown * pUnkOuter, LPVOID * ppv)
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
MediaSeekingImpl_Init((IBaseFilter*)pDSoundRender, sound_mod_stop, sound_mod_start, sound_mod_rate, &pDSoundRender->mediaSeeking, &pDSoundRender->csFilter);
|
||||
pDSoundRender->mediaSeeking.lpVtbl = &IMediaSeeking_Vtbl;
|
||||
|
||||
pDSoundRender->ppPins[0] = (IPin *)pDSoundRender->pInputPin;
|
||||
*ppv = (LPVOID)pDSoundRender;
|
||||
}
|
||||
@ -350,6 +374,8 @@ static HRESULT WINAPI DSoundRender_QueryInterface(IBaseFilter * iface, REFIID ri
|
||||
*ppv = (LPVOID)&(This->IBasicAudio_vtbl);
|
||||
else if (IsEqualIID(riid, &IID_IReferenceClock))
|
||||
*ppv = (LPVOID)&(This->IReferenceClock_vtbl);
|
||||
else if (IsEqualIID(riid, &IID_IMediaSeeking))
|
||||
*ppv = &This->mediaSeeking.lpVtbl;
|
||||
|
||||
if (*ppv)
|
||||
{
|
||||
@ -1071,3 +1097,53 @@ static const IReferenceClockVtbl IReferenceClock_Vtbl =
|
||||
ReferenceClock_AdvisePeriodic,
|
||||
ReferenceClock_Unadvise
|
||||
};
|
||||
|
||||
static inline DSoundRenderImpl *impl_from_IMediaSeeking( IMediaSeeking *iface )
|
||||
{
|
||||
return (DSoundRenderImpl *)((char*)iface - FIELD_OFFSET(DSoundRenderImpl, mediaSeeking.lpVtbl));
|
||||
}
|
||||
|
||||
static HRESULT WINAPI sound_seek_QueryInterface(IMediaSeeking * iface, REFIID riid, LPVOID * ppv)
|
||||
{
|
||||
DSoundRenderImpl *This = impl_from_IMediaSeeking(iface);
|
||||
|
||||
return IUnknown_QueryInterface((IUnknown *)This, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI sound_seek_AddRef(IMediaSeeking * iface)
|
||||
{
|
||||
DSoundRenderImpl *This = impl_from_IMediaSeeking(iface);
|
||||
|
||||
return IUnknown_AddRef((IUnknown *)This);
|
||||
}
|
||||
|
||||
static ULONG WINAPI sound_seek_Release(IMediaSeeking * iface)
|
||||
{
|
||||
DSoundRenderImpl *This = impl_from_IMediaSeeking(iface);
|
||||
|
||||
return IUnknown_Release((IUnknown *)This);
|
||||
}
|
||||
|
||||
static const IMediaSeekingVtbl IMediaSeeking_Vtbl =
|
||||
{
|
||||
sound_seek_QueryInterface,
|
||||
sound_seek_AddRef,
|
||||
sound_seek_Release,
|
||||
MediaSeekingImpl_GetCapabilities,
|
||||
MediaSeekingImpl_CheckCapabilities,
|
||||
MediaSeekingImpl_IsFormatSupported,
|
||||
MediaSeekingImpl_QueryPreferredFormat,
|
||||
MediaSeekingImpl_GetTimeFormat,
|
||||
MediaSeekingImpl_IsUsingTimeFormat,
|
||||
MediaSeekingImpl_SetTimeFormat,
|
||||
MediaSeekingImpl_GetDuration,
|
||||
MediaSeekingImpl_GetStopPosition,
|
||||
MediaSeekingImpl_GetCurrentPosition,
|
||||
MediaSeekingImpl_ConvertTimeFormat,
|
||||
MediaSeekingImpl_SetPositions,
|
||||
MediaSeekingImpl_GetPositions,
|
||||
MediaSeekingImpl_GetAvailable,
|
||||
MediaSeekingImpl_SetRate,
|
||||
MediaSeekingImpl_GetRate,
|
||||
MediaSeekingImpl_GetPreroll
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user