Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243/* * Copyright (C) 2002 Alexandre Julliard * Copyright (C) 2004 Vincent Béron * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */import "unknwn.idl";import "objidl.idl";import "strmif.idl";interface IDMOQualityControl;interface IDMOVideoOutputOptimizations;typedef struct _DMOMediaType{ GUID majortype; GUID subtype; BOOL bFixedSizeSamples; BOOL bTemporalCompression; ULONG lSampleSize; GUID formattype; IUnknown *pUnk; ULONG cbFormat; BYTE *pbFormat;} DMO_MEDIA_TYPE;/***************************************************************************** * IEnumDMO interface */[ object, uuid(2C3CD98A-2BFA-4A53-9C27-5249BA64BA0F), pointer_default(unique)]interface IEnumDMO : IUnknown{ [local] HRESULT Next( [in] DWORD cItemsToFetch, [out] CLSID *pCLSID, [out] WCHAR **Names, [out] DWORD *pcItemsFetched ); HRESULT Skip( [in] DWORD cItemsToSkip ); HRESULT Reset(); HRESULT Clone( [out] IEnumDMO **ppEnum );}/***************************************************************************** * IMediaBuffer interface */[ object, uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837), local]interface IMediaBuffer : IUnknown{ HRESULT SetLength( DWORD cbLength ); HRESULT GetMaxLength( [out] DWORD *pcbMaxLength ); HRESULT GetBufferAndLength( [out] BYTE **ppBuffer, [out] DWORD *pcbLength );}typedef struct _DMO_OUTPUT_DATA_BUFFER { IMediaBuffer *pBuffer; DWORD dwStatus; REFERENCE_TIME rtTimestamp; REFERENCE_TIME rtTimelength;} DMO_OUTPUT_DATA_BUFFER, *PDMO_OUTPUT_DATA_BUFFER;enum _DMO_INPLACE_PROCESS_FLAGS { DMO_INPLACE_NORMAL = 0x00000000, DMO_INPLACE_ZERO = 0x00000001};/***************************************************************************** * IMediaObject interface */[ object, uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4), local]interface IMediaObject : IUnknown{ HRESULT GetStreamCount( [out] DWORD *pcInputStreams, [out] DWORD *pcOutputStreams ); HRESULT GetInputStreamInfo( DWORD dwInputStreamIndex, [out] DWORD *pdwFlags ); HRESULT GetOutputStreamInfo( DWORD dwOutputStreamIndex, [out] DWORD *pdwFlags ); HRESULT GetInputType( DWORD dwInputStreamIndex, DWORD dwTypeIndex, [out] DMO_MEDIA_TYPE *pmt ); HRESULT GetOutputType( DWORD dwOutputStreamIndex, DWORD dwTypeIndex, [out] DMO_MEDIA_TYPE *pmt ); HRESULT SetInputType( DWORD dwInputStreamIndex, [in] const DMO_MEDIA_TYPE *pmt, DWORD dwFlags ); HRESULT SetOutputType( DWORD dwOutputStreamIndex, [in] const DMO_MEDIA_TYPE *pmt, DWORD dwFlags ); HRESULT GetInputCurrentType( DWORD dwInputStreamIndex, [out] DMO_MEDIA_TYPE *pmt ); HRESULT GetOutputCurrentType( DWORD dwOutputStreamIndex, [out] DMO_MEDIA_TYPE *pmt ); HRESULT GetInputSizeInfo( DWORD dwInputStreamIndex, [out] DWORD *pcbSize, [out] DWORD *pcbMaxLookahead, [out] DWORD *pcbAlignment ); HRESULT GetOutputSizeInfo( DWORD dwOutputStreamIndex, [out] DWORD *pcbSize, [out] DWORD *pcbAlignment ); HRESULT GetInputMaxLatency( DWORD dwInputStreamIndex, [out] REFERENCE_TIME *prtMaxLatency ); HRESULT SetInputMaxLatency( DWORD dwInputStreamIndex, REFERENCE_TIME rtMaxLatency ); HRESULT Flush(); HRESULT Discontinuity(DWORD dwInputStreamIndex); HRESULT AllocateStreamingResources(); HRESULT FreeStreamingResources(); HRESULT GetInputStatus( DWORD dwInputStreamIndex, [out] DWORD *dwFlags ); HRESULT ProcessInput( DWORD dwInputStreamIndex, IMediaBuffer *pBuffer, DWORD dwFlags, REFERENCE_TIME rtTimestamp, REFERENCE_TIME rtTimelength ); HRESULT ProcessOutput( DWORD dwFlags, DWORD cOutputBufferCount, [in,out] DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, [out] DWORD *pdwStatus ); HRESULT Lock(LONG bLock);};/***************************************************************************** * IMediaObjectInPlace interface */[ object, uuid(651b9ad0-0fc7-4aa9-9538-d89931010741), local]interface IMediaObjectInPlace : IUnknown { HRESULT Process( [in] ULONG ulSize, [in,out] BYTE* pData, [in] REFERENCE_TIME refTimeStart, [in] DWORD dwFlags ); HRESULT Clone( [out] IMediaObjectInPlace **ppMediaObject ); HRESULT GetLatency( [out] REFERENCE_TIME *pLatencyTime );}