/* * mmstream.h Multimedia streaming interfaces * * ========================================================================= * * Open Watcom Project * * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved. * * This file is automatically generated. Do not edit directly. * * ========================================================================= */ #include #include #ifndef COM_NO_WINDOWS_H #include #include #endif #ifndef __mmstream_h__ #define __mmstream_h__ #ifndef _ENABLE_AUTODEPEND #pragma read_only_file; #endif #ifdef __cplusplus extern "C" { #endif /* Forward declarations */ typedef interface IMediaStream IMediaStream; typedef interface IStreamSample IStreamSample; /* Stream time data type */ typedef LONGLONG STREAM_TIME; /* Media stream identifier data type */ typedef GUID MSPID; typedef REFGUID REFMSPID; /* Macros to manipulate multimedia streaming error codes */ #define MS_ERROR_CODE( x ) MAKE_HRESULT( 1, FACILITY_ITF, (x) + 0x0400 ) #define MS_SUCCESS_CODE( x ) MAKE_HRESULT( 0, FACILITY_ITF, x ) /* Multimedia streaming success codes */ #define MS_S_PENDING MS_SUCCESS_CODE( 1 ) #define MS_S_NOUPDATE MS_SUCCESS_CODE( 2 ) #define MS_S_ENDOFSTREAM MS_SUCCESS_CODE( 3 ) /* Multimedia streaming error codes */ #define MS_E_SAMPLEALLOC MS_ERROR_CODE( 1 ) #define MS_E_PURPOSEID MS_ERROR_CODE( 2 ) #define MS_E_NOSTREAM MS_ERROR_CODE( 3 ) #define MS_E_NOSEEKING MS_ERROR_CODE( 4 ) #define MS_E_INCOMPATIBLE MS_ERROR_CODE( 5 ) #define MS_E_BUSY MS_ERROR_CODE( 6 ) #define MS_E_NOTINIT MS_ERROR_CODE( 7 ) #define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE( 8 ) #define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE( 9 ) #define MS_E_NOTRUNNING MS_ERROR_CODE( 10 ) /* Stream types */ typedef enum { STREAMTYPE_READ = 0, STREAMTYPE_WRITE = 1, STREAMTYPE_TRANSFORM = 2 } STREAM_TYPE; /* Stream states */ typedef enum { STREAMSTATE_STOP = 0, STREAMSTATE_RUN = 1 } STREAM_STATE; /* Completion status flags */ typedef enum { COMPSTAT_NOUPDATEOK = 0x00000001, COMPSTAT_WAIT = 0x00000002, COMPSTAT_ABORT = 0x00000004 } COMPLETION_STATUS_FLAGS; /* GetInformation() flags */ enum { MMSSF_HASCLOCK = 0x00000001, MMSSF_SUPPORTSEEK = 0x00000002, MMSSF_ASYNCHRONOUS = 0x00000004 }; /* Update() flags */ enum { SSUPDATE_ASYNC = 0x00000001, SSUPDATE_CONTINUOUS = 0x00000002 }; /* Asynchronous procedure call function */ #if (_WIN32_WINNT < 0x0400) typedef void (__stdcall *PAPCFUNC)( DWORD_PTR ); #endif /* GUIDs */ EXTERN_C const IID IID_IMultiMediaStream; EXTERN_C const IID IID_IMediaStream; EXTERN_C const IID IID_IStreamSample; /* IMultiMediaStream interface */ #undef INTERFACE #define INTERFACE IMultiMediaStream DECLARE_INTERFACE_( IMultiMediaStream, IUnknown ) { /* IUnknown methods */ STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE; STDMETHOD_( ULONG, AddRef )( THIS ) PURE; STDMETHOD_( ULONG, Release )( THIS ) PURE; /* IMultiMediaStream interface */ STDMETHOD( GetInformation )( THIS_ DWORD *, STREAM_TYPE * ) PURE; STDMETHOD( GetMediaStream )( THIS_ REFMSPID, IMediaStream ** ) PURE; STDMETHOD( EnumMediaStream )( THIS_ long, IMediaStream ** ) PURE; STDMETHOD( GetState )( THIS_ STREAM_STATE * ) PURE; STDMETHOD( SetState )( THIS_ STREAM_STATE ) PURE; STDMETHOD( GetTime )( THIS_ STREAM_TIME * ) PURE; STDMETHOD( GetDuration )( THIS_ STREAM_TIME * ) PURE; STDMETHOD( Seek )( THIS_ STREAM_TIME ) PURE; STDMETHOD( GetEndOfStreamEventHandle )( THIS_ HANDLE * ) PURE; }; /* IMediaStream interface */ #undef INTERFACE #define INTERFACE IMediaStream DECLARE_INTERFACE_( IMediaStream, IUnknown ) { /* IUnknown methods */ STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE; STDMETHOD_( ULONG, AddRef )( THIS ) PURE; STDMETHOD_( ULONG, Release )( THIS ) PURE; /* IMediaStream methods */ STDMETHOD( GetMultiMediaStream )( THIS_ IMultiMediaStream ** ) PURE; STDMETHOD( GetInformation )( THIS_ MSPID *, STREAM_TYPE * ) PURE; STDMETHOD( SetSameFormat )( THIS_ IMediaStream *, DWORD ) PURE; STDMETHOD( AllocateSample )( THIS_ DWORD, IStreamSample ** ) PURE; STDMETHOD( CreateSharedSample )( THIS_ IStreamSample *, DWORD, IStreamSample ** ) PURE; STDMETHOD( SendEndOfStream )( THIS_ DWORD ) PURE; }; /* IStreamSample interface */ #undef INTERFACE #define INTERFACE IStreamSample DECLARE_INTERFACE_( IStreamSample, IUnknown ) { /* IUnknown methods */ STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE; STDMETHOD_( ULONG, AddRef )( THIS ) PURE; STDMETHOD_( ULONG, Release )( THIS ) PURE; /* IStreamSample methods */ STDMETHOD( GetMediaStream )( THIS_ IMediaStream ** ) PURE; STDMETHOD( GetSampleTimes )( THIS_ STREAM_TIME *, STREAM_TIME *, STREAM_TIME * ) PURE; STDMETHOD( SetSampleTimes )( THIS_ const STREAM_TIME *, const STREAM_TIME * ) PURE; STDMETHOD( Update )( THIS_ DWORD, HANDLE, PAPCFUNC, DWORD_PTR ) PURE; STDMETHOD( CompletionStatus )( DWORD, DWORD ) PURE; }; /* C object macros */ #if (!defined( __cplusplus ) || defined( CINTERFACE )) && defined( COBJMACROS ) #define IMultiMediaStream_QueryInterface( x, p1, p2 ) \ (x)->lpVtbl->QueryInterface( x, p1, p2 ) #define IMultiMediaStream_AddRef( x ) \ (x)->lpVtbl->AddRef( x ) #define IMultiMediaStream_Release( x ) \ (x)->lpVtbl->Release( x ) #define IMultiMediaStream_GetInformation( x, p1, p2 ) \ (x)->lpVtbl->GetInformation( x, p1, p2 ) #define IMultiMediaStream_GetMediaStream( x, p1, p2 ) \ (x)->lpVtbl->GetMediaStream( x, p1, p2 ) #define IMultiMediaStream_EnumMediaStream( x, p1, p2 ) \ (x)->lpVtbl->EnumMediaStream( x, p1, p2 ) #define IMultiMediaStream_GetState( x, p ) \ (x)->lpVtbl->GetState( x, p ) #define IMultiMediaStream_SetState( x, p ) \ (x)->lpVtbl->SetState( x, p ) #define IMultiMediaStream_GetTime( x, p ) \ (x)->lpVtbl->GetTime( x, p ) #define IMultiMediaStream_GetDuration( x, p ) \ (x)->lpVtbl->GetDuration( x, p ) #define IMultiMediaStream_Seek( x, p ) \ (x)->lpVtbl->Seek( x, p ) #define IMultiMediaStream_GetEndOfStreamEventHandle( x, p ) \ (x)->lpVtbl->GetEndOfStreamEventHandle( x, p ) #define IMediaStream_QueryInterface( x, p1, p2 ) \ (x)->lpVtbl->QueryInterface( x, p1, p2 ) #define IMediaStream_AddRef( x ) \ (x)->lpVtbl->AddRef( x ) #define IMediaStream_Release( x ) \ (x)->lpVtbl->Release( x ) #define IMediaStream_GetMultiMediaStream( x, p ) \ (x)->lpVtbl->GetMultiMediaStream( x, p ) #define IMediaStream_GetInformation( x, p1, p2 ) \ (x)->lpVtbl->GetInformation( x, p1, p2 ) #define IMediaStream_SetSameFormat( x, p1, p2 ) \ (x)->lpVtbl->SetSameFormat( x, p1, p2 ) #define IMediaStream_AllocateSample( x, p1, p2 ) \ (x)->lpVtbl->AllocateSample( x, p1, p2 ) #define IMediaStream_CreateSharedSample( x, p1, p2, p3 ) \ (x)->lpVtbl->CreateSharedSample( x, p1, p2, p3 ) #define IMediaStream_SendEndOfStream( x, p ) \ (x)->lpVtbl->SendEndOfStream( x, p ) #define IStreamSample_QueryInterface( x, p1, p2 ) \ (x)->lpVtbl->QueryInterface( x, p1, p2 ) #define IStreamSample_AddRef( x ) \ (x)->lpVtbl->AddRef( x ) #define IStreamSample_Release( x ) \ (x)->lpVtbl->Release( x ) #define IStreamSample_GetMediaStream( x, p ) \ (x)->lpVtbl->GetMediaStream( x, p ) #define IStreamSample_GetSampleTimes( x, p1, p2, p3 ) \ (x)->lpVtbl->GetSampleTimes( x, p1, p2, p3 ) #define IStreamSample_SetSampleTimes( x, p1, p2 ) \ (x)->lpVtbl->SetSampleTimes( x, p1, p2 ) \ #define IStreamSample_Update( x, p1, p2, p3, p4 ) \ (x)->lpVtbl->Update( x, p1, p2, p3, p4 ) #define IStreamSample_CompletionStatus( x, p1, p2 ) \ (x)->lpVtbl->CompletionStatus( x, p1, p2 ) #endif #ifdef __cplusplus } /* extern "C" */ #endif #endif /* __mmstream_h__ */