+++ /dev/null
-/*
- * 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("propetry Video")] HRESULT Video([in] OUTPUT_STATE newVal);
- [propget, id(3), helpstring("property Audio")] HRESULT Audio([out, retval] OUTPUT_STATE *pVal);
- [propput, id(3), helpstring("propetry 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);")