Mercurial > mplayer.hg
view loader/dmo/dmo_interfaces.h @ 13000:076e87baf7c0
--Patch by Stefan '1stein' Schuermans <1stein@schuermans.info>:
on the CCC-Camp ICMP2 (www.icmp2.de) this weekend, some friends and
I played around with our Blinkenlights replicas and found a little
bug in your MPlayer Blinkenlights outpur driver "vo_bl". The
Blinkenlights UDP-Protocol contains the maximum grayscale value
"maxval" (e.g. 255 for 8 bit) instead of the number of grayscales
(e.g. 256 for 8 bit). Because some programs are very strict
concerning this value, we had to patch mpalyer to get it to work.
Today, I've added an output scheme "hdl" for the Haus des Lehrers in
Berlin, on which an installation with grayscales was done last
winter. Additionally, I've also added an output scheme named
"grayscale" that adapts the size of the UDP packets to the size
used with "-vf scale -zoom" that we will need for a project (a room
with over 15000 pixels at the walls and floor) next year.
author | rik |
---|---|
date | Wed, 11 Aug 2004 13:39:32 +0000 |
parents | 8e00b6a9e40b |
children | 2c8cdb9123b8 |
line wrap: on
line source
#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 */