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)
12 const GUID IID_IUnknown
= {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x46}};
13 const GUID IID_IClassFactory
= {0x00000001, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}};
14 const GUID IID_IKsDataTypeHandler
= {0x5FFBAA02, 0x49A3, 0x11D0, {0x9F, 0x36, 0x00, 0xAA, 0x00, 0xA2, 0x16, 0xA1}};
15 const GUID MEDIATYPE_Audio
= {0x73647561, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
18 class CKsDataTypeHandler
: public IKsDataTypeHandler
21 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
23 STDMETHODIMP_(ULONG
) AddRef()
25 InterlockedIncrement(&m_Ref
);
28 STDMETHODIMP_(ULONG
) Release()
30 InterlockedDecrement(&m_Ref
);
40 HRESULT STDMETHODCALLTYPE
KsCompleteIoOperation(IN OUT IMediaSample
*Sample
, IN OUT PVOID StreamHeader
, IN KSIOOPERATION IoOperation
, IN BOOL Cancelled
);
41 HRESULT STDMETHODCALLTYPE
KsIsMediaTypeInRanges(IN PVOID DataRanges
);
42 HRESULT STDMETHODCALLTYPE
KsPrepareIoOperation(IN OUT IMediaSample
*Sample
, IN OUT PVOID StreamHeader
, IN KSIOOPERATION IoOperation
);
43 HRESULT STDMETHODCALLTYPE
KsQueryExtendedSize(OUT ULONG
* ExtendedSize
);
44 HRESULT STDMETHODCALLTYPE
KsSetMediaType(IN
const AM_MEDIA_TYPE
* AmMediaType
);
46 CKsDataTypeHandler() : m_Ref(0){};
47 virtual ~CKsDataTypeHandler(){};
50 //CMediaType * m_Type;
57 CKsDataTypeHandler::QueryInterface(
61 if (IsEqualGUID(refiid
, IID_IUnknown
) ||
62 IsEqualGUID(refiid
, IID_IKsDataTypeHandler
))
64 *Output
= PVOID(this);
65 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
74 CKsDataTypeHandler::KsCompleteIoOperation(
75 IN OUT IMediaSample
*Sample
,
76 IN OUT PVOID StreamHeader
,
77 IN KSIOOPERATION IoOperation
,
86 CKsDataTypeHandler::KsIsMediaTypeInRanges(
89 OutputDebugString("UNIMPLEMENTED\n");
95 CKsDataTypeHandler::KsPrepareIoOperation(
96 IN OUT IMediaSample
*Sample
,
97 IN OUT PVOID StreamHeader
,
98 IN KSIOOPERATION IoOperation
)
105 CKsDataTypeHandler::KsQueryExtendedSize(
106 OUT ULONG
* ExtendedSize
)
108 /* no header extension required */
116 CKsDataTypeHandler::KsSetMediaType(
117 IN
const AM_MEDIA_TYPE
* AmMediaType
)
122 /* media type can only be set once */
128 * TODO: allocate CMediaType and copy parameters
130 OutputDebugString("UNIMPLEMENTED\n");
136 CKsDataTypeHandler_Constructor (
137 IUnknown
* pUnkOuter
,
141 CKsDataTypeHandler
* handler
= new CKsDataTypeHandler();
144 return E_OUTOFMEMORY
;
146 if (FAILED(handler
->QueryInterface(riid
, ppv
)))
150 return E_NOINTERFACE
;