ReactOS  0.4.13-dev-961-g238ea69
pospass.c File Reference
#include "dshow.h"
#include "uuids.h"
#include "wine/debug.h"
#include "wine/strmbase.h"
#include <assert.h>
Include dependency graph for pospass.c:

Go to the source code of this file.

Classes

struct  PassThruImpl
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct PassThruImpl PassThruImpl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (strmbase)
 
static PassThruImplimpl_from_IUnknown_inner (IUnknown *iface)
 
static PassThruImplimpl_from_ISeekingPassThru (ISeekingPassThru *iface)
 
static PassThruImplimpl_from_IMediaSeeking (IMediaSeeking *iface)
 
static PassThruImplimpl_from_IMediaPosition (IMediaPosition *iface)
 
static HRESULT WINAPI SeekInner_QueryInterface (IUnknown *iface, REFIID riid, LPVOID *ppvObj)
 
static ULONG WINAPI SeekInner_AddRef (IUnknown *iface)
 
static ULONG WINAPI SeekInner_Release (IUnknown *iface)
 
static HRESULT SeekOuter_QueryInterface (PassThruImpl *This, REFIID riid, LPVOID *ppv)
 
static ULONG SeekOuter_AddRef (PassThruImpl *This)
 
static ULONG SeekOuter_Release (PassThruImpl *This)
 
static HRESULT WINAPI SeekingPassThru_QueryInterface (ISeekingPassThru *iface, REFIID riid, LPVOID *ppvObj)
 
static ULONG WINAPI SeekingPassThru_AddRef (ISeekingPassThru *iface)
 
static ULONG WINAPI SeekingPassThru_Release (ISeekingPassThru *iface)
 
static HRESULT WINAPI SeekingPassThru_Init (ISeekingPassThru *iface, BOOL renderer, IPin *pin)
 
HRESULT WINAPI CreatePosPassThru (IUnknown *pUnkOuter, BOOL bRenderer, IPin *pPin, IUnknown **ppPassThru)
 
HRESULT WINAPI PosPassThru_Construct (IUnknown *pUnkOuter, LPVOID *ppPassThru)
 
static HRESULT WINAPI MediaSeekingPassThru_QueryInterface (IMediaSeeking *iface, REFIID riid, LPVOID *ppvObj)
 
static ULONG WINAPI MediaSeekingPassThru_AddRef (IMediaSeeking *iface)
 
static ULONG WINAPI MediaSeekingPassThru_Release (IMediaSeeking *iface)
 
static HRESULT get_connected (PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
 
static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities (IMediaSeeking *iface, DWORD *pCapabilities)
 
static HRESULT WINAPI MediaSeekingPassThru_CheckCapabilities (IMediaSeeking *iface, DWORD *pCapabilities)
 
static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported (IMediaSeeking *iface, const GUID *pFormat)
 
static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat (IMediaSeeking *iface, GUID *pFormat)
 
static HRESULT WINAPI MediaSeekingPassThru_GetTimeFormat (IMediaSeeking *iface, GUID *pFormat)
 
static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat (IMediaSeeking *iface, const GUID *pFormat)
 
static HRESULT WINAPI MediaSeekingPassThru_SetTimeFormat (IMediaSeeking *iface, const GUID *pFormat)
 
static HRESULT WINAPI MediaSeekingPassThru_GetDuration (IMediaSeeking *iface, LONGLONG *pDuration)
 
static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition (IMediaSeeking *iface, LONGLONG *pStop)
 
static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition (IMediaSeeking *iface, LONGLONG *pCurrent)
 
static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat (IMediaSeeking *iface, LONGLONG *pTarget, const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat)
 
static HRESULT WINAPI MediaSeekingPassThru_SetPositions (IMediaSeeking *iface, LONGLONG *pCurrent, DWORD dwCurrentFlags, LONGLONG *pStop, DWORD dwStopFlags)
 
static HRESULT WINAPI MediaSeekingPassThru_GetPositions (IMediaSeeking *iface, LONGLONG *pCurrent, LONGLONG *pStop)
 
static HRESULT WINAPI MediaSeekingPassThru_GetAvailable (IMediaSeeking *iface, LONGLONG *pEarliest, LONGLONG *pLatest)
 
static HRESULT WINAPI MediaSeekingPassThru_SetRate (IMediaSeeking *iface, double dRate)
 
static HRESULT WINAPI MediaSeekingPassThru_GetRate (IMediaSeeking *iface, double *dRate)
 
static HRESULT WINAPI MediaSeekingPassThru_GetPreroll (IMediaSeeking *iface, LONGLONG *pPreroll)
 
HRESULT WINAPI RendererPosPassThru_RegisterMediaTime (IUnknown *iface, REFERENCE_TIME start)
 
HRESULT WINAPI RendererPosPassThru_ResetMediaTime (IUnknown *iface)
 
HRESULT WINAPI RendererPosPassThru_EOS (IUnknown *iface)
 
static HRESULT WINAPI MediaPositionPassThru_QueryInterface (IMediaPosition *iface, REFIID riid, LPVOID *ppvObj)
 
static ULONG WINAPI MediaPositionPassThru_AddRef (IMediaPosition *iface)
 
static ULONG WINAPI MediaPositionPassThru_Release (IMediaPosition *iface)
 
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfoCount (IMediaPosition *iface, UINT *pctinfo)
 
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfo (IMediaPosition *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
 
static HRESULT WINAPI MediaPositionPassThru_GetIDsOfNames (IMediaPosition *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 
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_get_Duration (IMediaPosition *iface, REFTIME *plength)
 
static HRESULT WINAPI MediaPositionPassThru_put_CurrentPosition (IMediaPosition *iface, REFTIME llTime)
 
static HRESULT WINAPI MediaPositionPassThru_get_CurrentPosition (IMediaPosition *iface, REFTIME *pllTime)
 
static HRESULT WINAPI MediaPositionPassThru_get_StopTime (IMediaPosition *iface, REFTIME *pllTime)
 
static HRESULT WINAPI MediaPositionPassThru_put_StopTime (IMediaPosition *iface, REFTIME llTime)
 
static HRESULT WINAPI MediaPositionPassThru_get_PrerollTime (IMediaPosition *iface, REFTIME *pllTime)
 
static HRESULT WINAPI MediaPositionPassThru_put_PrerollTime (IMediaPosition *iface, REFTIME llTime)
 
static HRESULT WINAPI MediaPositionPassThru_put_Rate (IMediaPosition *iface, double dRate)
 
static HRESULT WINAPI MediaPositionPassThru_get_Rate (IMediaPosition *iface, double *pdRate)
 
static HRESULT WINAPI MediaPositionPassThru_CanSeekForward (IMediaPosition *iface, LONG *pCanSeekForward)
 
static HRESULT WINAPI MediaPositionPassThru_CanSeekBackward (IMediaPosition *iface, LONG *pCanSeekBackward)
 

Variables

static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl
 
static const IMediaPositionVtbl IMediaPositionPassThru_Vtbl
 
static const IUnknownVtbl IInner_VTable
 
static const ISeekingPassThruVtbl ISeekingPassThru_Vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 23 of file pospass.c.

Typedef Documentation

◆ PassThruImpl

Function Documentation

◆ CreatePosPassThru()

HRESULT WINAPI CreatePosPassThru ( IUnknown pUnkOuter,
BOOL  bRenderer,
IPin pPin,
IUnknown **  ppPassThru 
)

Definition at line 233 of file pospass.c.

234 {
235  HRESULT hr;
236  ISeekingPassThru *passthru;
237 
238  hr = CoCreateInstance(&CLSID_SeekingPassThru, pUnkOuter, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)ppPassThru);
239  if (FAILED(hr))
240  return hr;
241 
242  IUnknown_QueryInterface(*ppPassThru, &IID_ISeekingPassThru, (void**)&passthru);
243  hr = ISeekingPassThru_Init(passthru, bRenderer, pPin);
244  ISeekingPassThru_Release(passthru);
245 
246  return hr;
247 }
HRESULT hr
Definition: shlfolder.c:183
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3234

Referenced by BaseRenderer_Init().

◆ get_connected()

static HRESULT get_connected ( PassThruImpl This,
REFIID  riid,
LPVOID ppvObj 
)
static

Definition at line 302 of file pospass.c.

302  {
303  HRESULT hr;
304  IPin *pin;
305  *ppvObj = NULL;
306  hr = IPin_ConnectedTo(This->pin, &pin);
307  if (FAILED(hr))
308  return VFW_E_NOT_CONNECTED;
309  hr = IPin_QueryInterface(pin, riid, ppvObj);
310  IPin_Release(pin);
311  if (FAILED(hr))
312  hr = E_NOTIMPL;
313  return hr;
314 }
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
Definition: regsvr.c:103
smooth NULL
Definition: ftsmooth.c:416
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48
LONG HRESULT
Definition: typedefs.h:77
Definition: axcore.idl:91
#define E_NOTIMPL
Definition: ddrawi.h:99

Referenced by MediaPositionPassThru_CanSeekBackward(), MediaPositionPassThru_CanSeekForward(), MediaPositionPassThru_get_CurrentPosition(), MediaPositionPassThru_get_Duration(), MediaPositionPassThru_get_PrerollTime(), MediaPositionPassThru_get_Rate(), MediaPositionPassThru_get_StopTime(), MediaPositionPassThru_put_CurrentPosition(), MediaPositionPassThru_put_PrerollTime(), MediaPositionPassThru_put_Rate(), MediaPositionPassThru_put_StopTime(), MediaSeekingPassThru_CheckCapabilities(), MediaSeekingPassThru_ConvertTimeFormat(), MediaSeekingPassThru_GetAvailable(), MediaSeekingPassThru_GetCapabilities(), MediaSeekingPassThru_GetCurrentPosition(), MediaSeekingPassThru_GetDuration(), MediaSeekingPassThru_GetPositions(), MediaSeekingPassThru_GetPreroll(), MediaSeekingPassThru_GetRate(), MediaSeekingPassThru_GetStopPosition(), MediaSeekingPassThru_GetTimeFormat(), MediaSeekingPassThru_IsFormatSupported(), MediaSeekingPassThru_IsUsingTimeFormat(), MediaSeekingPassThru_QueryPreferredFormat(), MediaSeekingPassThru_SetPositions(), MediaSeekingPassThru_SetRate(), and MediaSeekingPassThru_SetTimeFormat().

◆ impl_from_IMediaPosition()

◆ impl_from_IMediaSeeking()

◆ impl_from_ISeekingPassThru()

static PassThruImpl* impl_from_ISeekingPassThru ( ISeekingPassThru iface)
inlinestatic

Definition at line 61 of file pospass.c.

62 {
63  return CONTAINING_RECORD(iface, PassThruImpl, ISeekingPassThru_iface);
64 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by SeekingPassThru_AddRef(), SeekingPassThru_Init(), SeekingPassThru_QueryInterface(), and SeekingPassThru_Release().

◆ impl_from_IUnknown_inner()

static PassThruImpl* impl_from_IUnknown_inner ( IUnknown iface)
inlinestatic

Definition at line 56 of file pospass.c.

57 {
58  return CONTAINING_RECORD(iface, PassThruImpl, IUnknown_inner);
59 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by RendererPosPassThru_EOS(), RendererPosPassThru_RegisterMediaTime(), RendererPosPassThru_ResetMediaTime(), SeekInner_AddRef(), SeekInner_QueryInterface(), and SeekInner_Release().

◆ MediaPositionPassThru_AddRef()

static ULONG WINAPI MediaPositionPassThru_AddRef ( IMediaPosition *  iface)
static

Definition at line 669 of file pospass.c.

670 {
672 
673  TRACE("(%p/%p)->()\n", iface, This);
674 
675  return SeekOuter_AddRef(This);
676 }
#define TRACE(s)
Definition: solgame.cpp:4
static ULONG SeekOuter_AddRef(PassThruImpl *This)
Definition: pospass.c:169
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_CanSeekBackward()

static HRESULT WINAPI MediaPositionPassThru_CanSeekBackward ( IMediaPosition *  iface,
LONG pCanSeekBackward 
)
static

Definition at line 904 of file pospass.c.

905 {
907  IMediaPosition *pos;
908  HRESULT hr;
909 
910  TRACE("(%p)\n", pCanSeekBackward);
911 
912  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
913  if (SUCCEEDED(hr)) {
914  hr = IMediaPosition_CanSeekBackward(pos, pCanSeekBackward);
915  IMediaPosition_Release(pos);
916  }
917  else
918  return E_NOTIMPL;
919  return hr;
920 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_CanSeekForward()

static HRESULT WINAPI MediaPositionPassThru_CanSeekForward ( IMediaPosition *  iface,
LONG pCanSeekForward 
)
static

Definition at line 886 of file pospass.c.

887 {
889  IMediaPosition *pos;
890  HRESULT hr;
891 
892  TRACE("(%p)\n", pCanSeekForward);
893 
894  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
895  if (SUCCEEDED(hr)) {
896  hr = IMediaPosition_CanSeekForward(pos, pCanSeekForward);
897  IMediaPosition_Release(pos);
898  }
899  else
900  return E_NOTIMPL;
901  return hr;
902 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_get_CurrentPosition()

static HRESULT WINAPI MediaPositionPassThru_get_CurrentPosition ( IMediaPosition *  iface,
REFTIME pllTime 
)
static

Definition at line 760 of file pospass.c.

761 {
763  IMediaPosition *pos;
764  HRESULT hr;
765 
766  TRACE("(%p)\n", pllTime);
767 
768  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
769  if (SUCCEEDED(hr)) {
770  hr = IMediaPosition_get_CurrentPosition(pos, pllTime);
771  IMediaPosition_Release(pos);
772  }
773  else
774  return E_NOTIMPL;
775  return hr;
776 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_get_Duration()

static HRESULT WINAPI MediaPositionPassThru_get_Duration ( IMediaPosition *  iface,
REFTIME plength 
)
static

Definition at line 724 of file pospass.c.

725 {
727  IMediaPosition *pos;
728  HRESULT hr;
729 
730  TRACE("(%p)\n", plength);
731 
732  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
733  if (SUCCEEDED(hr)) {
734  hr = IMediaPosition_get_Duration(pos, plength);
735  IMediaPosition_Release(pos);
736  }
737  else
738  return E_NOTIMPL;
739  return hr;
740 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_get_PrerollTime()

static HRESULT WINAPI MediaPositionPassThru_get_PrerollTime ( IMediaPosition *  iface,
REFTIME pllTime 
)
static

Definition at line 814 of file pospass.c.

815 {
817  IMediaPosition *pos;
818  HRESULT hr;
819 
820  TRACE("(%p)\n", pllTime);
821 
822  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
823  if (SUCCEEDED(hr)) {
824  hr = IMediaPosition_get_PrerollTime(pos, pllTime);
825  IMediaPosition_Release(pos);
826  }
827  else
828  return E_NOTIMPL;
829  return hr;
830 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_get_Rate()

static HRESULT WINAPI MediaPositionPassThru_get_Rate ( IMediaPosition *  iface,
double pdRate 
)
static

Definition at line 868 of file pospass.c.

869 {
871  IMediaPosition *pos;
872  HRESULT hr;
873 
874  TRACE("(%p)\n", pdRate);
875 
876  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
877  if (SUCCEEDED(hr)) {
878  hr = IMediaPosition_get_Rate(pos, pdRate);
879  IMediaPosition_Release(pos);
880  }
881  else
882  return E_NOTIMPL;
883  return hr;
884 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_get_StopTime()

static HRESULT WINAPI MediaPositionPassThru_get_StopTime ( IMediaPosition *  iface,
REFTIME pllTime 
)
static

Definition at line 778 of file pospass.c.

779 {
781  IMediaPosition *pos;
782  HRESULT hr;
783 
784  TRACE("(%p)\n", pllTime);
785 
786  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
787  if (SUCCEEDED(hr)) {
788  hr = IMediaPosition_get_StopTime(pos, pllTime);
789  IMediaPosition_Release(pos);
790  }
791  else
792  return E_NOTIMPL;
793  return hr;
794 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_GetIDsOfNames()

static HRESULT WINAPI MediaPositionPassThru_GetIDsOfNames ( IMediaPosition *  iface,
REFIID  riid,
LPOLESTR rgszNames,
UINT  cNames,
LCID  lcid,
DISPID rgDispId 
)
static

Definition at line 701 of file pospass.c.

702 {
704 
705  return BaseDispatchImpl_GetIDsOfNames(&This->baseDispatch, riid, rgszNames, cNames, lcid, rgDispId);
706 }
REFIID riid
Definition: precomp.h:44
HRESULT WINAPI BaseDispatchImpl_GetIDsOfNames(BaseDispatch *This, REFIID riid, OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid)
Definition: dispatch.c:52
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_GetTypeInfo()

static HRESULT WINAPI MediaPositionPassThru_GetTypeInfo ( IMediaPosition *  iface,
UINT  iTInfo,
LCID  lcid,
ITypeInfo **  ppTInfo 
)
static

Definition at line 694 of file pospass.c.

695 {
697 
698  return BaseDispatchImpl_GetTypeInfo(&This->baseDispatch, &IID_NULL, iTInfo, lcid, ppTInfo);
699 }
HRESULT WINAPI BaseDispatchImpl_GetTypeInfo(BaseDispatch *This, REFIID riid, UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
Definition: dispatch.c:59
#define IID_NULL
Definition: guiddef.h:98
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_GetTypeInfoCount()

static HRESULT WINAPI MediaPositionPassThru_GetTypeInfoCount ( IMediaPosition *  iface,
UINT pctinfo 
)
static

Definition at line 687 of file pospass.c.

688 {
690 
691  return BaseDispatchImpl_GetTypeInfoCount(&This->baseDispatch, pctinfo);
692 }
HRESULT WINAPI BaseDispatchImpl_GetTypeInfoCount(BaseDispatch *This, UINT *pctinfo)
Definition: dispatch.c:70
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_Invoke()

static HRESULT WINAPI MediaPositionPassThru_Invoke ( IMediaPosition *  iface,
DISPID  dispIdMember,
REFIID  riid,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pDispParams,
VARIANT pVarResult,
EXCEPINFO *  pExepInfo,
UINT puArgErr 
)
static

Definition at line 708 of file pospass.c.

709 {
711  HRESULT hr = S_OK;
712  ITypeInfo *pTypeInfo;
713 
714  hr = BaseDispatchImpl_GetTypeInfo(&This->baseDispatch, riid, 1, lcid, &pTypeInfo);
715  if (SUCCEEDED(hr))
716  {
717  hr = ITypeInfo_Invoke(pTypeInfo, &This->IMediaPosition_iface, dispIdMember, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
718  ITypeInfo_Release(pTypeInfo);
719  }
720 
721  return hr;
722 }
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI BaseDispatchImpl_GetTypeInfo(BaseDispatch *This, REFIID riid, UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
Definition: dispatch.c:59
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:519
#define S_OK
Definition: intsafe.h:59
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_put_CurrentPosition()

static HRESULT WINAPI MediaPositionPassThru_put_CurrentPosition ( IMediaPosition *  iface,
REFTIME  llTime 
)
static

Definition at line 742 of file pospass.c.

743 {
745  IMediaPosition *pos;
746  HRESULT hr;
747 
748  TRACE("(%s)\n", wine_dbgstr_longlong(llTime));
749 
750  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
751  if (SUCCEEDED(hr)) {
752  hr = IMediaPosition_put_CurrentPosition(pos, llTime);
753  IMediaPosition_Release(pos);
754  }
755  else
756  return E_NOTIMPL;
757  return hr;
758 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:41
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_put_PrerollTime()

static HRESULT WINAPI MediaPositionPassThru_put_PrerollTime ( IMediaPosition *  iface,
REFTIME  llTime 
)
static

Definition at line 832 of file pospass.c.

833 {
835  IMediaPosition *pos;
836  HRESULT hr;
837 
838  TRACE("(%s)\n", wine_dbgstr_longlong(llTime));
839 
840  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
841  if (SUCCEEDED(hr)) {
842  hr = IMediaPosition_put_PrerollTime(pos, llTime);
843  IMediaPosition_Release(pos);
844  }
845  else
846  return E_NOTIMPL;
847  return hr;
848 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:41
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_put_Rate()

static HRESULT WINAPI MediaPositionPassThru_put_Rate ( IMediaPosition *  iface,
double  dRate 
)
static

Definition at line 850 of file pospass.c.

851 {
853  IMediaPosition *pos;
854  HRESULT hr;
855 
856  TRACE("(%f)\n", dRate);
857 
858  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
859  if (SUCCEEDED(hr)) {
860  hr = IMediaPosition_put_Rate(pos, dRate);
861  IMediaPosition_Release(pos);
862  }
863  else
864  return E_NOTIMPL;
865  return hr;
866 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_put_StopTime()

static HRESULT WINAPI MediaPositionPassThru_put_StopTime ( IMediaPosition *  iface,
REFTIME  llTime 
)
static

Definition at line 796 of file pospass.c.

797 {
799  IMediaPosition *pos;
800  HRESULT hr;
801 
802  TRACE("(%s)\n", wine_dbgstr_longlong(llTime));
803 
804  hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
805  if (SUCCEEDED(hr)) {
806  hr = IMediaPosition_put_StopTime(pos, llTime);
807  IMediaPosition_Release(pos);
808  }
809  else
810  return E_NOTIMPL;
811  return hr;
812 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:41
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_QueryInterface()

static HRESULT WINAPI MediaPositionPassThru_QueryInterface ( IMediaPosition *  iface,
REFIID  riid,
LPVOID ppvObj 
)
static

Definition at line 660 of file pospass.c.

661 {
663 
664  TRACE("(%p/%p)->(%s, %p)\n", This, iface, debugstr_guid(riid), ppvObj);
665 
666  return SeekOuter_QueryInterface(This, riid, ppvObj);
667 }
static HRESULT SeekOuter_QueryInterface(PassThruImpl *This, REFIID riid, LPVOID *ppv)
Definition: pospass.c:141
REFIID riid
Definition: precomp.h:44
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaPositionPassThru_Release()

static ULONG WINAPI MediaPositionPassThru_Release ( IMediaPosition *  iface)
static

Definition at line 678 of file pospass.c.

679 {
681 
682  TRACE("(%p/%p)->()\n", iface, This);
683 
684  return SeekOuter_Release(This);
685 }
static ULONG SeekOuter_Release(PassThruImpl *This)
Definition: pospass.c:176
#define TRACE(s)
Definition: solgame.cpp:4
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71

◆ MediaSeekingPassThru_AddRef()

static ULONG WINAPI MediaSeekingPassThru_AddRef ( IMediaSeeking iface)
static

Definition at line 284 of file pospass.c.

285 {
287 
288  TRACE("(%p/%p)->()\n", iface, This);
289 
290  return SeekOuter_AddRef(This);
291 }
#define TRACE(s)
Definition: solgame.cpp:4
static ULONG SeekOuter_AddRef(PassThruImpl *This)
Definition: pospass.c:169
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66

◆ MediaSeekingPassThru_CheckCapabilities()

static HRESULT WINAPI MediaSeekingPassThru_CheckCapabilities ( IMediaSeeking iface,
DWORD pCapabilities 
)
static

Definition at line 332 of file pospass.c.

333 {
336  HRESULT hr;
337  TRACE("(%p/%p)->(%p)\n", iface, This, pCapabilities);
338  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
339  if (SUCCEEDED(hr)) {
340  hr = IMediaSeeking_CheckCapabilities(seek, pCapabilities);
341  IMediaSeeking_Release(seek);
342  }
343  else
344  return E_NOTIMPL;
345  return hr;
346 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_ConvertTimeFormat()

static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat ( IMediaSeeking iface,
LONGLONG pTarget,
const GUID pTargetFormat,
LONGLONG  Source,
const GUID pSourceFormat 
)
static

Definition at line 488 of file pospass.c.

489 {
492  HRESULT hr;
493  TRACE("(%p/%p)->(%p,%s,%x%08x,%s)\n", iface, This, pTarget, debugstr_guid(pTargetFormat), (DWORD)(Source>>32), (DWORD)Source, debugstr_guid(pSourceFormat));
494  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
495  if (SUCCEEDED(hr)) {
496  hr = IMediaSeeking_ConvertTimeFormat(seek, pTarget, pTargetFormat, Source, pSourceFormat);
497  IMediaSeeking_Release(seek);
498  }
499  else
500  return E_NOTIMPL;
501  return hr;
502 }
HRESULT hr
Definition: shlfolder.c:183
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3167
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetAvailable()

static HRESULT WINAPI MediaSeekingPassThru_GetAvailable ( IMediaSeeking iface,
LONGLONG pEarliest,
LONGLONG pLatest 
)
static

Definition at line 537 of file pospass.c.

538 {
541  HRESULT hr;
542  TRACE("(%p/%p)->(%p,%p)\n", iface, This, pEarliest, pLatest);
543  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
544  if (SUCCEEDED(hr)) {
545  hr = IMediaSeeking_GetAvailable(seek, pEarliest, pLatest);
546  IMediaSeeking_Release(seek);
547  }
548  else
549  return E_NOTIMPL;
550  return hr;
551 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetCapabilities()

static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities ( IMediaSeeking iface,
DWORD pCapabilities 
)
static

Definition at line 316 of file pospass.c.

317 {
320  HRESULT hr;
321  TRACE("(%p/%p)->(%p)\n", iface, This, pCapabilities);
322  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
323  if (SUCCEEDED(hr)) {
324  hr = IMediaSeeking_GetCapabilities(seek, pCapabilities);
325  IMediaSeeking_Release(seek);
326  }
327  else
328  return E_NOTIMPL;
329  return hr;
330 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetCurrentPosition()

static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition ( IMediaSeeking iface,
LONGLONG pCurrent 
)
static

Definition at line 460 of file pospass.c.

461 {
464  HRESULT hr = S_OK;
465  TRACE("(%p/%p)->(%p)\n", iface, This, pCurrent);
466  if (!pCurrent)
467  return E_POINTER;
468  EnterCriticalSection(&This->time_cs);
469  if (This->timevalid)
470  *pCurrent = This->time_earliest;
471  else
472  hr = E_FAIL;
473  LeaveCriticalSection(&This->time_cs);
474  if (SUCCEEDED(hr)) {
475  hr = IMediaSeeking_ConvertTimeFormat(iface, pCurrent, NULL, *pCurrent, &TIME_FORMAT_MEDIA_TIME);
476  return hr;
477  }
478  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
479  if (SUCCEEDED(hr)) {
480  hr = IMediaSeeking_GetCurrentPosition(seek, pCurrent);
481  IMediaSeeking_Release(seek);
482  }
483  else
484  return E_NOTIMPL;
485  return hr;
486 }
HRESULT hr
Definition: shlfolder.c:183
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
#define S_OK
Definition: intsafe.h:59
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define E_POINTER
Definition: winerror.h:2365
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetDuration()

static HRESULT WINAPI MediaSeekingPassThru_GetDuration ( IMediaSeeking iface,
LONGLONG pDuration 
)
static

Definition at line 428 of file pospass.c.

429 {
432  HRESULT hr;
433  TRACE("(%p/%p)->(%p)\n", iface, This, pDuration);
434  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
435  if (SUCCEEDED(hr)) {
436  hr = IMediaSeeking_GetDuration(seek, pDuration);
437  IMediaSeeking_Release(seek);
438  }
439  else
440  return E_NOTIMPL;
441  return hr;
442 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetPositions()

static HRESULT WINAPI MediaSeekingPassThru_GetPositions ( IMediaSeeking iface,
LONGLONG pCurrent,
LONGLONG pStop 
)
static

Definition at line 519 of file pospass.c.

520 {
523  HRESULT hr;
524  TRACE("(%p/%p)->(%p, %p)\n", iface, This, pCurrent, pStop);
525  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
526  if (SUCCEEDED(hr)) {
527  hr = IMediaSeeking_GetPositions(seek, pCurrent, pStop);
528  IMediaSeeking_Release(seek);
529  } else if (hr == VFW_E_NOT_CONNECTED) {
530  *pCurrent = 0;
531  *pStop = 0;
532  hr = S_OK;
533  }
534  return hr;
535 }
HRESULT hr
Definition: shlfolder.c:183
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
#define S_OK
Definition: intsafe.h:59
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetPreroll()

static HRESULT WINAPI MediaSeekingPassThru_GetPreroll ( IMediaSeeking iface,
LONGLONG pPreroll 
)
static

Definition at line 585 of file pospass.c.

586 {
589  HRESULT hr;
590  TRACE("(%p)\n", pPreroll);
591  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
592  if (SUCCEEDED(hr)) {
593  hr = IMediaSeeking_GetPreroll(seek, pPreroll);
594  IMediaSeeking_Release(seek);
595  }
596  else
597  return E_NOTIMPL;
598  return hr;
599 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetRate()

static HRESULT WINAPI MediaSeekingPassThru_GetRate ( IMediaSeeking iface,
double dRate 
)
static

Definition at line 569 of file pospass.c.

570 {
573  HRESULT hr;
574  TRACE("(%p/%p)->(%p)\n", iface, This, dRate);
575  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
576  if (SUCCEEDED(hr)) {
577  hr = IMediaSeeking_GetRate(seek, dRate);
578  IMediaSeeking_Release(seek);
579  }
580  else
581  return E_NOTIMPL;
582  return hr;
583 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetStopPosition()

static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition ( IMediaSeeking iface,
LONGLONG pStop 
)
static

Definition at line 444 of file pospass.c.

445 {
448  HRESULT hr;
449  TRACE("(%p/%p)->(%p)\n", iface, This, pStop);
450  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
451  if (SUCCEEDED(hr)) {
452  hr = IMediaSeeking_GetStopPosition(seek, pStop);
453  IMediaSeeking_Release(seek);
454  }
455  else
456  return E_NOTIMPL;
457  return hr;
458 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_GetTimeFormat()

static HRESULT WINAPI MediaSeekingPassThru_GetTimeFormat ( IMediaSeeking iface,
GUID pFormat 
)
static

Definition at line 380 of file pospass.c.

381 {
384  HRESULT hr;
385  TRACE("(%p/%p)->(%p)\n", iface, This, pFormat);
386  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
387  if (SUCCEEDED(hr)) {
388  hr = IMediaSeeking_GetTimeFormat(seek, pFormat);
389  IMediaSeeking_Release(seek);
390  }
391  else
392  return E_NOTIMPL;
393  return hr;
394 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_IsFormatSupported()

static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported ( IMediaSeeking iface,
const GUID pFormat 
)
static

Definition at line 348 of file pospass.c.

349 {
352  HRESULT hr;
353  TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
354  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
355  if (SUCCEEDED(hr)) {
356  hr = IMediaSeeking_IsFormatSupported(seek, pFormat);
357  IMediaSeeking_Release(seek);
358  }
359  else
360  return E_NOTIMPL;
361  return hr;
362 }
HRESULT hr
Definition: shlfolder.c:183
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_IsUsingTimeFormat()

static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat ( IMediaSeeking iface,
const GUID pFormat 
)
static

Definition at line 396 of file pospass.c.

397 {
400  HRESULT hr;
401  TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
402  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
403  if (SUCCEEDED(hr)) {
404  hr = IMediaSeeking_IsUsingTimeFormat(seek, pFormat);
405  IMediaSeeking_Release(seek);
406  }
407  else
408  return E_NOTIMPL;
409  return hr;
410 }
HRESULT hr
Definition: shlfolder.c:183
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_QueryInterface()

static HRESULT WINAPI MediaSeekingPassThru_QueryInterface ( IMediaSeeking iface,
REFIID  riid,
LPVOID ppvObj 
)
static

Definition at line 275 of file pospass.c.

276 {
278 
279  TRACE("(%p/%p)->(%s, %p)\n", This, iface, debugstr_guid(riid), ppvObj);
280 
281  return SeekOuter_QueryInterface(This, riid, ppvObj);
282 }
static HRESULT SeekOuter_QueryInterface(PassThruImpl *This, REFIID riid, LPVOID *ppv)
Definition: pospass.c:141
REFIID riid
Definition: precomp.h:44
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66

◆ MediaSeekingPassThru_QueryPreferredFormat()

static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat ( IMediaSeeking iface,
GUID pFormat 
)
static

Definition at line 364 of file pospass.c.

365 {
368  HRESULT hr;
369  TRACE("(%p/%p)->(%p)\n", iface, This, pFormat);
370  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
371  if (SUCCEEDED(hr)) {
372  hr = IMediaSeeking_QueryPreferredFormat(seek, pFormat);
373  IMediaSeeking_Release(seek);
374  }
375  else
376  return E_NOTIMPL;
377  return hr;
378 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_Release()

static ULONG WINAPI MediaSeekingPassThru_Release ( IMediaSeeking iface)
static

Definition at line 293 of file pospass.c.

294 {
296 
297  TRACE("(%p/%p)->()\n", iface, This);
298 
299  return SeekOuter_Release(This);
300 }
static ULONG SeekOuter_Release(PassThruImpl *This)
Definition: pospass.c:176
#define TRACE(s)
Definition: solgame.cpp:4
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66

◆ MediaSeekingPassThru_SetPositions()

static HRESULT WINAPI MediaSeekingPassThru_SetPositions ( IMediaSeeking iface,
LONGLONG pCurrent,
DWORD  dwCurrentFlags,
LONGLONG pStop,
DWORD  dwStopFlags 
)
static

Definition at line 504 of file pospass.c.

505 {
508  HRESULT hr;
509  TRACE("(%p/%p)->(%p,%x,%p,%x)\n", iface, This, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
510  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
511  if (SUCCEEDED(hr)) {
512  hr = IMediaSeeking_SetPositions(seek, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
513  IMediaSeeking_Release(seek);
514  } else if (hr == VFW_E_NOT_CONNECTED)
515  hr = S_OK;
516  return hr;
517 }
HRESULT hr
Definition: shlfolder.c:183
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
#define S_OK
Definition: intsafe.h:59
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_SetRate()

static HRESULT WINAPI MediaSeekingPassThru_SetRate ( IMediaSeeking iface,
double  dRate 
)
static

Definition at line 553 of file pospass.c.

554 {
557  HRESULT hr;
558  TRACE("(%p/%p)->(%e)\n", iface, This, dRate);
559  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
560  if (SUCCEEDED(hr)) {
561  hr = IMediaSeeking_SetRate(seek, dRate);
562  IMediaSeeking_Release(seek);
563  }
564  else
565  return E_NOTIMPL;
566  return hr;
567 }
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ MediaSeekingPassThru_SetTimeFormat()

static HRESULT WINAPI MediaSeekingPassThru_SetTimeFormat ( IMediaSeeking iface,
const GUID pFormat 
)
static

Definition at line 412 of file pospass.c.

413 {
416  HRESULT hr;
417  TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
418  hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
419  if (SUCCEEDED(hr)) {
420  hr = IMediaSeeking_SetTimeFormat(seek, pFormat);
421  IMediaSeeking_Release(seek);
422  }
423  else
424  return E_NOTIMPL;
425  return hr;
426 }
HRESULT hr
Definition: shlfolder.c:183
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
static PassThruImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:66
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302
#define E_NOTIMPL
Definition: ddrawi.h:99
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ PosPassThru_Construct()

HRESULT WINAPI PosPassThru_Construct ( IUnknown pUnkOuter,
LPVOID ppPassThru 
)

Definition at line 249 of file pospass.c.

250 {
251  PassThruImpl *fimpl;
252 
253  TRACE("(%p,%p)\n", pUnkOuter, ppPassThru);
254 
255  *ppPassThru = fimpl = CoTaskMemAlloc(sizeof(*fimpl));
256  if (!fimpl)
257  return E_OUTOFMEMORY;
258 
259  fimpl->outer_unk = pUnkOuter;
260  fimpl->bUnkOuterValid = FALSE;
261  fimpl->bAggregatable = FALSE;
262  fimpl->IUnknown_inner.lpVtbl = &IInner_VTable;
266  fimpl->ref = 1;
267  fimpl->pin = NULL;
268  fimpl->timevalid = FALSE;
270  fimpl->time_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": PassThruImpl.time_cs");
271  BaseDispatch_Init(&fimpl->baseDispatch, &IID_IMediaPosition);
272  return S_OK;
273 }
LONG ref
Definition: pospass.c:45
#define DWORD_PTR
Definition: treelist.c:76
BOOL bAggregatable
Definition: pospass.c:49
IPin * pin
Definition: pospass.c:47
IUnknown IUnknown_inner
Definition: pospass.c:39
HRESULT WINAPI BaseDispatch_Init(BaseDispatch *This, REFIID riid)
Definition: dispatch.c:30
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
IMediaSeeking IMediaSeeking_iface
Definition: pospass.c:41
BOOL timevalid
Definition: pospass.c:52
BaseDispatch baseDispatch
Definition: pospass.c:43
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl
Definition: pospass.c:35
BOOL bUnkOuterValid
Definition: pospass.c:48
CRITICAL_SECTION time_cs
Definition: pospass.c:51
PCRITICAL_SECTION_DEBUG DebugInfo
Definition: winbase.h:859
IUnknown * outer_unk
Definition: pospass.c:46
#define S_OK
Definition: intsafe.h:59
static const ISeekingPassThruVtbl ISeekingPassThru_Vtbl
Definition: pospass.c:225
IMediaPosition IMediaPosition_iface
Definition: pospass.c:42
ISeekingPassThru ISeekingPassThru_iface
Definition: pospass.c:40
static const IMediaPositionVtbl IMediaPositionPassThru_Vtbl
Definition: pospass.c:36
static const IUnknownVtbl IInner_VTable
Definition: pospass.c:133
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:406
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
Definition: winbase.h:852

Referenced by SeekingPassThru_create().

◆ RendererPosPassThru_EOS()

HRESULT WINAPI RendererPosPassThru_EOS ( IUnknown iface)

Definition at line 620 of file pospass.c.

621 {
624  HRESULT hr;
625  hr = IMediaSeeking_GetStopPosition(&This->IMediaSeeking_iface, &time);
626  EnterCriticalSection(&This->time_cs);
627  if (SUCCEEDED(hr)) {
628  This->timevalid = TRUE;
629  This->time_earliest = time;
630  } else
631  This->timevalid = FALSE;
632  LeaveCriticalSection(&This->time_cs);
633  return hr;
634 }
#define TRUE
Definition: types.h:120
HRESULT hr
Definition: shlfolder.c:183
__u16 time
Definition: mkdosfs.c:366
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static PassThruImpl * impl_from_IUnknown_inner(IUnknown *iface)
Definition: pospass.c:56
LONGLONG REFERENCE_TIME
Definition: dmusicks.h:9
LONG HRESULT
Definition: typedefs.h:77
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by BaseRendererImpl_EndOfStream().

◆ RendererPosPassThru_RegisterMediaTime()

HRESULT WINAPI RendererPosPassThru_RegisterMediaTime ( IUnknown iface,
REFERENCE_TIME  start 
)

Definition at line 601 of file pospass.c.

602 {
604  EnterCriticalSection(&This->time_cs);
605  This->time_earliest = start;
606  This->timevalid = TRUE;
607  LeaveCriticalSection(&This->time_cs);
608  return S_OK;
609 }
#define TRUE
Definition: types.h:120
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static PassThruImpl * impl_from_IUnknown_inner(IUnknown *iface)
Definition: pospass.c:56
#define S_OK
Definition: intsafe.h:59
GLuint start
Definition: gl.h:1545
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

Referenced by BaseRendererImpl_Receive().

◆ RendererPosPassThru_ResetMediaTime()

HRESULT WINAPI RendererPosPassThru_ResetMediaTime ( IUnknown iface)

Definition at line 611 of file pospass.c.

612 {
614  EnterCriticalSection(&This->time_cs);
615  This->timevalid = FALSE;
616  LeaveCriticalSection(&This->time_cs);
617  return S_OK;
618 }
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static PassThruImpl * impl_from_IUnknown_inner(IUnknown *iface)
Definition: pospass.c:56
#define S_OK
Definition: intsafe.h:59
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

Referenced by BaseRendererImpl_EndFlush(), and BaseRendererImpl_Stop().

◆ SeekingPassThru_AddRef()

static ULONG WINAPI SeekingPassThru_AddRef ( ISeekingPassThru iface)
static

Definition at line 192 of file pospass.c.

193 {
195 
196  TRACE("(%p/%p)->()\n", This, iface);
197 
198  return SeekOuter_AddRef(This);
199 }
#define TRACE(s)
Definition: solgame.cpp:4
static ULONG SeekOuter_AddRef(PassThruImpl *This)
Definition: pospass.c:169
static PassThruImpl * impl_from_ISeekingPassThru(ISeekingPassThru *iface)
Definition: pospass.c:61

◆ SeekingPassThru_Init()

static HRESULT WINAPI SeekingPassThru_Init ( ISeekingPassThru iface,
BOOL  renderer,
IPin pin 
)
static

Definition at line 210 of file pospass.c.

211 {
213 
214  TRACE("(%p/%p)->(%d, %p)\n", This, iface, renderer, pin);
215 
216  if (This->pin)
217  FIXME("Re-initializing?\n");
218 
219  This->renderer = renderer;
220  This->pin = pin;
221 
222  return S_OK;
223 }
Definition: regsvr.c:103
#define FIXME(fmt,...)
Definition: debug.h:110
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
static PassThruImpl * impl_from_ISeekingPassThru(ISeekingPassThru *iface)
Definition: pospass.c:61

◆ SeekingPassThru_QueryInterface()

static HRESULT WINAPI SeekingPassThru_QueryInterface ( ISeekingPassThru iface,
REFIID  riid,
LPVOID ppvObj 
)
static

Definition at line 183 of file pospass.c.

184 {
186 
187  TRACE("(%p/%p)->(%s, %p)\n", This, iface, debugstr_guid(riid), ppvObj);
188 
189  return SeekOuter_QueryInterface(This, riid, ppvObj);
190 }
static HRESULT SeekOuter_QueryInterface(PassThruImpl *This, REFIID riid, LPVOID *ppv)
Definition: pospass.c:141
REFIID riid
Definition: precomp.h:44
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
static PassThruImpl * impl_from_ISeekingPassThru(ISeekingPassThru *iface)
Definition: pospass.c:61

◆ SeekingPassThru_Release()

static ULONG WINAPI SeekingPassThru_Release ( ISeekingPassThru iface)
static

Definition at line 201 of file pospass.c.

202 {
204 
205  TRACE("(%p/%p)->()\n", This, iface);
206 
207  return SeekOuter_Release(This);
208 }
static ULONG SeekOuter_Release(PassThruImpl *This)
Definition: pospass.c:176
#define TRACE(s)
Definition: solgame.cpp:4
static PassThruImpl * impl_from_ISeekingPassThru(ISeekingPassThru *iface)
Definition: pospass.c:61

◆ SeekInner_AddRef()

static ULONG WINAPI SeekInner_AddRef ( IUnknown iface)
static

Definition at line 108 of file pospass.c.

108  {
111 
112  TRACE("(%p)->(): new ref = %d\n", This, ref);
113 
114  return ref;
115 }
Definition: send.c:47
static PassThruImpl * impl_from_IUnknown_inner(IUnknown *iface)
Definition: pospass.c:56
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
#define InterlockedIncrement
Definition: armddk.h:53
unsigned int ULONG
Definition: retypes.h:1

◆ SeekInner_QueryInterface()

static HRESULT WINAPI SeekInner_QueryInterface ( IUnknown iface,
REFIID  riid,
LPVOID ppvObj 
)
static

Definition at line 76 of file pospass.c.

78  {
80  TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), ppvObj);
81 
82  if (This->bAggregatable)
83  This->bUnkOuterValid = TRUE;
84 
86  {
87  *ppvObj = &(This->IUnknown_inner);
88  TRACE(" returning IUnknown interface (%p)\n", *ppvObj);
89  } else if (IsEqualGUID(&IID_ISeekingPassThru, riid)) {
90  *ppvObj = &(This->ISeekingPassThru_iface);
91  TRACE(" returning ISeekingPassThru interface (%p)\n", *ppvObj);
92  } else if (IsEqualGUID(&IID_IMediaSeeking, riid)) {
93  *ppvObj = &(This->IMediaSeeking_iface);
94  TRACE(" returning IMediaSeeking interface (%p)\n", *ppvObj);
95  } else if (IsEqualGUID(&IID_IMediaPosition, riid)) {
96  *ppvObj = &(This->IMediaPosition_iface);
97  TRACE(" returning IMediaPosition interface (%p)\n", *ppvObj);
98  } else {
99  *ppvObj = NULL;
100  FIXME("unknown interface %s\n", debugstr_guid(riid));
101  return E_NOINTERFACE;
102  }
103 
104  IUnknown_AddRef((IUnknown *)(*ppvObj));
105  return S_OK;
106 }
#define TRUE
Definition: types.h:120
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
static PassThruImpl * impl_from_IUnknown_inner(IUnknown *iface)
Definition: pospass.c:56
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021

◆ SeekInner_Release()

static ULONG WINAPI SeekInner_Release ( IUnknown iface)
static

Definition at line 117 of file pospass.c.

117  {
120 
121  TRACE("(%p)->(): new ref = %d\n", This, ref);
122 
123  if (ref == 0)
124  {
125  BaseDispatch_Destroy(&This->baseDispatch);
126  This->time_cs.DebugInfo->Spare[0] = 0;
127  DeleteCriticalSection(&This->time_cs);
129  }
130  return ref;
131 }
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:422
Definition: send.c:47
static PassThruImpl * impl_from_IUnknown_inner(IUnknown *iface)
Definition: pospass.c:56
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define InterlockedDecrement
Definition: armddk.h:52
HRESULT WINAPI BaseDispatch_Destroy(BaseDispatch *This)
Definition: dispatch.c:45
unsigned int ULONG
Definition: retypes.h:1

◆ SeekOuter_AddRef()

static ULONG SeekOuter_AddRef ( PassThruImpl This)
static

Definition at line 169 of file pospass.c.

170 {
171  if (This->outer_unk && This->bUnkOuterValid)
172  return IUnknown_AddRef(This->outer_unk);
173  return IUnknown_AddRef(&This->IUnknown_inner);
174 }

Referenced by MediaPositionPassThru_AddRef(), MediaSeekingPassThru_AddRef(), and SeekingPassThru_AddRef().

◆ SeekOuter_QueryInterface()

static HRESULT SeekOuter_QueryInterface ( PassThruImpl This,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 141 of file pospass.c.

142 {
143  if (This->bAggregatable)
144  This->bUnkOuterValid = TRUE;
145 
146  if (This->outer_unk)
147  {
148  if (This->bAggregatable)
149  return IUnknown_QueryInterface(This->outer_unk, riid, ppv);
150 
152  {
153  HRESULT hr;
154 
155  IUnknown_AddRef(&This->IUnknown_inner);
156  hr = IUnknown_QueryInterface(&This->IUnknown_inner, riid, ppv);
157  IUnknown_Release(&This->IUnknown_inner);
158  This->bAggregatable = TRUE;
159  return hr;
160  }
161 
162  *ppv = NULL;
163  return E_NOINTERFACE;
164  }
165 
166  return IUnknown_QueryInterface(&This->IUnknown_inner, riid, ppv);
167 }
#define TRUE
Definition: types.h:120
#define E_NOINTERFACE
Definition: winerror.h:2364
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

Referenced by MediaPositionPassThru_QueryInterface(), MediaSeekingPassThru_QueryInterface(), and SeekingPassThru_QueryInterface().

◆ SeekOuter_Release()

static ULONG SeekOuter_Release ( PassThruImpl This)
static

Definition at line 176 of file pospass.c.

177 {
178  if (This->outer_unk && This->bUnkOuterValid)
179  return IUnknown_Release(This->outer_unk);
180  return IUnknown_Release(&This->IUnknown_inner);
181 }

Referenced by MediaPositionPassThru_Release(), MediaSeekingPassThru_Release(), and SeekingPassThru_Release().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( strmbase  )

Variable Documentation

◆ IInner_VTable

const IUnknownVtbl IInner_VTable
static
Initial value:
=
{
}
static HRESULT WINAPI SeekInner_QueryInterface(IUnknown *iface, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:76
static ULONG WINAPI SeekInner_AddRef(IUnknown *iface)
Definition: pospass.c:108
static ULONG WINAPI SeekInner_Release(IUnknown *iface)
Definition: pospass.c:117

Definition at line 133 of file pospass.c.

Referenced by PosPassThru_Construct().

◆ IMediaPositionPassThru_Vtbl

static const IMediaPositionVtbl IMediaPositionPassThru_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI MediaPositionPassThru_get_StopTime(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:778
static HRESULT WINAPI MediaPositionPassThru_QueryInterface(IMediaPosition *iface, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:660
static HRESULT WINAPI MediaPositionPassThru_put_PrerollTime(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:832
static HRESULT WINAPI MediaPositionPassThru_put_CurrentPosition(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:742
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfoCount(IMediaPosition *iface, UINT *pctinfo)
Definition: pospass.c:687
static HRESULT WINAPI MediaPositionPassThru_CanSeekForward(IMediaPosition *iface, LONG *pCanSeekForward)
Definition: pospass.c:886
static HRESULT WINAPI MediaPositionPassThru_put_StopTime(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:796
static HRESULT WINAPI MediaPositionPassThru_CanSeekBackward(IMediaPosition *iface, LONG *pCanSeekBackward)
Definition: pospass.c:904
static ULONG WINAPI MediaPositionPassThru_AddRef(IMediaPosition *iface)
Definition: pospass.c:669
static HRESULT WINAPI MediaPositionPassThru_put_Rate(IMediaPosition *iface, double dRate)
Definition: pospass.c:850
static HRESULT WINAPI MediaPositionPassThru_GetIDsOfNames(IMediaPosition *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: pospass.c:701
static HRESULT WINAPI MediaPositionPassThru_get_CurrentPosition(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:760
static HRESULT WINAPI MediaPositionPassThru_get_Duration(IMediaPosition *iface, REFTIME *plength)
Definition: pospass.c:724
static HRESULT WINAPI MediaPositionPassThru_get_PrerollTime(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:814
static HRESULT WINAPI MediaPositionPassThru_Invoke(IMediaPosition *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr)
Definition: pospass.c:708
static ULONG WINAPI MediaPositionPassThru_Release(IMediaPosition *iface)
Definition: pospass.c:678
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfo(IMediaPosition *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: pospass.c:694
static HRESULT WINAPI MediaPositionPassThru_get_Rate(IMediaPosition *iface, double *pdRate)
Definition: pospass.c:868

Definition at line 36 of file pospass.c.

Referenced by PosPassThru_Construct().

◆ IMediaSeekingPassThru_Vtbl

static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI MediaSeekingPassThru_GetPreroll(IMediaSeeking *iface, LONGLONG *pPreroll)
Definition: pospass.c:585
static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported(IMediaSeeking *iface, const GUID *pFormat)
Definition: pospass.c:348
static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat(IMediaSeeking *iface, LONGLONG *pTarget, const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat)
Definition: pospass.c:488
static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat(IMediaSeeking *iface, GUID *pFormat)
Definition: pospass.c:364
static HRESULT WINAPI MediaSeekingPassThru_GetTimeFormat(IMediaSeeking *iface, GUID *pFormat)
Definition: pospass.c:380
static HRESULT WINAPI MediaSeekingPassThru_SetTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
Definition: pospass.c:412
static HRESULT WINAPI MediaSeekingPassThru_CheckCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
Definition: pospass.c:332
static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition(IMediaSeeking *iface, LONGLONG *pStop)
Definition: pospass.c:444
static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *pCurrent)
Definition: pospass.c:460
static HRESULT WINAPI MediaSeekingPassThru_GetDuration(IMediaSeeking *iface, LONGLONG *pDuration)
Definition: pospass.c:428
static ULONG WINAPI MediaSeekingPassThru_Release(IMediaSeeking *iface)
Definition: pospass.c:293
static HRESULT WINAPI MediaSeekingPassThru_SetRate(IMediaSeeking *iface, double dRate)
Definition: pospass.c:553
static HRESULT WINAPI MediaSeekingPassThru_GetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, LONGLONG *pStop)
Definition: pospass.c:519
static HRESULT WINAPI MediaSeekingPassThru_QueryInterface(IMediaSeeking *iface, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:275
static HRESULT WINAPI MediaSeekingPassThru_SetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, DWORD dwCurrentFlags, LONGLONG *pStop, DWORD dwStopFlags)
Definition: pospass.c:504
static ULONG WINAPI MediaSeekingPassThru_AddRef(IMediaSeeking *iface)
Definition: pospass.c:284
static HRESULT WINAPI MediaSeekingPassThru_GetRate(IMediaSeeking *iface, double *dRate)
Definition: pospass.c:569
static HRESULT WINAPI MediaSeekingPassThru_GetAvailable(IMediaSeeking *iface, LONGLONG *pEarliest, LONGLONG *pLatest)
Definition: pospass.c:537
static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
Definition: pospass.c:316
static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
Definition: pospass.c:396

Definition at line 35 of file pospass.c.

Referenced by PosPassThru_Construct().

◆ ISeekingPassThru_Vtbl

const ISeekingPassThruVtbl ISeekingPassThru_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI SeekingPassThru_Init(ISeekingPassThru *iface, BOOL renderer, IPin *pin)
Definition: pospass.c:210
static ULONG WINAPI SeekingPassThru_Release(ISeekingPassThru *iface)
Definition: pospass.c:201
static ULONG WINAPI SeekingPassThru_AddRef(ISeekingPassThru *iface)
Definition: pospass.c:192
static HRESULT WINAPI SeekingPassThru_QueryInterface(ISeekingPassThru *iface, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:183

Definition at line 225 of file pospass.c.

Referenced by PosPassThru_Construct().