source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/mediaobj.idl@ 1194

Last change on this file since 1194 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 6.9 KB
RevLine 
[1166]1/*
2 * Copyright (C) 2002 Alexandre Julliard
3 * Copyright (C) 2004 Vincent Béron
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19
20import "unknwn.idl";
21import "objidl.idl";
22import "strmif.idl";
23
24typedef struct _DMOMediaType
25{
26 GUID majortype;
27 GUID subtype;
28 BOOL bFixedSizeSamples;
29 BOOL bTemporalCompression;
30 ULONG lSampleSize;
31 GUID formattype;
32 IUnknown *pUnk;
33 ULONG cbFormat;
34 BYTE *pbFormat;
35} DMO_MEDIA_TYPE;
36
37/*****************************************************************************
38 * IEnumDMO interface
39 */
40[
41 object,
42 uuid(2C3CD98A-2BFA-4A53-9C27-5249BA64BA0F),
43 pointer_default(unique)
44]
45interface IEnumDMO : IUnknown
46{
47 [local]
48 HRESULT Next(
49 [in] DWORD cItemsToFetch,
50 [out] CLSID *pCLSID,
51 [out] WCHAR **Names,
52 [out] DWORD *pcItemsFetched
53 );
54
55 HRESULT Skip(
56 [in] DWORD cItemsToSkip
57 );
58
59 HRESULT Reset();
60
61 HRESULT Clone(
62 [out] IEnumDMO **ppEnum
63 );
64}
65
66/*****************************************************************************
67 * IMediaBuffer interface
68 */
69[
70 object,
71 uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837),
72 local
73]
74interface IMediaBuffer : IUnknown
75{
76 HRESULT SetLength(
77 DWORD cbLength
78 );
79
80 HRESULT GetMaxLength(
81 [out] DWORD *pcbMaxLength
82 );
83
84 HRESULT GetBufferAndLength(
85 [out] BYTE **ppBuffer,
86 [out] DWORD *pcbLength
87 );
88}
89
90enum _DMO_INPUT_STATUS_FLAGS
91{
92 DMO_INPUT_STATUSF_ACCEPT_DATA = 0x00000001,
93};
94
95enum _DMO_INPUT_DATA_BUFFER_FLAGS
96{
97 DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
98 DMO_INPUT_DATA_BUFFERF_TIME = 0x00000002,
99 DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004,
100};
101
102enum _DMO_PROCESS_OUTPUT_FLAGS
103{
104 DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x00000001,
105};
106
107typedef struct _DMO_OUTPUT_DATA_BUFFER {
108 IMediaBuffer *pBuffer;
109 DWORD dwStatus;
110 REFERENCE_TIME rtTimestamp;
111 REFERENCE_TIME rtTimelength;
112} DMO_OUTPUT_DATA_BUFFER, *PDMO_OUTPUT_DATA_BUFFER;
113
114enum _DMO_INPLACE_PROCESS_FLAGS {
115 DMO_INPLACE_NORMAL = 0x00000000,
116 DMO_INPLACE_ZERO = 0x00000001
117};
118
119enum _DMO_SET_TYPE_FLAGS {
120 DMO_SET_TYPEF_TEST_ONLY = 0x00000001,
121 DMO_SET_TYPEF_CLEAR = 0x00000002,
122};
123
124enum _DMO_OUTPUT_DATA_BUFFERF_FLAGS {
125 DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
126 DMO_OUTPUT_DATA_BUFFERF_TIME = 0x00000002,
127 DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004,
128 DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x01000000,
129};
130
131/*****************************************************************************
132 * IMediaObject interface
133 */
134[
135 object,
136 uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4),
137 local
138]
139interface IMediaObject : IUnknown
140{
141 HRESULT GetStreamCount(
142 [out] DWORD *pcInputStreams,
143 [out] DWORD *pcOutputStreams
144 );
145
146 HRESULT GetInputStreamInfo(
147 DWORD dwInputStreamIndex,
148 [out] DWORD *pdwFlags
149 );
150
151 HRESULT GetOutputStreamInfo(
152 DWORD dwOutputStreamIndex,
153 [out] DWORD *pdwFlags
154 );
155
156 HRESULT GetInputType(
157 DWORD dwInputStreamIndex,
158 DWORD dwTypeIndex,
159 [out] DMO_MEDIA_TYPE *pmt
160 );
161
162 HRESULT GetOutputType(
163 DWORD dwOutputStreamIndex,
164 DWORD dwTypeIndex,
165 [out] DMO_MEDIA_TYPE *pmt
166 );
167
168 HRESULT SetInputType(
169 DWORD dwInputStreamIndex,
170 [in] const DMO_MEDIA_TYPE *pmt,
171 DWORD dwFlags
172 );
173
174 HRESULT SetOutputType(
175 DWORD dwOutputStreamIndex,
176 [in] const DMO_MEDIA_TYPE *pmt,
177 DWORD dwFlags
178 );
179
180 HRESULT GetInputCurrentType(
181 DWORD dwInputStreamIndex,
182 [out] DMO_MEDIA_TYPE *pmt
183 );
184
185 HRESULT GetOutputCurrentType(
186 DWORD dwOutputStreamIndex,
187 [out] DMO_MEDIA_TYPE *pmt
188 );
189
190 HRESULT GetInputSizeInfo(
191 DWORD dwInputStreamIndex,
192 [out] DWORD *pcbSize,
193 [out] DWORD *pcbMaxLookahead,
194 [out] DWORD *pcbAlignment
195 );
196
197 HRESULT GetOutputSizeInfo(
198 DWORD dwOutputStreamIndex,
199 [out] DWORD *pcbSize,
200 [out] DWORD *pcbAlignment
201 );
202
203 HRESULT GetInputMaxLatency(
204 DWORD dwInputStreamIndex,
205 [out] REFERENCE_TIME *prtMaxLatency
206 );
207
208 HRESULT SetInputMaxLatency(
209 DWORD dwInputStreamIndex,
210 REFERENCE_TIME rtMaxLatency
211 );
212
213 HRESULT Flush();
214
215 HRESULT Discontinuity(DWORD dwInputStreamIndex);
216
217 HRESULT AllocateStreamingResources();
218
219 HRESULT FreeStreamingResources();
220
221 HRESULT GetInputStatus(
222 DWORD dwInputStreamIndex,
223 [out] DWORD *dwFlags
224 );
225
226 HRESULT ProcessInput(
227 DWORD dwInputStreamIndex,
228 IMediaBuffer *pBuffer,
229 DWORD dwFlags,
230 REFERENCE_TIME rtTimestamp,
231 REFERENCE_TIME rtTimelength
232 );
233
234 HRESULT ProcessOutput(
235 DWORD dwFlags,
236 DWORD cOutputBufferCount,
237 [in,out] DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
238 [out] DWORD *pdwStatus
239 );
240
241 HRESULT Lock(LONG bLock);
242}
243
244/*****************************************************************************
245 * IMediaObjectInPlace interface
246 */
247
248[
249 object,
250 uuid(651b9ad0-0fc7-4aa9-9538-d89931010741),
251 local
252]
253interface IMediaObjectInPlace : IUnknown {
254 HRESULT Process(
255 [in] ULONG ulSize,
256 [in,out] BYTE* pData,
257 [in] REFERENCE_TIME refTimeStart,
258 [in] DWORD dwFlags
259 );
260
261 HRESULT Clone(
262 [out] IMediaObjectInPlace **ppMediaObject
263 );
264
265 HRESULT GetLatency(
266 [out] REFERENCE_TIME *pLatencyTime
267 );
268}
269
270enum _DMO_QUALITY_STATUS_FLAGS
271{
272 DMO_QUALITY_STATUS_ENABLED = 0x00000001,
273};
274
275[
276 object,
277 uuid(65abea96-cf36-453f-af8a-705e98f16260),
278 local
279]
280interface IDMOQualityControl : IUnknown
281{
282 HRESULT SetNow([in] REFERENCE_TIME now);
283 HRESULT SetStatus([in] DWORD flags);
284 HRESULT GetStatus([out] DWORD *flags);
285}
286
287enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS
288{
289 DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x00000001,
290};
291
292[
293 object,
294 uuid(be8f4f4e-5b16-4d29-b350-7f6b5d9298ac),
295 local
296]
297interface IDMOVideoOutputOptimizations : IUnknown
298{
299 HRESULT QueryOperationModePreferences(ULONG index, DWORD *flags);
300 HRESULT SetOperationMode(ULONG index, DWORD flags);
301 HRESULT GetCurrentOperationMode(ULONG index, DWORD *flags);
302 HRESULT GetCurrentSampleRequirements(ULONG index, DWORD *flags);
303}
Note: See TracBrowser for help on using the repository browser.