1 #ifndef MPLAYER_DMO_INTERFACES_H
2 #define MPLAYER_DMO_INTERFACES_H
7 * IMediaBuffer interface
9 typedef struct IMediaBuffer IMediaBuffer
;
10 typedef struct IMediaBuffer_vt
14 HRESULT
STDCALL ( *SetLength
)(IMediaBuffer
* This
,
15 unsigned long cbLength
);
16 HRESULT
STDCALL ( *GetMaxLength
)(IMediaBuffer
* This
,
17 /* [out] */ unsigned long *pcbMaxLength
);
18 HRESULT
STDCALL ( *GetBufferAndLength
)(IMediaBuffer
* This
,
19 /* [out] */ char** ppBuffer
,
20 /* [out] */ unsigned long* pcbLength
);
22 struct IMediaBuffer
{ IMediaBuffer_vt
* vt
; };
25 typedef struct DMO_OUTPUT_DATA_BUFFER
27 IMediaBuffer
*pBuffer
;
28 unsigned long dwStatus
;
29 REFERENCE_TIME rtTimestamp
;
30 REFERENCE_TIME rtTimelength
;
31 } DMO_OUTPUT_DATA_BUFFER
;
35 * IMediaObject interface
37 typedef struct IMediaObject IMediaObject
;
38 typedef struct IMediaObject_vt
42 HRESULT
STDCALL ( *GetStreamCount
)(IMediaObject
* This
,
43 /* [out] */ unsigned long *pcInputStreams
,
44 /* [out] */ unsigned long *pcOutputStreams
);
45 HRESULT
STDCALL ( *GetInputStreamInfo
)(IMediaObject
* This
,
46 unsigned long dwInputStreamIndex
,
47 /* [out] */ unsigned long *pdwFlags
);
48 HRESULT
STDCALL ( *GetOutputStreamInfo
)(IMediaObject
* This
,
49 unsigned long dwOutputStreamIndex
,
50 /* [out] */ unsigned long *pdwFlags
);
51 HRESULT
STDCALL ( *GetInputType
)(IMediaObject
* This
,
52 unsigned long dwInputStreamIndex
,
53 unsigned long dwTypeIndex
,
54 /* [out] */ DMO_MEDIA_TYPE
*pmt
);
55 HRESULT
STDCALL ( *GetOutputType
)(IMediaObject
* This
,
56 unsigned long dwOutputStreamIndex
,
57 unsigned long dwTypeIndex
,
58 /* [out] */ DMO_MEDIA_TYPE
*pmt
);
59 HRESULT
STDCALL ( *SetInputType
)(IMediaObject
* This
,
60 unsigned long dwInputStreamIndex
,
61 /* [in] */ const DMO_MEDIA_TYPE
*pmt
,
62 unsigned long dwFlags
);
63 HRESULT
STDCALL ( *SetOutputType
)(IMediaObject
* This
,
64 unsigned long dwOutputStreamIndex
,
65 /* [in] */ const DMO_MEDIA_TYPE
*pmt
,
66 unsigned long dwFlags
);
67 HRESULT
STDCALL ( *GetInputCurrentType
)(IMediaObject
* This
,
68 unsigned long dwInputStreamIndex
,
69 /* [out] */ DMO_MEDIA_TYPE
*pmt
);
70 HRESULT
STDCALL ( *GetOutputCurrentType
)(IMediaObject
* This
,
71 unsigned long dwOutputStreamIndex
,
72 /* [out] */ DMO_MEDIA_TYPE
*pmt
);
73 HRESULT
STDCALL ( *GetInputSizeInfo
)(IMediaObject
* This
,
74 unsigned long dwInputStreamIndex
,
75 /* [out] */ unsigned long *pcbSize
,
76 /* [out] */ unsigned long *pcbMaxLookahead
,
77 /* [out] */ unsigned long *pcbAlignment
);
78 HRESULT
STDCALL ( *GetOutputSizeInfo
)(IMediaObject
* This
,
79 unsigned long dwOutputStreamIndex
,
80 /* [out] */ unsigned long *pcbSize
,
81 /* [out] */ unsigned long *pcbAlignment
);
82 HRESULT
STDCALL ( *GetInputMaxLatency
)(IMediaObject
* This
,
83 unsigned long dwInputStreamIndex
,
84 /* [out] */ REFERENCE_TIME
*prtMaxLatency
);
85 HRESULT
STDCALL ( *SetInputMaxLatency
)(IMediaObject
* This
,
86 unsigned long dwInputStreamIndex
,
87 REFERENCE_TIME rtMaxLatency
);
88 HRESULT
STDCALL ( *Flush
)(IMediaObject
* This
);
89 HRESULT
STDCALL ( *Discontinuity
)(IMediaObject
* This
,
90 unsigned long dwInputStreamIndex
);
91 HRESULT
STDCALL ( *AllocateStreamingResources
)(IMediaObject
* This
);
92 HRESULT
STDCALL ( *FreeStreamingResources
)(IMediaObject
* This
);
93 HRESULT
STDCALL ( *GetInputStatus
)(IMediaObject
* This
,
94 unsigned long dwInputStreamIndex
,
95 /* [out] */ unsigned long *dwFlags
);
96 HRESULT
STDCALL ( *ProcessInput
)(IMediaObject
* This
,
97 unsigned long dwInputStreamIndex
,
98 IMediaBuffer
*pBuffer
,
99 unsigned long dwFlags
,
100 REFERENCE_TIME rtTimestamp
,
101 REFERENCE_TIME rtTimelength
);
102 HRESULT
STDCALL ( *ProcessOutput
)(IMediaObject
* This
,
103 unsigned long dwFlags
,
104 unsigned long cOutputBufferCount
,
105 /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER
*pOutputBuffers
,
106 /* [out] */ unsigned long *pdwStatus
);
107 HRESULT
STDCALL ( *Lock
)(IMediaObject
* This
, long bLock
);
109 struct IMediaObject
{ IMediaObject_vt
* vt
; };
114 typedef struct IEnumDMO IEnumDMO
;
115 typedef struct IEnumDMO_vt
119 HRESULT
STDCALL ( *Next
)(IEnumDMO
* This
,
120 unsigned long cItemsToFetch
,
121 /* [length_is][size_is][out] */ CLSID
*pCLSID
,
122 /* [string][length_is][size_is][out] */ WCHAR
**Names
,
123 /* [out] */ unsigned long *pcItemsFetched
);
124 HRESULT
STDCALL ( *Skip
)(IEnumDMO
* This
,
125 unsigned long cItemsToSkip
);
126 HRESULT
STDCALL ( *Reset
)(IEnumDMO
* This
);
127 HRESULT
STDCALL ( *Clone
)(IEnumDMO
* This
,
128 /* [out] */ IEnumDMO
**ppEnum
);
130 struct IEnumDMO
{ IEnumDMO_vt
* vt
; };
133 * IMediaObjectInPlace interface
135 typedef struct IMediaObjectInPlace IMediaObjectInPlace
;
136 typedef struct IMediaObjectInPlace_vt
140 HRESULT
STDCALL ( *Process
)(IMediaObjectInPlace
* This
,
141 /* [in] */ unsigned long ulSize
,
142 /* [size_is][out][in] */ BYTE
*pData
,
143 /* [in] */ REFERENCE_TIME refTimeStart
,
144 /* [in] */ unsigned long dwFlags
);
145 HRESULT
STDCALL ( *Clone
)(IMediaObjectInPlace
* This
,
146 /* [out] */ IMediaObjectInPlace
**ppMediaObject
);
147 HRESULT
STDCALL ( *GetLatency
)(IMediaObjectInPlace
* This
,
148 /* [out] */ REFERENCE_TIME
*pLatencyTime
);
150 } IMediaObjectInPlace_vt
;
151 struct IMediaObjectInPlace
{ IMediaObjectInPlace_vt
* vt
; };
155 * IDMOQualityControl interface
157 typedef struct IDMOQualityControl IDMOQualityControl
;
158 typedef struct IDMOQualityControl_vt
162 HRESULT
STDCALL ( *SetNow
)(IDMOQualityControl
* This
,
163 /* [in] */ REFERENCE_TIME rtNow
);
164 HRESULT
STDCALL ( *SetStatus
)(IDMOQualityControl
* This
,
165 /* [in] */ unsigned long dwFlags
);
166 HRESULT
STDCALL ( *GetStatus
)(IDMOQualityControl
* This
,
167 /* [out] */ unsigned long *pdwFlags
);
168 } IDMOQualityControl_vt
;
169 struct IDMOQualityControl
{ IDMOQualityControl_vt
* vt
; };
172 * IDMOVideoOutputOptimizations interface
174 typedef struct IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations
;
175 typedef struct IDMOVideoOutputOptimizations_vt
179 HRESULT
STDCALL ( *QueryOperationModePreferences
)(IDMOVideoOutputOptimizations
* This
,
180 unsigned long ulOutputStreamIndex
,
181 unsigned long *pdwRequestedCapabilities
);
182 HRESULT
STDCALL ( *SetOperationMode
)(IDMOVideoOutputOptimizations
* This
,
183 unsigned long ulOutputStreamIndex
,
184 unsigned long dwEnabledFeatures
);
185 HRESULT
STDCALL ( *GetCurrentOperationMode
)(IDMOVideoOutputOptimizations
* This
,
186 unsigned long ulOutputStreamIndex
,
187 unsigned long *pdwEnabledFeatures
);
188 HRESULT
STDCALL ( *GetCurrentSampleRequirements
)(IDMOVideoOutputOptimizations
* This
,
189 unsigned long ulOutputStreamIndex
,
190 unsigned long *pdwRequestedFeatures
);
191 } IDMOVideoOutputOptimizations_vt
;
192 struct IDMOVideoOutputOptimizations
{ IDMOVideoOutputOptimizations_vt
* vt
; };
194 #endif /* MPLAYER_DMO_INTERFACES_H */