2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WDM Streaming ActiveMovie Proxy
4 * FILE: dll/directx/ksproxy/datatype.cpp
5 * PURPOSE: IKsDataTypeHandler interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
13 const GUID IID_IUnknown
= {0x00000000, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}};
15 const GUID IID_IClassFactory
= {0x00000001, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}};
17 class CKsDataTypeHandler
: public IKsDataTypeHandler
20 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
22 STDMETHODIMP_(ULONG
) AddRef()
24 InterlockedIncrement(&m_Ref
);
27 STDMETHODIMP_(ULONG
) Release()
29 InterlockedDecrement(&m_Ref
);
39 HRESULT STDMETHODCALLTYPE
KsCompleteIoOperation(IN OUT IMediaSample
*Sample
, IN OUT PVOID StreamHeader
, IN KSIOOPERATION IoOperation
, IN BOOL Cancelled
);
40 HRESULT STDMETHODCALLTYPE
KsIsMediaTypeInRanges(IN PVOID DataRanges
);
41 HRESULT STDMETHODCALLTYPE
KsPrepareIoOperation(IN OUT IMediaSample
*Sample
, IN OUT PVOID StreamHeader
, IN KSIOOPERATION IoOperation
);
42 HRESULT STDMETHODCALLTYPE
KsQueryExtendedSize(OUT ULONG
* ExtendedSize
);
43 HRESULT STDMETHODCALLTYPE
KsSetMediaType(IN
const AM_MEDIA_TYPE
* AmMediaType
);
45 CKsDataTypeHandler() : m_Ref(0){};
46 virtual ~CKsDataTypeHandler(){};
49 //CMediaType * m_Type;
56 CKsDataTypeHandler::QueryInterface(
60 if (IsEqualGUID(refiid
, IID_IUnknown
) ||
61 IsEqualGUID(refiid
, IID_IKsDataTypeHandler
))
63 *Output
= PVOID(this);
64 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
73 CKsDataTypeHandler::KsCompleteIoOperation(
74 IN OUT IMediaSample
*Sample
,
75 IN OUT PVOID StreamHeader
,
76 IN KSIOOPERATION IoOperation
,
85 CKsDataTypeHandler::KsIsMediaTypeInRanges(
88 OutputDebugString("UNIMPLEMENTED\n");
94 CKsDataTypeHandler::KsPrepareIoOperation(
95 IN OUT IMediaSample
*Sample
,
96 IN OUT PVOID StreamHeader
,
97 IN KSIOOPERATION IoOperation
)
104 CKsDataTypeHandler::KsQueryExtendedSize(
105 OUT ULONG
* ExtendedSize
)
107 /* no header extension required */
115 CKsDataTypeHandler::KsSetMediaType(
116 IN
const AM_MEDIA_TYPE
* AmMediaType
)
121 /* media type can only be set once */
127 * TODO: allocate CMediaType and copy parameters
129 OutputDebugString("UNIMPLEMENTED\n");
135 CKsDataTypeHandler_Constructor (
136 IUnknown
* pUnkOuter
,
140 OutputDebugStringW(L
"CKsDataTypeHandler_Constructor\n");
142 CKsDataTypeHandler
* handler
= new CKsDataTypeHandler();
145 return E_OUTOFMEMORY
;
147 if (FAILED(handler
->QueryInterface(riid
, ppv
)))
151 return E_NOINTERFACE
;