8294
|
1 #ifndef DMO_INTERFACE_H
|
|
2 #define DMO_INTERFACE_H
|
|
3
|
|
4 #include "dmo.h"
|
|
5
|
|
6 /*
|
|
7 * IMediaBuffer interface
|
|
8 */
|
|
9 typedef struct _IMediaBuffer IMediaBuffer;
|
|
10 typedef struct IMediaBuffer_vt
|
|
11 {
|
|
12 INHERIT_IUNKNOWN();
|
|
13
|
|
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);
|
|
21 } IMediaBuffer_vt;
|
|
22 struct _IMediaBuffer { IMediaBuffer_vt* vt; };
|
|
23
|
|
24
|
|
25 typedef struct _DMO_OUTPUT_DATA_BUFFER
|
|
26 {
|
|
27 IMediaBuffer *pBuffer;
|
|
28 unsigned long dwStatus;
|
|
29 REFERENCE_TIME rtTimestamp;
|
|
30 REFERENCE_TIME rtTimelength;
|
|
31 } DMO_OUTPUT_DATA_BUFFER;
|
|
32
|
|
33
|
|
34 /*
|
|
35 * IMediaObject interface
|
|
36 */
|
|
37 typedef struct _IMediaObject IMediaObject;
|
|
38 typedef struct IMediaObject_vt
|
|
39 {
|
|
40 INHERIT_IUNKNOWN();
|
|
41
|
|
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);
|
|
108 } IMediaObject_vt;
|
|
109 struct _IMediaObject { IMediaObject_vt* vt; };
|
|
110
|
|
111 /*
|
|
112 * IEnumDMO interface
|
|
113 */
|
|
114 typedef struct _IEnumDMO IEnumDMO;
|
|
115 typedef struct IEnumDMO_vt
|
|
116 {
|
|
117 INHERIT_IUNKNOWN();
|
|
118
|
|
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);
|
|
129 } IEnumDMO_vt;
|
|
130 struct _IEnumDMO { IEnumDMO_vt* vt; };
|
|
131
|
|
132 /*
|
|
133 * IMediaObjectInPlace interface
|
|
134 */
|
|
135 typedef struct _IMediaObjectInPlace IMediaObjectInPlace;
|
|
136 typedef struct IMediaObjectInPlace_vt
|
|
137 {
|
|
138 INHERIT_IUNKNOWN();
|
|
139
|
|
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);
|
|
149
|
|
150 } IMediaObjectInPlace_vt;
|
|
151 struct _IMediaObjectInPlace { IMediaObjectInPlace_vt* vt; };
|
|
152
|
|
153
|
|
154 /*
|
|
155 * IDMOQualityControl interface
|
|
156 */
|
|
157 typedef struct _IDMOQualityControl IDMOQualityControl;
|
|
158 typedef struct IDMOQualityControl_vt
|
|
159 {
|
|
160 INHERIT_IUNKNOWN();
|
|
161
|
|
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; };
|
|
170
|
|
171 /*
|
|
172 * IDMOVideoOutputOptimizations interface
|
|
173 */
|
|
174 typedef struct _IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
|
|
175 typedef struct IDMOVideoOutputOptimizations_vt
|
|
176 {
|
|
177 INHERIT_IUNKNOWN();
|
|
178
|
|
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; };
|
|
193
|
|
194 #endif /* DMO_INTERFACE_H */
|