82 if (
This->bAggregatable)
87 *ppvObj = &(
This->IUnknown_inner);
88 TRACE(
" returning IUnknown interface (%p)\n", *ppvObj);
90 *ppvObj = &(
This->ISeekingPassThru_iface);
91 TRACE(
" returning ISeekingPassThru interface (%p)\n", *ppvObj);
93 *ppvObj = &(
This->IMediaSeeking_iface);
94 TRACE(
" returning IMediaSeeking interface (%p)\n", *ppvObj);
96 *ppvObj = &(
This->IMediaPosition_iface);
97 TRACE(
" returning IMediaPosition interface (%p)\n", *ppvObj);
104 IUnknown_AddRef((
IUnknown *)(*ppvObj));
126 This->time_cs.DebugInfo->Spare[0] = 0;
143 if (
This->bAggregatable)
148 if (
This->bAggregatable)
149 return IUnknown_QueryInterface(
This->outer_unk,
riid,
ppv);
155 IUnknown_AddRef(&
This->IUnknown_inner);
156 hr = IUnknown_QueryInterface(&
This->IUnknown_inner,
riid,
ppv);
157 IUnknown_Release(&
This->IUnknown_inner);
166 return IUnknown_QueryInterface(&
This->IUnknown_inner,
riid,
ppv);
171 if (
This->outer_unk &&
This->bUnkOuterValid)
172 return IUnknown_AddRef(
This->outer_unk);
173 return IUnknown_AddRef(&
This->IUnknown_inner);
178 if (
This->outer_unk &&
This->bUnkOuterValid)
179 return IUnknown_Release(
This->outer_unk);
180 return IUnknown_Release(&
This->IUnknown_inner);
214 TRACE(
"(%p/%p)->(%d, %p)\n",
This, iface, renderer,
pin);
217 FIXME(
"Re-initializing?\n");
219 This->renderer = renderer;
242 IUnknown_QueryInterface(*ppPassThru, &IID_ISeekingPassThru, (
void**)&passthru);
243 hr = ISeekingPassThru_Init(passthru, bRenderer, pPin);
244 ISeekingPassThru_Release(passthru);
253 TRACE(
"(%p,%p)\n", pUnkOuter, ppPassThru);
309 hr = IPin_QueryInterface(
pin,
riid, ppvObj);
321 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pCapabilities);
324 hr = IMediaSeeking_GetCapabilities(
seek, pCapabilities);
325 IMediaSeeking_Release(
seek);
337 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pCapabilities);
340 hr = IMediaSeeking_CheckCapabilities(
seek, pCapabilities);
341 IMediaSeeking_Release(
seek);
356 hr = IMediaSeeking_IsFormatSupported(
seek, pFormat);
357 IMediaSeeking_Release(
seek);
369 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pFormat);
372 hr = IMediaSeeking_QueryPreferredFormat(
seek, pFormat);
373 IMediaSeeking_Release(
seek);
385 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pFormat);
388 hr = IMediaSeeking_GetTimeFormat(
seek, pFormat);
389 IMediaSeeking_Release(
seek);
404 hr = IMediaSeeking_IsUsingTimeFormat(
seek, pFormat);
405 IMediaSeeking_Release(
seek);
420 hr = IMediaSeeking_SetTimeFormat(
seek, pFormat);
421 IMediaSeeking_Release(
seek);
433 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pDuration);
436 hr = IMediaSeeking_GetDuration(
seek, pDuration);
437 IMediaSeeking_Release(
seek);
449 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pStop);
452 hr = IMediaSeeking_GetStopPosition(
seek, pStop);
453 IMediaSeeking_Release(
seek);
465 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pCurrent);
470 *pCurrent =
This->time_earliest;
475 hr = IMediaSeeking_ConvertTimeFormat(iface, pCurrent,
NULL, *pCurrent, &TIME_FORMAT_MEDIA_TIME);
480 hr = IMediaSeeking_GetCurrentPosition(
seek, pCurrent);
481 IMediaSeeking_Release(
seek);
493 TRACE(
"(%p/%p)->(%p,%s,%x%08x,%s)\n", iface,
This,
pTarget,
debugstr_guid(pTargetFormat), (
DWORD)(
Source>>32), (
DWORD)
Source,
debugstr_guid(pSourceFormat));
497 IMediaSeeking_Release(
seek);
509 TRACE(
"(%p/%p)->(%p,%x,%p,%x)\n", iface,
This, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
512 hr = IMediaSeeking_SetPositions(
seek, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
513 IMediaSeeking_Release(
seek);
524 TRACE(
"(%p/%p)->(%p, %p)\n", iface,
This, pCurrent, pStop);
527 hr = IMediaSeeking_GetPositions(
seek, pCurrent, pStop);
528 IMediaSeeking_Release(
seek);
542 TRACE(
"(%p/%p)->(%p,%p)\n", iface,
This, pEarliest, pLatest);
545 hr = IMediaSeeking_GetAvailable(
seek, pEarliest, pLatest);
546 IMediaSeeking_Release(
seek);
558 TRACE(
"(%p/%p)->(%e)\n", iface,
This, dRate);
561 hr = IMediaSeeking_SetRate(
seek, dRate);
562 IMediaSeeking_Release(
seek);
574 TRACE(
"(%p/%p)->(%p)\n", iface,
This, dRate);
577 hr = IMediaSeeking_GetRate(
seek, dRate);
578 IMediaSeeking_Release(
seek);
590 TRACE(
"(%p)\n", pPreroll);
593 hr = IMediaSeeking_GetPreroll(
seek, pPreroll);
594 IMediaSeeking_Release(
seek);
625 hr = IMediaSeeking_GetStopPosition(&
This->IMediaSeeking_iface, &
time);
717 hr = ITypeInfo_Invoke(pTypeInfo, &
This->IMediaPosition_iface, dispIdMember,
wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
718 ITypeInfo_Release(pTypeInfo);
730 TRACE(
"(%p)\n", plength);
734 hr = IMediaPosition_get_Duration(
pos, plength);
735 IMediaPosition_Release(
pos);
752 hr = IMediaPosition_put_CurrentPosition(
pos, llTime);
753 IMediaPosition_Release(
pos);
766 TRACE(
"(%p)\n", pllTime);
770 hr = IMediaPosition_get_CurrentPosition(
pos, pllTime);
771 IMediaPosition_Release(
pos);
784 TRACE(
"(%p)\n", pllTime);
788 hr = IMediaPosition_get_StopTime(
pos, pllTime);
789 IMediaPosition_Release(
pos);
806 hr = IMediaPosition_put_StopTime(
pos, llTime);
807 IMediaPosition_Release(
pos);
820 TRACE(
"(%p)\n", pllTime);
824 hr = IMediaPosition_get_PrerollTime(
pos, pllTime);
825 IMediaPosition_Release(
pos);
842 hr = IMediaPosition_put_PrerollTime(
pos, llTime);
843 IMediaPosition_Release(
pos);
856 TRACE(
"(%f)\n", dRate);
860 hr = IMediaPosition_put_Rate(
pos, dRate);
861 IMediaPosition_Release(
pos);
874 TRACE(
"(%p)\n", pdRate);
878 hr = IMediaPosition_get_Rate(
pos, pdRate);
879 IMediaPosition_Release(
pos);
892 TRACE(
"(%p)\n", pCanSeekForward);
896 hr = IMediaPosition_CanSeekForward(
pos, pCanSeekForward);
897 IMediaPosition_Release(
pos);
910 TRACE(
"(%p)\n", pCanSeekBackward);
914 hr = IMediaPosition_CanSeekBackward(
pos, pCanSeekBackward);
915 IMediaPosition_Release(
pos);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
static VARIANTARG static DISPID
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
static HRESULT WINAPI MediaSeekingPassThru_GetAvailable(IMediaSeeking *iface, LONGLONG *pEarliest, LONGLONG *pLatest)
static HRESULT WINAPI MediaSeekingPassThru_GetPreroll(IMediaSeeking *iface, LONGLONG *pPreroll)
HRESULT WINAPI RendererPosPassThru_ResetMediaTime(IUnknown *iface)
static ULONG WINAPI SeekingPassThru_Release(ISeekingPassThru *iface)
static ULONG WINAPI SeekInner_Release(IUnknown *iface)
static HRESULT WINAPI SeekInner_QueryInterface(IUnknown *iface, REFIID riid, LPVOID *ppvObj)
static HRESULT WINAPI MediaSeekingPassThru_GetDuration(IMediaSeeking *iface, LONGLONG *pDuration)
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfo(IMediaPosition *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
static HRESULT WINAPI MediaPositionPassThru_put_CurrentPosition(IMediaPosition *iface, REFTIME llTime)
static HRESULT WINAPI MediaPositionPassThru_get_Duration(IMediaPosition *iface, REFTIME *plength)
static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported(IMediaSeeking *iface, const GUID *pFormat)
static HRESULT WINAPI SeekingPassThru_QueryInterface(ISeekingPassThru *iface, REFIID riid, LPVOID *ppvObj)
HRESULT WINAPI PosPassThru_Construct(IUnknown *pUnkOuter, LPVOID *ppPassThru)
HRESULT WINAPI RendererPosPassThru_EOS(IUnknown *iface)
static HRESULT WINAPI MediaPositionPassThru_put_StopTime(IMediaPosition *iface, REFTIME llTime)
static HRESULT SeekOuter_QueryInterface(PassThruImpl *This, REFIID riid, LPVOID *ppv)
static HRESULT WINAPI MediaPositionPassThru_Invoke(IMediaPosition *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr)
static HRESULT WINAPI MediaPositionPassThru_CanSeekForward(IMediaPosition *iface, LONG *pCanSeekForward)
HRESULT WINAPI CreatePosPassThru(IUnknown *pUnkOuter, BOOL bRenderer, IPin *pPin, IUnknown **ppPassThru)
static ULONG WINAPI MediaPositionPassThru_Release(IMediaPosition *iface)
static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *pCurrent)
static ULONG WINAPI SeekingPassThru_AddRef(ISeekingPassThru *iface)
static HRESULT WINAPI MediaPositionPassThru_GetIDsOfNames(IMediaPosition *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static HRESULT WINAPI MediaPositionPassThru_get_Rate(IMediaPosition *iface, double *pdRate)
static PassThruImpl * impl_from_IUnknown_inner(IUnknown *iface)
static ULONG WINAPI SeekInner_AddRef(IUnknown *iface)
static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat(IMediaSeeking *iface, LONGLONG *pTarget, const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat)
static ULONG WINAPI MediaPositionPassThru_AddRef(IMediaPosition *iface)
static HRESULT WINAPI MediaSeekingPassThru_SetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, DWORD dwCurrentFlags, LONGLONG *pStop, DWORD dwStopFlags)
static const ISeekingPassThruVtbl ISeekingPassThru_Vtbl
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfoCount(IMediaPosition *iface, UINT *pctinfo)
static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat(IMediaSeeking *iface, GUID *pFormat)
static HRESULT WINAPI MediaPositionPassThru_get_CurrentPosition(IMediaPosition *iface, REFTIME *pllTime)
static HRESULT WINAPI MediaPositionPassThru_get_StopTime(IMediaPosition *iface, REFTIME *pllTime)
static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition(IMediaSeeking *iface, LONGLONG *pStop)
static HRESULT WINAPI MediaPositionPassThru_get_PrerollTime(IMediaPosition *iface, REFTIME *pllTime)
static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
static HRESULT WINAPI MediaPositionPassThru_put_PrerollTime(IMediaPosition *iface, REFTIME llTime)
static ULONG SeekOuter_AddRef(PassThruImpl *This)
static HRESULT WINAPI MediaSeekingPassThru_SetRate(IMediaSeeking *iface, double dRate)
static ULONG WINAPI MediaSeekingPassThru_AddRef(IMediaSeeking *iface)
static HRESULT WINAPI MediaPositionPassThru_CanSeekBackward(IMediaPosition *iface, LONG *pCanSeekBackward)
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
static HRESULT WINAPI MediaSeekingPassThru_GetTimeFormat(IMediaSeeking *iface, GUID *pFormat)
static ULONG SeekOuter_Release(PassThruImpl *This)
HRESULT WINAPI RendererPosPassThru_RegisterMediaTime(IUnknown *iface, REFERENCE_TIME start)
static HRESULT WINAPI MediaSeekingPassThru_SetTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
static HRESULT WINAPI MediaSeekingPassThru_CheckCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
static HRESULT WINAPI SeekingPassThru_Init(ISeekingPassThru *iface, BOOL renderer, IPin *pin)
static PassThruImpl * impl_from_ISeekingPassThru(ISeekingPassThru *iface)
static HRESULT WINAPI MediaSeekingPassThru_GetRate(IMediaSeeking *iface, double *dRate)
static HRESULT WINAPI MediaPositionPassThru_QueryInterface(IMediaPosition *iface, REFIID riid, LPVOID *ppvObj)
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
static HRESULT WINAPI MediaSeekingPassThru_QueryInterface(IMediaSeeking *iface, REFIID riid, LPVOID *ppvObj)
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
static ULONG WINAPI MediaSeekingPassThru_Release(IMediaSeeking *iface)
static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl
static const IMediaPositionVtbl IMediaPositionPassThru_Vtbl
static const IUnknownVtbl IInner_VTable
static HRESULT WINAPI MediaSeekingPassThru_GetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, LONGLONG *pStop)
static HRESULT WINAPI MediaPositionPassThru_put_Rate(IMediaPosition *iface, double dRate)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
int seek(void *fd, ulong off, int mode)
HRESULT WINAPI BaseDispatchImpl_GetTypeInfoCount(BaseDispatch *This, UINT *pctinfo)
HRESULT WINAPI BaseDispatchImpl_GetIDsOfNames(BaseDispatch *This, REFIID riid, OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid)
HRESULT WINAPI BaseDispatch_Init(BaseDispatch *This, REFIID riid)
HRESULT WINAPI BaseDispatch_Destroy(BaseDispatch *This)
HRESULT WINAPI BaseDispatchImpl_GetTypeInfo(BaseDispatch *This, REFIID riid, UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
BaseDispatch baseDispatch
REFERENCE_TIME time_earliest
ISeekingPassThru ISeekingPassThru_iface
IMediaPosition IMediaPosition_iface
IMediaSeeking IMediaSeeking_iface
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
PCRITICAL_SECTION_DEBUG DebugInfo
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
#define CONTAINING_RECORD(address, type, field)
#define VFW_E_NOT_CONNECTED
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
_In_ DWORD _Out_ _In_ WORD wFlags