| /* |
| * Copyright 2004 Christian Costa |
| * |
| * 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 "mmstream.idl"; |
| import "strmif.idl"; |
| |
| cpp_quote("#include <ddraw.h>") |
| cpp_quote("#include <mmsystem.h>") |
| cpp_quote("#include <mmstream.h>") |
| cpp_quote("#include <ddstream.h>") |
| cpp_quote("#include <austream.h>") |
| |
| cpp_quote("#if 0") |
| interface IDirectDraw; |
| interface IDirectDrawSurface; |
| cpp_quote("#endif") |
| |
| interface IAMMultiMediaStream; |
| interface IAMMediaStream; |
| interface IMediaStreamFilter; |
| interface IAMMediaTypeStream; |
| interface IAMMediaTypeSample; |
| |
| enum { |
| AMMSF_NOGRAPHTHREAD = 0x00000001 |
| }; |
| |
| enum { |
| AMMSF_ADDDEFAULTRENDERER = 0x00000001, |
| AMMSF_CREATEPEER = 0x00000002, |
| AMMSF_STOPIFNOSAMPLES = 0x00000004, |
| AMMSF_NOSTALL = 0x00000008 |
| }; |
| |
| enum { |
| AMMSF_RENDERTYPEMASK = 0x00000003, |
| AMMSF_RENDERTOEXISTING = 0x00000000, |
| AMMSF_RENDERALLSTREAMS = 0x00000001, |
| AMMSF_NORENDER = 0x00000002, |
| AMMSF_NOCLOCK = 0x00000004, |
| AMMSF_RUN = 0x00000008 |
| }; |
| |
| |
| typedef [v1_enum] enum { |
| Disabled = 0, |
| ReadData = 1, |
| RenderData = 2 |
| } OUTPUT_STATE; |
| |
| [ |
| object, |
| uuid(7DB01C96-C0C3-11d0-8FF1-00C04FD9189D), |
| dual, |
| helpstring("IDirectShowStream Interface"), |
| pointer_default(unique) |
| ] |
| interface IDirectShowStream : IDispatch |
| { |
| [propget, id(1), helpstring("property FileName")] HRESULT FileName([out, retval] BSTR *pVal); |
| [propput, id(1), helpstring("property FileName")] HRESULT FileName([in] BSTR newVal); |
| [propget, id(2), helpstring("property Video")] HRESULT Video([out, retval] OUTPUT_STATE *pVal); |
| [propput, id(2), helpstring("property Video")] HRESULT Video([in] OUTPUT_STATE newVal); |
| [propget, id(3), helpstring("property Audio")] HRESULT Audio([out, retval] OUTPUT_STATE *pVal); |
| [propput, id(3), helpstring("property Audio")] HRESULT Audio([in] OUTPUT_STATE newVal); |
| } |
| |
| [ |
| object, |
| uuid(BEBE595C-9A6F-11d0-8FDE-00C04FD9189D), |
| pointer_default(unique) |
| ] |
| interface IAMMultiMediaStream : IMultiMediaStream |
| { |
| HRESULT Initialize( |
| [in] STREAM_TYPE StreamType, |
| [in] DWORD dwFlags, |
| [in] IGraphBuilder *pFilterGraph); |
| |
| HRESULT GetFilterGraph( |
| [out] IGraphBuilder **ppGraphBuilder); |
| |
| HRESULT GetFilter( |
| [out] IMediaStreamFilter **ppFilter); |
| |
| HRESULT AddMediaStream( |
| [in] IUnknown *pStreamObject, |
| [in] const MSPID *PurposeId, |
| [in] DWORD dwFlags, |
| [out] IMediaStream **ppNewStream); |
| |
| HRESULT OpenFile( |
| [in] LPCWSTR pszFileName, |
| [in] DWORD dwFlags); |
| |
| HRESULT OpenMoniker( |
| [in] IBindCtx *pCtx, |
| [in] IMoniker *pMoniker, |
| [in] DWORD dwFlags); |
| |
| HRESULT Render( |
| [in] DWORD dwFlags); |
| } |
| |
| |
| [ |
| object, |
| uuid(BEBE595D-9A6F-11d0-8FDE-00C04FD9189D), |
| pointer_default(unique) |
| ] |
| interface IAMMediaStream : IMediaStream |
| { |
| HRESULT Initialize( |
| [in] IUnknown *pSourceObject, |
| [in] DWORD dwFlags, |
| [in] REFMSPID PurposeId, |
| [in] const STREAM_TYPE StreamType); |
| |
| HRESULT SetState( |
| [in] FILTER_STATE State); |
| |
| HRESULT JoinAMMultiMediaStream( |
| [in] IAMMultiMediaStream *pAMMultiMediaStream); |
| |
| HRESULT JoinFilter( |
| [in] IMediaStreamFilter *pMediaStreamFilter); |
| |
| HRESULT JoinFilterGraph( |
| [in] IFilterGraph *pFilterGraph); |
| } |
| |
| |
| [ |
| object, |
| local, |
| uuid(BEBE595E-9A6F-11d0-8FDE-00C04FD9189D), |
| pointer_default(unique) |
| ] |
| interface IMediaStreamFilter : IBaseFilter |
| { |
| HRESULT AddMediaStream( |
| [in] IAMMediaStream *pAMMediaStream); |
| |
| HRESULT GetMediaStream( |
| [in] REFMSPID idPurpose, |
| [out] IMediaStream **ppMediaStream); |
| |
| HRESULT EnumMediaStreams( |
| [in] long Index, |
| [out] IMediaStream **ppMediaStream); |
| |
| HRESULT SupportSeeking( |
| [in] BOOL bRenderer); |
| |
| HRESULT ReferenceTimeToStreamTime( |
| [in] [out] REFERENCE_TIME *pTime); |
| |
| HRESULT GetCurrentStreamTime( |
| [out] REFERENCE_TIME *pCurrentStreamTime); |
| |
| HRESULT WaitUntil( |
| [in] REFERENCE_TIME WaitStreamTime); |
| |
| HRESULT Flush( |
| [in] BOOL bCancelEOS); |
| |
| HRESULT EndOfStream(); |
| } |
| |
| |
| [ |
| object, |
| local, |
| uuid(AB6B4AFC-F6E4-11d0-900D-00C04FD9189D), |
| pointer_default(unique) |
| ] |
| interface IDirectDrawMediaSampleAllocator : IUnknown |
| { |
| HRESULT GetDirectDraw(IDirectDraw **ppDirectDraw); |
| } |
| |
| |
| [ |
| object, |
| local, |
| uuid(AB6B4AFE-F6E4-11d0-900D-00C04FD9189D), |
| pointer_default(unique) |
| ] |
| interface IDirectDrawMediaSample : IUnknown |
| { |
| HRESULT GetSurfaceAndReleaseLock( |
| [out] IDirectDrawSurface **ppDirectDrawSurface, |
| [out] RECT * pRect); |
| |
| HRESULT LockMediaSamplePointer(void); |
| } |
| |
| |
| [ |
| object, |
| local, |
| uuid(AB6B4AFA-F6E4-11d0-900D-00C04FD9189D), |
| pointer_default(unique) |
| ] |
| |
| interface IAMMediaTypeStream : IMediaStream |
| { |
| HRESULT GetFormat( |
| [out] AM_MEDIA_TYPE * pMediaType, |
| [in] DWORD dwFlags); |
| |
| HRESULT SetFormat( |
| [in] AM_MEDIA_TYPE * pMediaType, |
| [in] DWORD dwFlags); |
| |
| HRESULT CreateSample( |
| [in] long lSampleSize, |
| [in] BYTE * pbBuffer, |
| [in] DWORD dwFlags, |
| [in] IUnknown *pUnkOuter, |
| [out] IAMMediaTypeSample ** ppAMMediaTypeSample); |
| |
| HRESULT GetStreamAllocatorRequirements( |
| [out] ALLOCATOR_PROPERTIES *pProps); |
| |
| HRESULT SetStreamAllocatorRequirements( |
| [in] ALLOCATOR_PROPERTIES *pProps); |
| } |
| |
| |
| [ |
| object, |
| local, |
| uuid(AB6B4AFB-F6E4-11d0-900D-00C04FD9189D), |
| pointer_default(unique) |
| ] |
| interface IAMMediaTypeSample : IStreamSample |
| { |
| HRESULT SetPointer( |
| [in] BYTE *pBuffer, |
| [in] long lSize); |
| |
| HRESULT GetPointer( |
| [out] BYTE ** ppBuffer); |
| |
| long GetSize(void); |
| |
| HRESULT GetTime( |
| [out] REFERENCE_TIME * pTimeStart, |
| [out] REFERENCE_TIME * pTimeEnd); |
| |
| HRESULT SetTime( |
| [in] REFERENCE_TIME * pTimeStart, |
| [in] REFERENCE_TIME * pTimeEnd); |
| |
| HRESULT IsSyncPoint(void); |
| |
| HRESULT SetSyncPoint( |
| BOOL bIsSyncPoint); |
| |
| HRESULT IsPreroll(void); |
| |
| HRESULT SetPreroll( |
| BOOL bIsPreroll); |
| |
| long GetActualDataLength(void); |
| |
| HRESULT SetActualDataLength(long Len); |
| |
| HRESULT GetMediaType( |
| AM_MEDIA_TYPE **ppMediaType); |
| |
| HRESULT SetMediaType( |
| AM_MEDIA_TYPE *pMediaType); |
| |
| HRESULT IsDiscontinuity(void); |
| |
| HRESULT SetDiscontinuity( |
| BOOL bDiscontinuity); |
| |
| HRESULT GetMediaTime( |
| [out] LONGLONG * pTimeStart, |
| [out] LONGLONG * pTimeEnd); |
| |
| HRESULT SetMediaTime( |
| [in] LONGLONG * pTimeStart, |
| [in] LONGLONG * pTimeEnd); |
| } |
| |
| [ |
| uuid(49C47CE5-9BA4-11d0-8212-00C04FC32C45) |
| ] |
| coclass AMMultiMediaStream |
| { |
| [default] dispinterface IDirectShowStream; |
| } |
| |
| cpp_quote("DEFINE_GUID(CLSID_AMDirectDrawStream, 0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") |
| cpp_quote("DEFINE_GUID(CLSID_AMAudioStream, 0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") |
| cpp_quote("DEFINE_GUID(CLSID_AMAudioData, 0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") |
| cpp_quote("DEFINE_GUID(CLSID_AMMediaTypeStream, 0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0x0d, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);") |
| cpp_quote("DEFINE_GUID(CLSID_MediaStreamFilter, 0x49c47ce0, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") |