vo_glamo: sub.h was moved to sub directory in c9026cb3210205b07e2e068467a18ee40f9259a3
[mplayer/glamo.git] / loader / dmo / dmo_interfaces.h
blobd0e72f227f117fc27d7a4da7fc9fb65e95c9ec2b
1 #ifndef MPLAYER_DMO_INTERFACES_H
2 #define MPLAYER_DMO_INTERFACES_H
4 #include "dmo.h"
6 /*
7 * IMediaBuffer interface
8 */
9 typedef struct IMediaBuffer IMediaBuffer;
10 typedef struct IMediaBuffer_vt
12 INHERIT_IUNKNOWN();
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; };
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
40 INHERIT_IUNKNOWN();
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; };
112 * IEnumDMO interface
114 typedef struct IEnumDMO IEnumDMO;
115 typedef struct IEnumDMO_vt
117 INHERIT_IUNKNOWN();
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; };
133 * IMediaObjectInPlace interface
135 typedef struct IMediaObjectInPlace IMediaObjectInPlace;
136 typedef struct IMediaObjectInPlace_vt
138 INHERIT_IUNKNOWN();
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
160 INHERIT_IUNKNOWN();
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
177 INHERIT_IUNKNOWN();
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 */