ReactOS 0.4.15-dev-7788-g1ad9096
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}
const GUID IID_IUnknown
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183

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}
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112
REFIID riid
Definition: atlbase.h:39
Definition: axcore.idl:92
Definition: regsvr.c:104
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48

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}

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

◆ impl_from_IUnknown_inner()

static PassThruImpl * impl_from_IUnknown_inner ( IUnknown iface)
inlinestatic

◆ 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}
static ULONG SeekOuter_AddRef(PassThruImpl *This)
Definition: pospass.c:169
static PassThruImpl * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:71
#define TRACE(s)
Definition: solgame.cpp:4

◆ 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}
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static HRESULT get_connected(PassThruImpl *This, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:302

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}
HRESULT WINAPI BaseDispatchImpl_GetIDsOfNames(BaseDispatch *This, REFIID riid, OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid)
Definition: dispatch.c:52

◆ 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}
#define IID_NULL
Definition: guiddef.h:98
HRESULT WINAPI BaseDispatchImpl_GetTypeInfo(BaseDispatch *This, REFIID riid, UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
Definition: dispatch.c:59

◆ 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

◆ 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}
#define S_OK
Definition: intsafe.h:52
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531

◆ 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}
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49

◆ 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}

◆ 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}

◆ 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}

◆ 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}
#define debugstr_guid
Definition: kernel32.h:35
static HRESULT SeekOuter_QueryInterface(PassThruImpl *This, REFIID riid, LPVOID *ppv)
Definition: pospass.c:141

◆ 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

◆ 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}
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}
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51

◆ 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}
unsigned long DWORD
Definition: ntddk_ex.h:95
FxIoTarget * pTarget
Definition: fxdeviceapi.cpp:97
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3169

◆ 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}

◆ 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}

◆ 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}
#define E_FAIL
Definition: ddrawi.h:102
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define E_POINTER
Definition: winerror.h:2365

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}

◆ 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}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define FALSE
Definition: types.h:117
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
static const ISeekingPassThruVtbl ISeekingPassThru_Vtbl
Definition: pospass.c:225
static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl
Definition: pospass.c:35
static const IMediaPositionVtbl IMediaPositionPassThru_Vtbl
Definition: pospass.c:36
static const IUnknownVtbl IInner_VTable
Definition: pospass.c:133
HRESULT WINAPI BaseDispatch_Init(BaseDispatch *This, REFIID riid)
Definition: dispatch.c:30
BaseDispatch baseDispatch
Definition: pospass.c:43
LONG ref
Definition: pospass.c:45
BOOL bAggregatable
Definition: pospass.c:49
CRITICAL_SECTION time_cs
Definition: pospass.c:51
BOOL bUnkOuterValid
Definition: pospass.c:48
IUnknown IUnknown_inner
Definition: pospass.c:39
ISeekingPassThru ISeekingPassThru_iface
Definition: pospass.c:40
IUnknown * outer_unk
Definition: pospass.c:46
BOOL timevalid
Definition: pospass.c:52
IMediaPosition IMediaPosition_iface
Definition: pospass.c:42
IMediaSeeking IMediaSeeking_iface
Definition: pospass.c:41
IPin * pin
Definition: pospass.c:47
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
Definition: winbase.h:887
PCRITICAL_SECTION_DEBUG DebugInfo
Definition: winbase.h:894
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751
#define DWORD_PTR
Definition: treelist.c:76

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
LONGLONG REFERENCE_TIME
Definition: dmusicks.h:9
__u16 time
Definition: mkdosfs.c:8
static PassThruImpl * impl_from_IUnknown_inner(IUnknown *iface)
Definition: pospass.c:56

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}
GLuint start
Definition: gl.h:1545

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}

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}
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}
#define FIXME(fmt,...)
Definition: debug.h:111

◆ 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}

◆ 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}

◆ 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}
#define InterlockedIncrement
Definition: armddk.h:53
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

◆ 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 IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ 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}
#define InterlockedDecrement
Definition: armddk.h:52
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
HRESULT WINAPI BaseDispatch_Destroy(BaseDispatch *This)
Definition: dispatch.c:45
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)

◆ 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}
REFIID LPVOID * ppv
Definition: atlbase.h:39
#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 ULONG WINAPI SeekInner_Release(IUnknown *iface)
Definition: pospass.c:117
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

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_GetTypeInfo(IMediaPosition *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: pospass.c:694
static HRESULT WINAPI MediaPositionPassThru_put_CurrentPosition(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:742
static HRESULT WINAPI MediaPositionPassThru_get_Duration(IMediaPosition *iface, REFTIME *plength)
Definition: pospass.c:724
static HRESULT WINAPI MediaPositionPassThru_put_StopTime(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:796
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 HRESULT WINAPI MediaPositionPassThru_CanSeekForward(IMediaPosition *iface, LONG *pCanSeekForward)
Definition: pospass.c:886
static ULONG WINAPI MediaPositionPassThru_Release(IMediaPosition *iface)
Definition: pospass.c:678
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_Rate(IMediaPosition *iface, double *pdRate)
Definition: pospass.c:868
static ULONG WINAPI MediaPositionPassThru_AddRef(IMediaPosition *iface)
Definition: pospass.c:669
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfoCount(IMediaPosition *iface, UINT *pctinfo)
Definition: pospass.c:687
static HRESULT WINAPI MediaPositionPassThru_get_CurrentPosition(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:760
static HRESULT WINAPI MediaPositionPassThru_get_StopTime(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:778
static HRESULT WINAPI MediaPositionPassThru_get_PrerollTime(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:814
static HRESULT WINAPI MediaPositionPassThru_put_PrerollTime(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:832
static HRESULT WINAPI MediaPositionPassThru_CanSeekBackward(IMediaPosition *iface, LONG *pCanSeekBackward)
Definition: pospass.c:904
static HRESULT WINAPI MediaPositionPassThru_QueryInterface(IMediaPosition *iface, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:660
static HRESULT WINAPI MediaPositionPassThru_put_Rate(IMediaPosition *iface, double dRate)
Definition: pospass.c:850

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_GetAvailable(IMediaSeeking *iface, LONGLONG *pEarliest, LONGLONG *pLatest)
Definition: pospass.c:537
static HRESULT WINAPI MediaSeekingPassThru_GetPreroll(IMediaSeeking *iface, LONGLONG *pPreroll)
Definition: pospass.c:585
static HRESULT WINAPI MediaSeekingPassThru_GetDuration(IMediaSeeking *iface, LONGLONG *pDuration)
Definition: pospass.c:428
static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported(IMediaSeeking *iface, const GUID *pFormat)
Definition: pospass.c:348
static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *pCurrent)
Definition: pospass.c:460
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_SetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, DWORD dwCurrentFlags, LONGLONG *pStop, DWORD dwStopFlags)
Definition: pospass.c:504
static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat(IMediaSeeking *iface, GUID *pFormat)
Definition: pospass.c:364
static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
Definition: pospass.c:396
static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition(IMediaSeeking *iface, LONGLONG *pStop)
Definition: pospass.c:444
static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
Definition: pospass.c:316
static HRESULT WINAPI MediaSeekingPassThru_SetRate(IMediaSeeking *iface, double dRate)
Definition: pospass.c:553
static ULONG WINAPI MediaSeekingPassThru_AddRef(IMediaSeeking *iface)
Definition: pospass.c:284
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_GetRate(IMediaSeeking *iface, double *dRate)
Definition: pospass.c:569
static HRESULT WINAPI MediaSeekingPassThru_QueryInterface(IMediaSeeking *iface, REFIID riid, LPVOID *ppvObj)
Definition: pospass.c:275
static ULONG WINAPI MediaSeekingPassThru_Release(IMediaSeeking *iface)
Definition: pospass.c:293
static HRESULT WINAPI MediaSeekingPassThru_GetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, LONGLONG *pStop)
Definition: pospass.c:519

Definition at line 35 of file pospass.c.

Referenced by PosPassThru_Construct().

◆ ISeekingPassThru_Vtbl

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

Definition at line 225 of file pospass.c.

Referenced by PosPassThru_Construct().