diff options
Diffstat (limited to 'src/libw32dll/dmo/dmo_interfaces.h')
-rw-r--r-- | src/libw32dll/dmo/dmo_interfaces.h | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/src/libw32dll/dmo/dmo_interfaces.h b/src/libw32dll/dmo/dmo_interfaces.h new file mode 100644 index 000000000..474dc06ce --- /dev/null +++ b/src/libw32dll/dmo/dmo_interfaces.h @@ -0,0 +1,194 @@ +#ifndef DMO_INTERFACE_H +#define DMO_INTERFACE_H + +#include "dmo.h" + +/* + * IMediaBuffer interface + */ +typedef struct _IMediaBuffer IMediaBuffer; +typedef struct IMediaBuffer_vt +{ + INHERIT_IUNKNOWN(); + + HRESULT STDCALL ( *SetLength )(IMediaBuffer* This, + unsigned long cbLength); + HRESULT STDCALL ( *GetMaxLength )(IMediaBuffer* This, + /* [out] */ unsigned long *pcbMaxLength); + HRESULT STDCALL ( *GetBufferAndLength )(IMediaBuffer* This, + /* [out] */ char** ppBuffer, + /* [out] */ unsigned long* pcbLength); +} IMediaBuffer_vt; +struct _IMediaBuffer { IMediaBuffer_vt* vt; }; + + +typedef struct _DMO_OUTPUT_DATA_BUFFER +{ + IMediaBuffer *pBuffer; + unsigned long dwStatus; + REFERENCE_TIME rtTimestamp; + REFERENCE_TIME rtTimelength; +} DMO_OUTPUT_DATA_BUFFER; + + +/* + * IMediaObject interface + */ +typedef struct _IMediaObject IMediaObject; +typedef struct IMediaObject_vt +{ + INHERIT_IUNKNOWN(); + + HRESULT STDCALL ( *GetStreamCount )(IMediaObject * This, + /* [out] */ unsigned long *pcInputStreams, + /* [out] */ unsigned long *pcOutputStreams); + HRESULT STDCALL ( *GetInputStreamInfo )(IMediaObject * This, + unsigned long dwInputStreamIndex, + /* [out] */ unsigned long *pdwFlags); + HRESULT STDCALL ( *GetOutputStreamInfo )(IMediaObject * This, + unsigned long dwOutputStreamIndex, + /* [out] */ unsigned long *pdwFlags); + HRESULT STDCALL ( *GetInputType )(IMediaObject * This, + unsigned long dwInputStreamIndex, + unsigned long dwTypeIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + HRESULT STDCALL ( *GetOutputType )(IMediaObject * This, + unsigned long dwOutputStreamIndex, + unsigned long dwTypeIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + HRESULT STDCALL ( *SetInputType )(IMediaObject * This, + unsigned long dwInputStreamIndex, + /* [in] */ const DMO_MEDIA_TYPE *pmt, + unsigned long dwFlags); + HRESULT STDCALL ( *SetOutputType )(IMediaObject * This, + unsigned long dwOutputStreamIndex, + /* [in] */ const DMO_MEDIA_TYPE *pmt, + unsigned long dwFlags); + HRESULT STDCALL ( *GetInputCurrentType )(IMediaObject * This, + unsigned long dwInputStreamIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + HRESULT STDCALL ( *GetOutputCurrentType )(IMediaObject * This, + unsigned long dwOutputStreamIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + HRESULT STDCALL ( *GetInputSizeInfo )(IMediaObject * This, + unsigned long dwInputStreamIndex, + /* [out] */ unsigned long *pcbSize, + /* [out] */ unsigned long *pcbMaxLookahead, + /* [out] */ unsigned long *pcbAlignment); + HRESULT STDCALL ( *GetOutputSizeInfo )(IMediaObject * This, + unsigned long dwOutputStreamIndex, + /* [out] */ unsigned long *pcbSize, + /* [out] */ unsigned long *pcbAlignment); + HRESULT STDCALL ( *GetInputMaxLatency )(IMediaObject * This, + unsigned long dwInputStreamIndex, + /* [out] */ REFERENCE_TIME *prtMaxLatency); + HRESULT STDCALL ( *SetInputMaxLatency )(IMediaObject * This, + unsigned long dwInputStreamIndex, + REFERENCE_TIME rtMaxLatency); + HRESULT STDCALL ( *Flush )(IMediaObject * This); + HRESULT STDCALL ( *Discontinuity )(IMediaObject * This, + unsigned long dwInputStreamIndex); + HRESULT STDCALL ( *AllocateStreamingResources )(IMediaObject * This); + HRESULT STDCALL ( *FreeStreamingResources )(IMediaObject * This); + HRESULT STDCALL ( *GetInputStatus )(IMediaObject * This, + unsigned long dwInputStreamIndex, + /* [out] */ unsigned long *dwFlags); + HRESULT STDCALL ( *ProcessInput )(IMediaObject * This, + unsigned long dwInputStreamIndex, + IMediaBuffer *pBuffer, + unsigned long dwFlags, + REFERENCE_TIME rtTimestamp, + REFERENCE_TIME rtTimelength); + HRESULT STDCALL ( *ProcessOutput )(IMediaObject * This, + unsigned long dwFlags, + unsigned long cOutputBufferCount, + /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, + /* [out] */ unsigned long *pdwStatus); + HRESULT STDCALL ( *Lock )(IMediaObject * This, long bLock); +} IMediaObject_vt; +struct _IMediaObject { IMediaObject_vt* vt; }; + +/* + * IEnumDMO interface + */ +typedef struct _IEnumDMO IEnumDMO; +typedef struct IEnumDMO_vt +{ + INHERIT_IUNKNOWN(); + + HRESULT STDCALL ( *Next )(IEnumDMO * This, + unsigned long cItemsToFetch, + /* [length_is][size_is][out] */ CLSID *pCLSID, + /* [string][length_is][size_is][out] */ WCHAR **Names, + /* [out] */ unsigned long *pcItemsFetched); + HRESULT STDCALL ( *Skip )(IEnumDMO * This, + unsigned long cItemsToSkip); + HRESULT STDCALL ( *Reset )(IEnumDMO * This); + HRESULT STDCALL ( *Clone )(IEnumDMO * This, + /* [out] */ IEnumDMO **ppEnum); +} IEnumDMO_vt; +struct _IEnumDMO { IEnumDMO_vt* vt; }; + +/* + * IMediaObjectInPlace interface + */ +typedef struct _IMediaObjectInPlace IMediaObjectInPlace; +typedef struct IMediaObjectInPlace_vt +{ + INHERIT_IUNKNOWN(); + + HRESULT STDCALL ( *Process )(IMediaObjectInPlace * This, + /* [in] */ unsigned long ulSize, + /* [size_is][out][in] */ BYTE *pData, + /* [in] */ REFERENCE_TIME refTimeStart, + /* [in] */ unsigned long dwFlags); + HRESULT STDCALL ( *Clone )(IMediaObjectInPlace * This, + /* [out] */ IMediaObjectInPlace **ppMediaObject); + HRESULT STDCALL ( *GetLatency )(IMediaObjectInPlace * This, + /* [out] */ REFERENCE_TIME *pLatencyTime); + +} IMediaObjectInPlace_vt; +struct _IMediaObjectInPlace { IMediaObjectInPlace_vt* vt; }; + + +/* + * IDMOQualityControl interface + */ +typedef struct _IDMOQualityControl IDMOQualityControl; +typedef struct IDMOQualityControl_vt +{ + INHERIT_IUNKNOWN(); + + HRESULT STDCALL ( *SetNow )(IDMOQualityControl * This, + /* [in] */ REFERENCE_TIME rtNow); + HRESULT STDCALL ( *SetStatus )(IDMOQualityControl * This, + /* [in] */ unsigned long dwFlags); + HRESULT STDCALL ( *GetStatus )(IDMOQualityControl * This, + /* [out] */ unsigned long *pdwFlags); +} IDMOQualityControl_vt; +struct _IDMOQualityControl { IDMOQualityControl_vt* vt; }; + +/* + * IDMOVideoOutputOptimizations interface + */ +typedef struct _IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations; +typedef struct IDMOVideoOutputOptimizations_vt +{ + INHERIT_IUNKNOWN(); + + HRESULT STDCALL ( *QueryOperationModePreferences )(IDMOVideoOutputOptimizations * This, + unsigned long ulOutputStreamIndex, + unsigned long *pdwRequestedCapabilities); + HRESULT STDCALL ( *SetOperationMode )(IDMOVideoOutputOptimizations * This, + unsigned long ulOutputStreamIndex, + unsigned long dwEnabledFeatures); + HRESULT STDCALL ( *GetCurrentOperationMode )(IDMOVideoOutputOptimizations * This, + unsigned long ulOutputStreamIndex, + unsigned long *pdwEnabledFeatures); + HRESULT STDCALL ( *GetCurrentSampleRequirements )(IDMOVideoOutputOptimizations * This, + unsigned long ulOutputStreamIndex, + unsigned long *pdwRequestedFeatures); +} IDMOVideoOutputOptimizations_vt; +struct _IDMOVideoOutputOptimizations { IDMOVideoOutputOptimizations_vt* vt; }; + +#endif /* DMO_INTERFACE_H */ |