xine-lib  1.2.10
dmo_interfaces.h
Go to the documentation of this file.
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 {
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);
23 
24 
26 {
28  unsigned long dwStatus;
32 
33 
34 /*
35  * IMediaObject interface
36  */
37 typedef struct _IMediaObject IMediaObject;
38 typedef struct IMediaObject_vt
39 {
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);
110 
111 /*
112  * IEnumDMO interface
113  */
114 typedef struct _IEnumDMO IEnumDMO;
115 typedef struct IEnumDMO_vt
116 {
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  */
137 {
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 
152 
153 
154 /*
155  * IDMOQualityControl interface
156  */
158 typedef struct IDMOQualityControl_vt
159 {
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);
170 
171 /*
172  * IDMOVideoOutputOptimizations interface
173  */
176 {
178 
180  unsigned long ulOutputStreamIndex,
181  unsigned long *pdwRequestedCapabilities);
182  HRESULT STDCALL ( *SetOperationMode )(IDMOVideoOutputOptimizations * This,
183  unsigned long ulOutputStreamIndex,
184  unsigned long dwEnabledFeatures);
186  unsigned long ulOutputStreamIndex,
187  unsigned long *pdwEnabledFeatures);
189  unsigned long ulOutputStreamIndex,
190  unsigned long *pdwRequestedFeatures);
193 
194 #endif /* DMO_INTERFACE_H */
IMediaObject_vt::GetInputCurrentType
HRESULT STDCALL(* GetInputCurrentType)(IMediaObject *This, unsigned long dwInputStreamIndex, DMO_MEDIA_TYPE *pmt)
Definition: dmo_interfaces.h:67
REFERENCE_TIME
long long REFERENCE_TIME
Definition: guids.h:25
_DMO_OUTPUT_DATA_BUFFER::rtTimelength
REFERENCE_TIME rtTimelength
Definition: dmo_interfaces.h:30
IEnumDMO_vt::Next
HRESULT STDCALL(* Next)(IEnumDMO *This, unsigned long cItemsToFetch, CLSID *pCLSID, WCHAR **Names, unsigned long *pcItemsFetched)
Definition: dmo_interfaces.h:119
IMediaObject_vt::Flush
HRESULT STDCALL(* Flush)(IMediaObject *This)
Definition: dmo_interfaces.h:88
IMediaObject_vt::FreeStreamingResources
HRESULT STDCALL(* FreeStreamingResources)(IMediaObject *This)
Definition: dmo_interfaces.h:92
IMediaObjectInPlace_vt
struct IMediaObjectInPlace_vt IMediaObjectInPlace_vt
_IMediaBuffer
Definition: dmo_interfaces.h:22
IMediaObject_vt::Lock
HRESULT STDCALL(* Lock)(IMediaObject *This, long bLock)
Definition: dmo_interfaces.h:107
DMO_OUTPUT_DATA_BUFFER
struct _DMO_OUTPUT_DATA_BUFFER DMO_OUTPUT_DATA_BUFFER
IMediaBuffer_vt::SetLength
HRESULT STDCALL(* SetLength)(IMediaBuffer *This, unsigned long cbLength)
Definition: dmo_interfaces.h:14
_IDMOQualityControl
Definition: dmo_interfaces.h:169
_DMO_OUTPUT_DATA_BUFFER
Definition: dmo_interfaces.h:25
IMediaObject_vt::GetInputStreamInfo
HRESULT STDCALL(* GetInputStreamInfo)(IMediaObject *This, unsigned long dwInputStreamIndex, unsigned long *pdwFlags)
Definition: dmo_interfaces.h:45
_IDMOVideoOutputOptimizations
Definition: dmo_interfaces.h:192
IMediaObjectInPlace_vt::INHERIT_IUNKNOWN
INHERIT_IUNKNOWN()
_IEnumDMO::vt
IEnumDMO_vt * vt
Definition: dmo_interfaces.h:130
IMediaObjectInPlace_vt::Process
HRESULT STDCALL(* Process)(IMediaObjectInPlace *This, unsigned long ulSize, BYTE *pData, REFERENCE_TIME refTimeStart, unsigned long dwFlags)
Definition: dmo_interfaces.h:140
_DMO_OUTPUT_DATA_BUFFER::dwStatus
unsigned long dwStatus
Definition: dmo_interfaces.h:28
IMediaObjectInPlace_vt::GetLatency
HRESULT STDCALL(* GetLatency)(IMediaObjectInPlace *This, REFERENCE_TIME *pLatencyTime)
Definition: dmo_interfaces.h:147
_DMO_OUTPUT_DATA_BUFFER::rtTimestamp
REFERENCE_TIME rtTimestamp
Definition: dmo_interfaces.h:29
IEnumDMO_vt::Skip
HRESULT STDCALL(* Skip)(IEnumDMO *This, unsigned long cItemsToSkip)
Definition: dmo_interfaces.h:124
IMediaObject_vt::GetStreamCount
HRESULT STDCALL(* GetStreamCount)(IMediaObject *This, unsigned long *pcInputStreams, unsigned long *pcOutputStreams)
Definition: dmo_interfaces.h:42
_IDMOQualityControl::vt
IDMOQualityControl_vt * vt
Definition: dmo_interfaces.h:169
IMediaBuffer_vt
Definition: dmo_interfaces.h:10
IMediaObject_vt::SetOutputType
HRESULT STDCALL(* SetOutputType)(IMediaObject *This, unsigned long dwOutputStreamIndex, const DMO_MEDIA_TYPE *pmt, unsigned long dwFlags)
Definition: dmo_interfaces.h:63
IMediaObject_vt::GetOutputStreamInfo
HRESULT STDCALL(* GetOutputStreamInfo)(IMediaObject *This, unsigned long dwOutputStreamIndex, unsigned long *pdwFlags)
Definition: dmo_interfaces.h:48
IMediaObject_vt::GetInputSizeInfo
HRESULT STDCALL(* GetInputSizeInfo)(IMediaObject *This, unsigned long dwInputStreamIndex, unsigned long *pcbSize, unsigned long *pcbMaxLookahead, unsigned long *pcbAlignment)
Definition: dmo_interfaces.h:73
IMediaObject_vt
struct IMediaObject_vt IMediaObject_vt
IMediaBuffer_vt::GetBufferAndLength
HRESULT STDCALL(* GetBufferAndLength)(IMediaBuffer *This, char **ppBuffer, unsigned long *pcbLength)
Definition: dmo_interfaces.h:18
IMediaObject_vt::SetInputMaxLatency
HRESULT STDCALL(* SetInputMaxLatency)(IMediaObject *This, unsigned long dwInputStreamIndex, REFERENCE_TIME rtMaxLatency)
Definition: dmo_interfaces.h:85
IMediaBuffer_vt
struct IMediaBuffer_vt IMediaBuffer_vt
_IMediaObjectInPlace::vt
IMediaObjectInPlace_vt * vt
Definition: dmo_interfaces.h:151
IMediaBuffer_vt::INHERIT_IUNKNOWN
INHERIT_IUNKNOWN()
CLSID
GUID CLSID
Definition: guids.h:43
IDMOQualityControl_vt
struct IDMOQualityControl_vt IDMOQualityControl_vt
IEnumDMO_vt::Clone
HRESULT STDCALL(* Clone)(IEnumDMO *This, IEnumDMO **ppEnum)
Definition: dmo_interfaces.h:127
IMediaObject_vt::GetInputStatus
HRESULT STDCALL(* GetInputStatus)(IMediaObject *This, unsigned long dwInputStreamIndex, unsigned long *dwFlags)
Definition: dmo_interfaces.h:93
IEnumDMO_vt
struct IEnumDMO_vt IEnumDMO_vt
IEnumDMO_vt::Reset
HRESULT STDCALL(* Reset)(IEnumDMO *This)
Definition: dmo_interfaces.h:126
IMediaObjectInPlace_vt
Definition: dmo_interfaces.h:136
_IDMOVideoOutputOptimizations::vt
IDMOVideoOutputOptimizations_vt * vt
Definition: dmo_interfaces.h:192
IMediaObject_vt::INHERIT_IUNKNOWN
INHERIT_IUNKNOWN()
IMediaObject_vt::GetInputMaxLatency
HRESULT STDCALL(* GetInputMaxLatency)(IMediaObject *This, unsigned long dwInputStreamIndex, REFERENCE_TIME *prtMaxLatency)
Definition: dmo_interfaces.h:82
_IMediaObject
Definition: dmo_interfaces.h:109
dmo.h
IMediaObject_vt::AllocateStreamingResources
HRESULT STDCALL(* AllocateStreamingResources)(IMediaObject *This)
Definition: dmo_interfaces.h:91
IDMOVideoOutputOptimizations_vt::GetCurrentSampleRequirements
HRESULT STDCALL(* GetCurrentSampleRequirements)(IDMOVideoOutputOptimizations *This, unsigned long ulOutputStreamIndex, unsigned long *pdwRequestedFeatures)
Definition: dmo_interfaces.h:188
IEnumDMO_vt::INHERIT_IUNKNOWN
INHERIT_IUNKNOWN()
IMediaObject_vt::Discontinuity
HRESULT STDCALL(* Discontinuity)(IMediaObject *This, unsigned long dwInputStreamIndex)
Definition: dmo_interfaces.h:89
IMediaObject_vt::ProcessInput
HRESULT STDCALL(* ProcessInput)(IMediaObject *This, unsigned long dwInputStreamIndex, IMediaBuffer *pBuffer, unsigned long dwFlags, REFERENCE_TIME rtTimestamp, REFERENCE_TIME rtTimelength)
Definition: dmo_interfaces.h:96
IEnumDMO_vt
Definition: dmo_interfaces.h:115
IDMOQualityControl_vt
Definition: dmo_interfaces.h:158
_IMediaBuffer::vt
IMediaBuffer_vt * vt
Definition: dmo_interfaces.h:22
IMediaObject_vt::SetInputType
HRESULT STDCALL(* SetInputType)(IMediaObject *This, unsigned long dwInputStreamIndex, const DMO_MEDIA_TYPE *pmt, unsigned long dwFlags)
Definition: dmo_interfaces.h:59
IDMOVideoOutputOptimizations_vt::QueryOperationModePreferences
HRESULT STDCALL(* QueryOperationModePreferences)(IDMOVideoOutputOptimizations *This, unsigned long ulOutputStreamIndex, unsigned long *pdwRequestedCapabilities)
Definition: dmo_interfaces.h:179
IMediaObject_vt::GetInputType
HRESULT STDCALL(* GetInputType)(IMediaObject *This, unsigned long dwInputStreamIndex, unsigned long dwTypeIndex, DMO_MEDIA_TYPE *pmt)
Definition: dmo_interfaces.h:51
IMediaBuffer_vt::GetMaxLength
HRESULT STDCALL(* GetMaxLength)(IMediaBuffer *This, unsigned long *pcbMaxLength)
Definition: dmo_interfaces.h:16
_IEnumDMO
Definition: dmo_interfaces.h:130
IMediaObject_vt
Definition: dmo_interfaces.h:38
IDMOQualityControl_vt::INHERIT_IUNKNOWN
INHERIT_IUNKNOWN()
IDMOVideoOutputOptimizations_vt::INHERIT_IUNKNOWN
INHERIT_IUNKNOWN()
_IMediaObjectInPlace
Definition: dmo_interfaces.h:151
IDMOQualityControl_vt::GetStatus
HRESULT STDCALL(* GetStatus)(IDMOQualityControl *This, unsigned long *pdwFlags)
Definition: dmo_interfaces.h:166
DMO_MEDIA_TYPE
AM_MEDIA_TYPE DMO_MEDIA_TYPE
Definition: dmo.h:15
IMediaObject_vt::GetOutputType
HRESULT STDCALL(* GetOutputType)(IMediaObject *This, unsigned long dwOutputStreamIndex, unsigned long dwTypeIndex, DMO_MEDIA_TYPE *pmt)
Definition: dmo_interfaces.h:55
_DMO_OUTPUT_DATA_BUFFER::pBuffer
IMediaBuffer * pBuffer
Definition: dmo_interfaces.h:27
IMediaObjectInPlace_vt::Clone
HRESULT STDCALL(* Clone)(IMediaObjectInPlace *This, IMediaObjectInPlace **ppMediaObject)
Definition: dmo_interfaces.h:145
IMediaObject_vt::ProcessOutput
HRESULT STDCALL(* ProcessOutput)(IMediaObject *This, unsigned long dwFlags, unsigned long cOutputBufferCount, DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, unsigned long *pdwStatus)
Definition: dmo_interfaces.h:102
IDMOVideoOutputOptimizations_vt::GetCurrentOperationMode
HRESULT STDCALL(* GetCurrentOperationMode)(IDMOVideoOutputOptimizations *This, unsigned long ulOutputStreamIndex, unsigned long *pdwEnabledFeatures)
Definition: dmo_interfaces.h:185
IDMOVideoOutputOptimizations_vt
struct IDMOVideoOutputOptimizations_vt IDMOVideoOutputOptimizations_vt
IDMOQualityControl_vt::SetStatus
HRESULT STDCALL(* SetStatus)(IDMOQualityControl *This, unsigned long dwFlags)
Definition: dmo_interfaces.h:164
IMediaObject_vt::GetOutputSizeInfo
HRESULT STDCALL(* GetOutputSizeInfo)(IMediaObject *This, unsigned long dwOutputStreamIndex, unsigned long *pcbSize, unsigned long *pcbAlignment)
Definition: dmo_interfaces.h:78
IDMOVideoOutputOptimizations_vt
Definition: dmo_interfaces.h:175
_IMediaObject::vt
IMediaObject_vt * vt
Definition: dmo_interfaces.h:109
IDMOQualityControl_vt::SetNow
HRESULT STDCALL(* SetNow)(IDMOQualityControl *This, REFERENCE_TIME rtNow)
Definition: dmo_interfaces.h:162
IMediaObject_vt::GetOutputCurrentType
HRESULT STDCALL(* GetOutputCurrentType)(IMediaObject *This, unsigned long dwOutputStreamIndex, DMO_MEDIA_TYPE *pmt)
Definition: dmo_interfaces.h:70
IDMOVideoOutputOptimizations_vt::SetOperationMode
HRESULT STDCALL(* SetOperationMode)(IDMOVideoOutputOptimizations *This, unsigned long ulOutputStreamIndex, unsigned long dwEnabledFeatures)
Definition: dmo_interfaces.h:182