

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings for sbe.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __sbe_h__
#define __sbe_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IStreamBufferInitialize_FWD_DEFINED__
#define __IStreamBufferInitialize_FWD_DEFINED__
typedef interface IStreamBufferInitialize IStreamBufferInitialize;
#endif 	/* __IStreamBufferInitialize_FWD_DEFINED__ */


#ifndef __IStreamBufferSink_FWD_DEFINED__
#define __IStreamBufferSink_FWD_DEFINED__
typedef interface IStreamBufferSink IStreamBufferSink;
#endif 	/* __IStreamBufferSink_FWD_DEFINED__ */


#ifndef __IStreamBufferSink2_FWD_DEFINED__
#define __IStreamBufferSink2_FWD_DEFINED__
typedef interface IStreamBufferSink2 IStreamBufferSink2;
#endif 	/* __IStreamBufferSink2_FWD_DEFINED__ */


#ifndef __IStreamBufferSink3_FWD_DEFINED__
#define __IStreamBufferSink3_FWD_DEFINED__
typedef interface IStreamBufferSink3 IStreamBufferSink3;
#endif 	/* __IStreamBufferSink3_FWD_DEFINED__ */


#ifndef __IStreamBufferSource_FWD_DEFINED__
#define __IStreamBufferSource_FWD_DEFINED__
typedef interface IStreamBufferSource IStreamBufferSource;
#endif 	/* __IStreamBufferSource_FWD_DEFINED__ */


#ifndef __IStreamBufferRecordControl_FWD_DEFINED__
#define __IStreamBufferRecordControl_FWD_DEFINED__
typedef interface IStreamBufferRecordControl IStreamBufferRecordControl;
#endif 	/* __IStreamBufferRecordControl_FWD_DEFINED__ */


#ifndef __IStreamBufferRecComp_FWD_DEFINED__
#define __IStreamBufferRecComp_FWD_DEFINED__
typedef interface IStreamBufferRecComp IStreamBufferRecComp;
#endif 	/* __IStreamBufferRecComp_FWD_DEFINED__ */


#ifndef __IStreamBufferRecordingAttribute_FWD_DEFINED__
#define __IStreamBufferRecordingAttribute_FWD_DEFINED__
typedef interface IStreamBufferRecordingAttribute IStreamBufferRecordingAttribute;
#endif 	/* __IStreamBufferRecordingAttribute_FWD_DEFINED__ */


#ifndef __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__
#define __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__
typedef interface IEnumStreamBufferRecordingAttrib IEnumStreamBufferRecordingAttrib;
#endif 	/* __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__ */


#ifndef __IStreamBufferConfigure_FWD_DEFINED__
#define __IStreamBufferConfigure_FWD_DEFINED__
typedef interface IStreamBufferConfigure IStreamBufferConfigure;
#endif 	/* __IStreamBufferConfigure_FWD_DEFINED__ */


#ifndef __IStreamBufferConfigure2_FWD_DEFINED__
#define __IStreamBufferConfigure2_FWD_DEFINED__
typedef interface IStreamBufferConfigure2 IStreamBufferConfigure2;
#endif 	/* __IStreamBufferConfigure2_FWD_DEFINED__ */


#ifndef __IStreamBufferConfigure3_FWD_DEFINED__
#define __IStreamBufferConfigure3_FWD_DEFINED__
typedef interface IStreamBufferConfigure3 IStreamBufferConfigure3;
#endif 	/* __IStreamBufferConfigure3_FWD_DEFINED__ */


#ifndef __IStreamBufferMediaSeeking_FWD_DEFINED__
#define __IStreamBufferMediaSeeking_FWD_DEFINED__
typedef interface IStreamBufferMediaSeeking IStreamBufferMediaSeeking;
#endif 	/* __IStreamBufferMediaSeeking_FWD_DEFINED__ */


#ifndef __IStreamBufferMediaSeeking2_FWD_DEFINED__
#define __IStreamBufferMediaSeeking2_FWD_DEFINED__
typedef interface IStreamBufferMediaSeeking2 IStreamBufferMediaSeeking2;
#endif 	/* __IStreamBufferMediaSeeking2_FWD_DEFINED__ */


#ifndef __IStreamBufferDataCounters_FWD_DEFINED__
#define __IStreamBufferDataCounters_FWD_DEFINED__
typedef interface IStreamBufferDataCounters IStreamBufferDataCounters;
#endif 	/* __IStreamBufferDataCounters_FWD_DEFINED__ */


#ifndef __ISBE2GlobalEvent_FWD_DEFINED__
#define __ISBE2GlobalEvent_FWD_DEFINED__
typedef interface ISBE2GlobalEvent ISBE2GlobalEvent;
#endif 	/* __ISBE2GlobalEvent_FWD_DEFINED__ */


#ifndef __ISBE2GlobalEvent2_FWD_DEFINED__
#define __ISBE2GlobalEvent2_FWD_DEFINED__
typedef interface ISBE2GlobalEvent2 ISBE2GlobalEvent2;
#endif 	/* __ISBE2GlobalEvent2_FWD_DEFINED__ */


#ifndef __ISBE2SpanningEvent_FWD_DEFINED__
#define __ISBE2SpanningEvent_FWD_DEFINED__
typedef interface ISBE2SpanningEvent ISBE2SpanningEvent;
#endif 	/* __ISBE2SpanningEvent_FWD_DEFINED__ */


#ifndef __ISBE2Crossbar_FWD_DEFINED__
#define __ISBE2Crossbar_FWD_DEFINED__
typedef interface ISBE2Crossbar ISBE2Crossbar;
#endif 	/* __ISBE2Crossbar_FWD_DEFINED__ */


#ifndef __ISBE2StreamMap_FWD_DEFINED__
#define __ISBE2StreamMap_FWD_DEFINED__
typedef interface ISBE2StreamMap ISBE2StreamMap;
#endif 	/* __ISBE2StreamMap_FWD_DEFINED__ */


#ifndef __ISBE2EnumStream_FWD_DEFINED__
#define __ISBE2EnumStream_FWD_DEFINED__
typedef interface ISBE2EnumStream ISBE2EnumStream;
#endif 	/* __ISBE2EnumStream_FWD_DEFINED__ */


#ifndef __ISBE2MediaTypeProfile_FWD_DEFINED__
#define __ISBE2MediaTypeProfile_FWD_DEFINED__
typedef interface ISBE2MediaTypeProfile ISBE2MediaTypeProfile;
#endif 	/* __ISBE2MediaTypeProfile_FWD_DEFINED__ */


#ifndef __ISBE2FileScan_FWD_DEFINED__
#define __ISBE2FileScan_FWD_DEFINED__
typedef interface ISBE2FileScan ISBE2FileScan;
#endif 	/* __ISBE2FileScan_FWD_DEFINED__ */


/* header files for imported files */
#include "unknwn.h"
#include "objidl.h"
#include "strmif.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_sbe_0000_0000 */
/* [local] */ 


















extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0000_v0_0_s_ifspec;

#ifndef __IStreamBufferInitialize_INTERFACE_DEFINED__
#define __IStreamBufferInitialize_INTERFACE_DEFINED__

/* interface IStreamBufferInitialize */
/* [local][unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferInitialize;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9ce50f2d-6ba7-40fb-a034-50b1a674ec78")
    IStreamBufferInitialize : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetHKEY( 
            /* [in] */ HKEY hkeyRoot) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetSIDs( 
            /* [in] */ DWORD cSIDs,
            /* [size_is][in] */ PSID *ppSID) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferInitializeVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IStreamBufferInitialize * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IStreamBufferInitialize * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IStreamBufferInitialize * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetHKEY )( 
            IStreamBufferInitialize * This,
            /* [in] */ HKEY hkeyRoot);
        
        HRESULT ( STDMETHODCALLTYPE *SetSIDs )( 
            IStreamBufferInitialize * This,
            /* [in] */ DWORD cSIDs,
            /* [size_is][in] */ PSID *ppSID);
        
        END_INTERFACE
    } IStreamBufferInitializeVtbl;

    interface IStreamBufferInitialize
    {
        CONST_VTBL struct IStreamBufferInitializeVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferInitialize_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferInitialize_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferInitialize_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferInitialize_SetHKEY(This,hkeyRoot)	\
    ( (This)->lpVtbl -> SetHKEY(This,hkeyRoot) ) 

#define IStreamBufferInitialize_SetSIDs(This,cSIDs,ppSID)	\
    ( (This)->lpVtbl -> SetSIDs(This,cSIDs,ppSID) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferInitialize_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_sbe_0000_0001 */
/* [local] */ 


enum __MIDL___MIDL_itf_sbe_0000_0001_0001
    {	RECORDING_TYPE_CONTENT	= 0,
	RECORDING_TYPE_REFERENCE	= ( RECORDING_TYPE_CONTENT + 1 ) 
    } ;


extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0001_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0001_v0_0_s_ifspec;

#ifndef __IStreamBufferSink_INTERFACE_DEFINED__
#define __IStreamBufferSink_INTERFACE_DEFINED__

/* interface IStreamBufferSink */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferSink;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("afd1f242-7efd-45ee-ba4e-407a25c9a77a")
    IStreamBufferSink : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE LockProfile( 
            /* [in] */ __RPC__in LPCWSTR pszStreamBufferFilename) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CreateRecorder( 
            /* [in] */ __RPC__in LPCWSTR pszFilename,
            /* [in] */ DWORD dwRecordType,
            /* [out] */ __RPC__deref_out_opt IUnknown **pRecordingIUnknown) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsProfileLocked( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferSinkVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferSink * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferSink * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferSink * This);
        
        HRESULT ( STDMETHODCALLTYPE *LockProfile )( 
            __RPC__in IStreamBufferSink * This,
            /* [in] */ __RPC__in LPCWSTR pszStreamBufferFilename);
        
        HRESULT ( STDMETHODCALLTYPE *CreateRecorder )( 
            __RPC__in IStreamBufferSink * This,
            /* [in] */ __RPC__in LPCWSTR pszFilename,
            /* [in] */ DWORD dwRecordType,
            /* [out] */ __RPC__deref_out_opt IUnknown **pRecordingIUnknown);
        
        HRESULT ( STDMETHODCALLTYPE *IsProfileLocked )( 
            __RPC__in IStreamBufferSink * This);
        
        END_INTERFACE
    } IStreamBufferSinkVtbl;

    interface IStreamBufferSink
    {
        CONST_VTBL struct IStreamBufferSinkVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferSink_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferSink_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferSink_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferSink_LockProfile(This,pszStreamBufferFilename)	\
    ( (This)->lpVtbl -> LockProfile(This,pszStreamBufferFilename) ) 

#define IStreamBufferSink_CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown)	\
    ( (This)->lpVtbl -> CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown) ) 

#define IStreamBufferSink_IsProfileLocked(This)	\
    ( (This)->lpVtbl -> IsProfileLocked(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferSink_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferSink2_INTERFACE_DEFINED__
#define __IStreamBufferSink2_INTERFACE_DEFINED__

/* interface IStreamBufferSink2 */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferSink2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("DB94A660-F4FB-4bfa-BCC6-FE159A4EEA93")
    IStreamBufferSink2 : public IStreamBufferSink
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE UnlockProfile( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferSink2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferSink2 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferSink2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferSink2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *LockProfile )( 
            __RPC__in IStreamBufferSink2 * This,
            /* [in] */ __RPC__in LPCWSTR pszStreamBufferFilename);
        
        HRESULT ( STDMETHODCALLTYPE *CreateRecorder )( 
            __RPC__in IStreamBufferSink2 * This,
            /* [in] */ __RPC__in LPCWSTR pszFilename,
            /* [in] */ DWORD dwRecordType,
            /* [out] */ __RPC__deref_out_opt IUnknown **pRecordingIUnknown);
        
        HRESULT ( STDMETHODCALLTYPE *IsProfileLocked )( 
            __RPC__in IStreamBufferSink2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *UnlockProfile )( 
            __RPC__in IStreamBufferSink2 * This);
        
        END_INTERFACE
    } IStreamBufferSink2Vtbl;

    interface IStreamBufferSink2
    {
        CONST_VTBL struct IStreamBufferSink2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferSink2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferSink2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferSink2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferSink2_LockProfile(This,pszStreamBufferFilename)	\
    ( (This)->lpVtbl -> LockProfile(This,pszStreamBufferFilename) ) 

#define IStreamBufferSink2_CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown)	\
    ( (This)->lpVtbl -> CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown) ) 

#define IStreamBufferSink2_IsProfileLocked(This)	\
    ( (This)->lpVtbl -> IsProfileLocked(This) ) 


#define IStreamBufferSink2_UnlockProfile(This)	\
    ( (This)->lpVtbl -> UnlockProfile(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferSink2_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferSink3_INTERFACE_DEFINED__
#define __IStreamBufferSink3_INTERFACE_DEFINED__

/* interface IStreamBufferSink3 */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferSink3;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("974723f2-887a-4452-9366-2cff3057bc8f")
    IStreamBufferSink3 : public IStreamBufferSink2
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetAvailableFilter( 
            /* [out][in] */ __RPC__inout REFERENCE_TIME *prtMin) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferSink3Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferSink3 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferSink3 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferSink3 * This);
        
        HRESULT ( STDMETHODCALLTYPE *LockProfile )( 
            __RPC__in IStreamBufferSink3 * This,
            /* [in] */ __RPC__in LPCWSTR pszStreamBufferFilename);
        
        HRESULT ( STDMETHODCALLTYPE *CreateRecorder )( 
            __RPC__in IStreamBufferSink3 * This,
            /* [in] */ __RPC__in LPCWSTR pszFilename,
            /* [in] */ DWORD dwRecordType,
            /* [out] */ __RPC__deref_out_opt IUnknown **pRecordingIUnknown);
        
        HRESULT ( STDMETHODCALLTYPE *IsProfileLocked )( 
            __RPC__in IStreamBufferSink3 * This);
        
        HRESULT ( STDMETHODCALLTYPE *UnlockProfile )( 
            __RPC__in IStreamBufferSink3 * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetAvailableFilter )( 
            __RPC__in IStreamBufferSink3 * This,
            /* [out][in] */ __RPC__inout REFERENCE_TIME *prtMin);
        
        END_INTERFACE
    } IStreamBufferSink3Vtbl;

    interface IStreamBufferSink3
    {
        CONST_VTBL struct IStreamBufferSink3Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferSink3_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferSink3_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferSink3_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferSink3_LockProfile(This,pszStreamBufferFilename)	\
    ( (This)->lpVtbl -> LockProfile(This,pszStreamBufferFilename) ) 

#define IStreamBufferSink3_CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown)	\
    ( (This)->lpVtbl -> CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown) ) 

#define IStreamBufferSink3_IsProfileLocked(This)	\
    ( (This)->lpVtbl -> IsProfileLocked(This) ) 


#define IStreamBufferSink3_UnlockProfile(This)	\
    ( (This)->lpVtbl -> UnlockProfile(This) ) 


#define IStreamBufferSink3_SetAvailableFilter(This,prtMin)	\
    ( (This)->lpVtbl -> SetAvailableFilter(This,prtMin) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferSink3_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferSource_INTERFACE_DEFINED__
#define __IStreamBufferSource_INTERFACE_DEFINED__

/* interface IStreamBufferSource */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferSource;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("1c5bd776-6ced-4f44-8164-5eab0e98db12")
    IStreamBufferSource : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetStreamSink( 
            /* [in] */ __RPC__in_opt IStreamBufferSink *pIStreamBufferSink) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferSourceVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferSource * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferSource * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferSource * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetStreamSink )( 
            __RPC__in IStreamBufferSource * This,
            /* [in] */ __RPC__in_opt IStreamBufferSink *pIStreamBufferSink);
        
        END_INTERFACE
    } IStreamBufferSourceVtbl;

    interface IStreamBufferSource
    {
        CONST_VTBL struct IStreamBufferSourceVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferSource_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferSource_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferSource_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferSource_SetStreamSink(This,pIStreamBufferSink)	\
    ( (This)->lpVtbl -> SetStreamSink(This,pIStreamBufferSink) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferSource_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferRecordControl_INTERFACE_DEFINED__
#define __IStreamBufferRecordControl_INTERFACE_DEFINED__

/* interface IStreamBufferRecordControl */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferRecordControl;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("ba9b6c99-f3c7-4ff2-92db-cfdd4851bf31")
    IStreamBufferRecordControl : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Start( 
            /* [out][in] */ __RPC__inout REFERENCE_TIME *prtStart) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Stop( 
            /* [in] */ REFERENCE_TIME rtStop) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordingStatus( 
            /* [out] */ __RPC__out HRESULT *phResult,
            /* [out] */ __RPC__out BOOL *pbStarted,
            /* [out] */ __RPC__out BOOL *pbStopped) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferRecordControlVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferRecordControl * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferRecordControl * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferRecordControl * This);
        
        HRESULT ( STDMETHODCALLTYPE *Start )( 
            __RPC__in IStreamBufferRecordControl * This,
            /* [out][in] */ __RPC__inout REFERENCE_TIME *prtStart);
        
        HRESULT ( STDMETHODCALLTYPE *Stop )( 
            __RPC__in IStreamBufferRecordControl * This,
            /* [in] */ REFERENCE_TIME rtStop);
        
        HRESULT ( STDMETHODCALLTYPE *GetRecordingStatus )( 
            __RPC__in IStreamBufferRecordControl * This,
            /* [out] */ __RPC__out HRESULT *phResult,
            /* [out] */ __RPC__out BOOL *pbStarted,
            /* [out] */ __RPC__out BOOL *pbStopped);
        
        END_INTERFACE
    } IStreamBufferRecordControlVtbl;

    interface IStreamBufferRecordControl
    {
        CONST_VTBL struct IStreamBufferRecordControlVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferRecordControl_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferRecordControl_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferRecordControl_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferRecordControl_Start(This,prtStart)	\
    ( (This)->lpVtbl -> Start(This,prtStart) ) 

#define IStreamBufferRecordControl_Stop(This,rtStop)	\
    ( (This)->lpVtbl -> Stop(This,rtStop) ) 

#define IStreamBufferRecordControl_GetRecordingStatus(This,phResult,pbStarted,pbStopped)	\
    ( (This)->lpVtbl -> GetRecordingStatus(This,phResult,pbStarted,pbStopped) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferRecordControl_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferRecComp_INTERFACE_DEFINED__
#define __IStreamBufferRecComp_INTERFACE_DEFINED__

/* interface IStreamBufferRecComp */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferRecComp;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9E259A9B-8815-42ae-B09F-221970B154FD")
    IStreamBufferRecComp : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ __RPC__in LPCWSTR pszTargetFilename,
            /* [in] */ __RPC__in LPCWSTR pszSBRecProfileRef) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Append( 
            /* [in] */ __RPC__in LPCWSTR pszSBRecording) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE AppendEx( 
            /* [in] */ __RPC__in LPCWSTR pszSBRecording,
            /* [in] */ REFERENCE_TIME rtStart,
            /* [in] */ REFERENCE_TIME rtStop) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCurrentLength( 
            /* [out] */ __RPC__out DWORD *pcSeconds) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Cancel( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferRecCompVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferRecComp * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferRecComp * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferRecComp * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            __RPC__in IStreamBufferRecComp * This,
            /* [in] */ __RPC__in LPCWSTR pszTargetFilename,
            /* [in] */ __RPC__in LPCWSTR pszSBRecProfileRef);
        
        HRESULT ( STDMETHODCALLTYPE *Append )( 
            __RPC__in IStreamBufferRecComp * This,
            /* [in] */ __RPC__in LPCWSTR pszSBRecording);
        
        HRESULT ( STDMETHODCALLTYPE *AppendEx )( 
            __RPC__in IStreamBufferRecComp * This,
            /* [in] */ __RPC__in LPCWSTR pszSBRecording,
            /* [in] */ REFERENCE_TIME rtStart,
            /* [in] */ REFERENCE_TIME rtStop);
        
        HRESULT ( STDMETHODCALLTYPE *GetCurrentLength )( 
            __RPC__in IStreamBufferRecComp * This,
            /* [out] */ __RPC__out DWORD *pcSeconds);
        
        HRESULT ( STDMETHODCALLTYPE *Close )( 
            __RPC__in IStreamBufferRecComp * This);
        
        HRESULT ( STDMETHODCALLTYPE *Cancel )( 
            __RPC__in IStreamBufferRecComp * This);
        
        END_INTERFACE
    } IStreamBufferRecCompVtbl;

    interface IStreamBufferRecComp
    {
        CONST_VTBL struct IStreamBufferRecCompVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferRecComp_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferRecComp_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferRecComp_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferRecComp_Initialize(This,pszTargetFilename,pszSBRecProfileRef)	\
    ( (This)->lpVtbl -> Initialize(This,pszTargetFilename,pszSBRecProfileRef) ) 

#define IStreamBufferRecComp_Append(This,pszSBRecording)	\
    ( (This)->lpVtbl -> Append(This,pszSBRecording) ) 

#define IStreamBufferRecComp_AppendEx(This,pszSBRecording,rtStart,rtStop)	\
    ( (This)->lpVtbl -> AppendEx(This,pszSBRecording,rtStart,rtStop) ) 

#define IStreamBufferRecComp_GetCurrentLength(This,pcSeconds)	\
    ( (This)->lpVtbl -> GetCurrentLength(This,pcSeconds) ) 

#define IStreamBufferRecComp_Close(This)	\
    ( (This)->lpVtbl -> Close(This) ) 

#define IStreamBufferRecComp_Cancel(This)	\
    ( (This)->lpVtbl -> Cancel(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferRecComp_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_sbe_0000_0007 */
/* [local] */ 

////////////////////////////////////////////////////////////////
//
// List of pre-defined attributes 
//
static const WCHAR g_wszStreamBufferRecordingDuration[] =L"Duration";
static const WCHAR g_wszStreamBufferRecordingBitrate[] =L"Bitrate";
static const WCHAR g_wszStreamBufferRecordingSeekable[] =L"Seekable";
static const WCHAR g_wszStreamBufferRecordingStridable[] =L"Stridable";
static const WCHAR g_wszStreamBufferRecordingBroadcast[] =L"Broadcast";
static const WCHAR g_wszStreamBufferRecordingProtected[] =L"Is_Protected";
static const WCHAR g_wszStreamBufferRecordingTrusted[] =L"Is_Trusted";
static const WCHAR g_wszStreamBufferRecordingSignature_Name[] =L"Signature_Name";
static const WCHAR g_wszStreamBufferRecordingHasAudio[] =L"HasAudio";
static const WCHAR g_wszStreamBufferRecordingHasImage[] =L"HasImage";
static const WCHAR g_wszStreamBufferRecordingHasScript[] =L"HasScript";
static const WCHAR g_wszStreamBufferRecordingHasVideo[] =L"HasVideo";
static const WCHAR g_wszStreamBufferRecordingCurrentBitrate[] =L"CurrentBitrate";
static const WCHAR g_wszStreamBufferRecordingOptimalBitrate[] =L"OptimalBitrate";
static const WCHAR g_wszStreamBufferRecordingHasAttachedImages[] =L"HasAttachedImages";
static const WCHAR g_wszStreamBufferRecordingSkipBackward[] =L"Can_Skip_Backward";
static const WCHAR g_wszStreamBufferRecordingSkipForward[] =L"Can_Skip_Forward";
static const WCHAR g_wszStreamBufferRecordingNumberOfFrames[] =L"NumberOfFrames";
static const WCHAR g_wszStreamBufferRecordingFileSize[] =L"FileSize";
static const WCHAR g_wszStreamBufferRecordingHasArbitraryDataStream[] =L"HasArbitraryDataStream";
static const WCHAR g_wszStreamBufferRecordingHasFileTransferStream[] =L"HasFileTransferStream";

////////////////////////////////////////////////////////////////
//
// The content description object supports 5 basic attributes.
//
static const WCHAR g_wszStreamBufferRecordingTitle[] =L"Title";
static const WCHAR g_wszStreamBufferRecordingAuthor[] =L"Author";
static const WCHAR g_wszStreamBufferRecordingDescription[] =L"Description";
static const WCHAR g_wszStreamBufferRecordingRating[] =L"Rating";
static const WCHAR g_wszStreamBufferRecordingCopyright[] =L"Copyright";

////////////////////////////////////////////////////////////////
//
// These attributes are used to configure DRM using IWMDRMWriter::SetDRMAttribute.
//
static const WCHAR *g_wszStreamBufferRecordingUse_DRM = L"Use_DRM";
static const WCHAR *g_wszStreamBufferRecordingDRM_Flags = L"DRM_Flags";
static const WCHAR *g_wszStreamBufferRecordingDRM_Level = L"DRM_Level";

////////////////////////////////////////////////////////////////
//
// These are the additional attributes defined in the WM attribute
// namespace that give information about the content.
//
static const WCHAR g_wszStreamBufferRecordingAlbumTitle[] =L"WM/AlbumTitle";
static const WCHAR g_wszStreamBufferRecordingTrack[] =L"WM/Track";
static const WCHAR g_wszStreamBufferRecordingPromotionURL[] =L"WM/PromotionURL";
static const WCHAR g_wszStreamBufferRecordingAlbumCoverURL[] =L"WM/AlbumCoverURL";
static const WCHAR g_wszStreamBufferRecordingGenre[] =L"WM/Genre";
static const WCHAR g_wszStreamBufferRecordingYear[] =L"WM/Year";
static const WCHAR g_wszStreamBufferRecordingGenreID[] =L"WM/GenreID";
static const WCHAR g_wszStreamBufferRecordingMCDI[] =L"WM/MCDI";
static const WCHAR g_wszStreamBufferRecordingComposer[] =L"WM/Composer";
static const WCHAR g_wszStreamBufferRecordingLyrics[] =L"WM/Lyrics";
static const WCHAR g_wszStreamBufferRecordingTrackNumber[] =L"WM/TrackNumber";
static const WCHAR g_wszStreamBufferRecordingToolName[] =L"WM/ToolName";
static const WCHAR g_wszStreamBufferRecordingToolVersion[] =L"WM/ToolVersion";
static const WCHAR g_wszStreamBufferRecordingIsVBR[] =L"IsVBR";
static const WCHAR g_wszStreamBufferRecordingAlbumArtist[] =L"WM/AlbumArtist";

////////////////////////////////////////////////////////////////
//
// These optional attributes may be used to give information 
// about the branding of the content.
//
static const WCHAR g_wszStreamBufferRecordingBannerImageType[] =L"BannerImageType";
static const WCHAR g_wszStreamBufferRecordingBannerImageData[] =L"BannerImageData";
static const WCHAR g_wszStreamBufferRecordingBannerImageURL[] =L"BannerImageURL";
static const WCHAR g_wszStreamBufferRecordingCopyrightURL[] =L"CopyrightURL";
////////////////////////////////////////////////////////////////
//
// Optional attributes, used to give information 
// about video stream properties.
//
static const WCHAR g_wszStreamBufferRecordingAspectRatioX[] =L"AspectRatioX";
static const WCHAR g_wszStreamBufferRecordingAspectRatioY[] =L"AspectRatioY";
////////////////////////////////////////////////////////////////
//
// The NSC file supports the following attributes.
//
static const WCHAR g_wszStreamBufferRecordingNSCName[] =L"NSC_Name";
static const WCHAR g_wszStreamBufferRecordingNSCAddress[] =L"NSC_Address";
static const WCHAR g_wszStreamBufferRecordingNSCPhone[] =L"NSC_Phone";
static const WCHAR g_wszStreamBufferRecordingNSCEmail[] =L"NSC_Email";
static const WCHAR g_wszStreamBufferRecordingNSCDescription[] =L"NSC_Description";

typedef /* [v1_enum][uuid] */  DECLSPEC_UUID("99038221-f409-4d44-8313-bff73269a85e") 
enum STREAMBUFFER_ATTR_DATATYPE
    {	STREAMBUFFER_TYPE_DWORD	= 0,
	STREAMBUFFER_TYPE_STRING	= 1,
	STREAMBUFFER_TYPE_BINARY	= 2,
	STREAMBUFFER_TYPE_BOOL	= 3,
	STREAMBUFFER_TYPE_QWORD	= 4,
	STREAMBUFFER_TYPE_WORD	= 5,
	STREAMBUFFER_TYPE_GUID	= 6
    } 	STREAMBUFFER_ATTR_DATATYPE;



extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0007_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0007_v0_0_s_ifspec;

#ifndef __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__
#define __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__

/* interface IStreamBufferRecordingAttribute */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferRecordingAttribute;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("16CA4E03-FE69-4705-BD41-5B7DFC0C95F3")
    IStreamBufferRecordingAttribute : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetAttribute( 
            /* [in] */ ULONG ulReserved,
            /* [in] */ __RPC__in LPCWSTR pszAttributeName,
            /* [in] */ STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType,
            /* [size_is][in] */ __RPC__in_ecount_full(cbAttributeLength) BYTE *pbAttribute,
            /* [in] */ WORD cbAttributeLength) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeCount( 
            /* [in] */ ULONG ulReserved,
            /* [out] */ __RPC__out WORD *pcAttributes) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeByName( 
            /* [in] */ __RPC__in LPCWSTR pszAttributeName,
            /* [in] */ __RPC__in ULONG *pulReserved,
            /* [out] */ __RPC__out STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcbLength) BYTE *pbAttribute,
            /* [out][in] */ __RPC__inout WORD *pcbLength) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeByIndex( 
            /* [in] */ WORD wIndex,
            /* [in] */ __RPC__in ULONG *pulReserved,
            /* [out] */ __RPC__out WCHAR *pszAttributeName,
            /* [out][in] */ __RPC__inout WORD *pcchNameLength,
            /* [out] */ __RPC__out STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcbLength) BYTE *pbAttribute,
            /* [out][in] */ __RPC__inout WORD *pcbLength) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumAttributes( 
            /* [out] */ __RPC__deref_out_opt IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferRecordingAttributeVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferRecordingAttribute * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferRecordingAttribute * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferRecordingAttribute * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetAttribute )( 
            __RPC__in IStreamBufferRecordingAttribute * This,
            /* [in] */ ULONG ulReserved,
            /* [in] */ __RPC__in LPCWSTR pszAttributeName,
            /* [in] */ STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType,
            /* [size_is][in] */ __RPC__in_ecount_full(cbAttributeLength) BYTE *pbAttribute,
            /* [in] */ WORD cbAttributeLength);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeCount )( 
            __RPC__in IStreamBufferRecordingAttribute * This,
            /* [in] */ ULONG ulReserved,
            /* [out] */ __RPC__out WORD *pcAttributes);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeByName )( 
            __RPC__in IStreamBufferRecordingAttribute * This,
            /* [in] */ __RPC__in LPCWSTR pszAttributeName,
            /* [in] */ __RPC__in ULONG *pulReserved,
            /* [out] */ __RPC__out STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcbLength) BYTE *pbAttribute,
            /* [out][in] */ __RPC__inout WORD *pcbLength);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeByIndex )( 
            __RPC__in IStreamBufferRecordingAttribute * This,
            /* [in] */ WORD wIndex,
            /* [in] */ __RPC__in ULONG *pulReserved,
            /* [out] */ __RPC__out WCHAR *pszAttributeName,
            /* [out][in] */ __RPC__inout WORD *pcchNameLength,
            /* [out] */ __RPC__out STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcbLength) BYTE *pbAttribute,
            /* [out][in] */ __RPC__inout WORD *pcbLength);
        
        HRESULT ( STDMETHODCALLTYPE *EnumAttributes )( 
            __RPC__in IStreamBufferRecordingAttribute * This,
            /* [out] */ __RPC__deref_out_opt IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib);
        
        END_INTERFACE
    } IStreamBufferRecordingAttributeVtbl;

    interface IStreamBufferRecordingAttribute
    {
        CONST_VTBL struct IStreamBufferRecordingAttributeVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferRecordingAttribute_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferRecordingAttribute_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferRecordingAttribute_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferRecordingAttribute_SetAttribute(This,ulReserved,pszAttributeName,StreamBufferAttributeType,pbAttribute,cbAttributeLength)	\
    ( (This)->lpVtbl -> SetAttribute(This,ulReserved,pszAttributeName,StreamBufferAttributeType,pbAttribute,cbAttributeLength) ) 

#define IStreamBufferRecordingAttribute_GetAttributeCount(This,ulReserved,pcAttributes)	\
    ( (This)->lpVtbl -> GetAttributeCount(This,ulReserved,pcAttributes) ) 

#define IStreamBufferRecordingAttribute_GetAttributeByName(This,pszAttributeName,pulReserved,pStreamBufferAttributeType,pbAttribute,pcbLength)	\
    ( (This)->lpVtbl -> GetAttributeByName(This,pszAttributeName,pulReserved,pStreamBufferAttributeType,pbAttribute,pcbLength) ) 

#define IStreamBufferRecordingAttribute_GetAttributeByIndex(This,wIndex,pulReserved,pszAttributeName,pcchNameLength,pStreamBufferAttributeType,pbAttribute,pcbLength)	\
    ( (This)->lpVtbl -> GetAttributeByIndex(This,wIndex,pulReserved,pszAttributeName,pcchNameLength,pStreamBufferAttributeType,pbAttribute,pcbLength) ) 

#define IStreamBufferRecordingAttribute_EnumAttributes(This,ppIEnumStreamBufferAttrib)	\
    ( (This)->lpVtbl -> EnumAttributes(This,ppIEnumStreamBufferAttrib) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_sbe_0000_0008 */
/* [local] */ 

typedef struct STREAMBUFFER_ATTRIBUTE
    {
    LPWSTR pszName;
    STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType;
    BYTE *pbAttribute;
    WORD cbLength;
    } 	STREAMBUFFER_ATTRIBUTE;



extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0008_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0008_v0_0_s_ifspec;

#ifndef __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__
#define __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__

/* interface IEnumStreamBufferRecordingAttrib */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IEnumStreamBufferRecordingAttrib;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("C18A9162-1E82-4142-8C73-5690FA62FE33")
    IEnumStreamBufferRecordingAttrib : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Next( 
            /* [in] */ ULONG cRequest,
            /* [size_is][out][in] */ __RPC__inout_ecount_full(cRequest) STREAMBUFFER_ATTRIBUTE *pStreamBufferAttribute,
            /* [out] */ __RPC__out ULONG *pcReceived) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Skip( 
            /* [in] */ ULONG cRecords) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Clone( 
            /* [out] */ __RPC__deref_out_opt IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnumStreamBufferRecordingAttribVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IEnumStreamBufferRecordingAttrib * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IEnumStreamBufferRecordingAttrib * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IEnumStreamBufferRecordingAttrib * This);
        
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            __RPC__in IEnumStreamBufferRecordingAttrib * This,
            /* [in] */ ULONG cRequest,
            /* [size_is][out][in] */ __RPC__inout_ecount_full(cRequest) STREAMBUFFER_ATTRIBUTE *pStreamBufferAttribute,
            /* [out] */ __RPC__out ULONG *pcReceived);
        
        HRESULT ( STDMETHODCALLTYPE *Skip )( 
            __RPC__in IEnumStreamBufferRecordingAttrib * This,
            /* [in] */ ULONG cRecords);
        
        HRESULT ( STDMETHODCALLTYPE *Reset )( 
            __RPC__in IEnumStreamBufferRecordingAttrib * This);
        
        HRESULT ( STDMETHODCALLTYPE *Clone )( 
            __RPC__in IEnumStreamBufferRecordingAttrib * This,
            /* [out] */ __RPC__deref_out_opt IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib);
        
        END_INTERFACE
    } IEnumStreamBufferRecordingAttribVtbl;

    interface IEnumStreamBufferRecordingAttrib
    {
        CONST_VTBL struct IEnumStreamBufferRecordingAttribVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnumStreamBufferRecordingAttrib_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnumStreamBufferRecordingAttrib_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnumStreamBufferRecordingAttrib_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnumStreamBufferRecordingAttrib_Next(This,cRequest,pStreamBufferAttribute,pcReceived)	\
    ( (This)->lpVtbl -> Next(This,cRequest,pStreamBufferAttribute,pcReceived) ) 

#define IEnumStreamBufferRecordingAttrib_Skip(This,cRecords)	\
    ( (This)->lpVtbl -> Skip(This,cRecords) ) 

#define IEnumStreamBufferRecordingAttrib_Reset(This)	\
    ( (This)->lpVtbl -> Reset(This) ) 

#define IEnumStreamBufferRecordingAttrib_Clone(This,ppIEnumStreamBufferAttrib)	\
    ( (This)->lpVtbl -> Clone(This,ppIEnumStreamBufferAttrib) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferConfigure_INTERFACE_DEFINED__
#define __IStreamBufferConfigure_INTERFACE_DEFINED__

/* interface IStreamBufferConfigure */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferConfigure;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("ce14dfae-4098-4af7-bbf7-d6511f835414")
    IStreamBufferConfigure : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetDirectory( 
            /* [in] */ __RPC__in LPCWSTR pszDirectoryName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDirectory( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDirectoryName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetBackingFileCount( 
            /* [in] */ DWORD dwMin,
            /* [in] */ DWORD dwMax) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetBackingFileCount( 
            /* [out] */ __RPC__out DWORD *pdwMin,
            /* [out] */ __RPC__out DWORD *pdwMax) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetBackingFileDuration( 
            /* [in] */ DWORD dwSeconds) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetBackingFileDuration( 
            /* [out] */ __RPC__out DWORD *pdwSeconds) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferConfigureVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferConfigure * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferConfigure * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferConfigure * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetDirectory )( 
            __RPC__in IStreamBufferConfigure * This,
            /* [in] */ __RPC__in LPCWSTR pszDirectoryName);
        
        HRESULT ( STDMETHODCALLTYPE *GetDirectory )( 
            __RPC__in IStreamBufferConfigure * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDirectoryName);
        
        HRESULT ( STDMETHODCALLTYPE *SetBackingFileCount )( 
            __RPC__in IStreamBufferConfigure * This,
            /* [in] */ DWORD dwMin,
            /* [in] */ DWORD dwMax);
        
        HRESULT ( STDMETHODCALLTYPE *GetBackingFileCount )( 
            __RPC__in IStreamBufferConfigure * This,
            /* [out] */ __RPC__out DWORD *pdwMin,
            /* [out] */ __RPC__out DWORD *pdwMax);
        
        HRESULT ( STDMETHODCALLTYPE *SetBackingFileDuration )( 
            __RPC__in IStreamBufferConfigure * This,
            /* [in] */ DWORD dwSeconds);
        
        HRESULT ( STDMETHODCALLTYPE *GetBackingFileDuration )( 
            __RPC__in IStreamBufferConfigure * This,
            /* [out] */ __RPC__out DWORD *pdwSeconds);
        
        END_INTERFACE
    } IStreamBufferConfigureVtbl;

    interface IStreamBufferConfigure
    {
        CONST_VTBL struct IStreamBufferConfigureVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferConfigure_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferConfigure_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferConfigure_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferConfigure_SetDirectory(This,pszDirectoryName)	\
    ( (This)->lpVtbl -> SetDirectory(This,pszDirectoryName) ) 

#define IStreamBufferConfigure_GetDirectory(This,ppszDirectoryName)	\
    ( (This)->lpVtbl -> GetDirectory(This,ppszDirectoryName) ) 

#define IStreamBufferConfigure_SetBackingFileCount(This,dwMin,dwMax)	\
    ( (This)->lpVtbl -> SetBackingFileCount(This,dwMin,dwMax) ) 

#define IStreamBufferConfigure_GetBackingFileCount(This,pdwMin,pdwMax)	\
    ( (This)->lpVtbl -> GetBackingFileCount(This,pdwMin,pdwMax) ) 

#define IStreamBufferConfigure_SetBackingFileDuration(This,dwSeconds)	\
    ( (This)->lpVtbl -> SetBackingFileDuration(This,dwSeconds) ) 

#define IStreamBufferConfigure_GetBackingFileDuration(This,pdwSeconds)	\
    ( (This)->lpVtbl -> GetBackingFileDuration(This,pdwSeconds) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferConfigure_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferConfigure2_INTERFACE_DEFINED__
#define __IStreamBufferConfigure2_INTERFACE_DEFINED__

/* interface IStreamBufferConfigure2 */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferConfigure2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("53E037BF-3992-4282-AE34-2487B4DAE06B")
    IStreamBufferConfigure2 : public IStreamBufferConfigure
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetMultiplexedPacketSize( 
            /* [in] */ DWORD cbBytesPerPacket) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetMultiplexedPacketSize( 
            /* [out] */ __RPC__out DWORD *pcbBytesPerPacket) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetFFTransitionRates( 
            /* [in] */ DWORD dwMaxFullFrameRate,
            /* [in] */ DWORD dwMaxNonSkippingRate) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFFTransitionRates( 
            /* [out] */ __RPC__out DWORD *pdwMaxFullFrameRate,
            /* [out] */ __RPC__out DWORD *pdwMaxNonSkippingRate) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferConfigure2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferConfigure2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferConfigure2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetDirectory )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [in] */ __RPC__in LPCWSTR pszDirectoryName);
        
        HRESULT ( STDMETHODCALLTYPE *GetDirectory )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDirectoryName);
        
        HRESULT ( STDMETHODCALLTYPE *SetBackingFileCount )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [in] */ DWORD dwMin,
            /* [in] */ DWORD dwMax);
        
        HRESULT ( STDMETHODCALLTYPE *GetBackingFileCount )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [out] */ __RPC__out DWORD *pdwMin,
            /* [out] */ __RPC__out DWORD *pdwMax);
        
        HRESULT ( STDMETHODCALLTYPE *SetBackingFileDuration )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [in] */ DWORD dwSeconds);
        
        HRESULT ( STDMETHODCALLTYPE *GetBackingFileDuration )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [out] */ __RPC__out DWORD *pdwSeconds);
        
        HRESULT ( STDMETHODCALLTYPE *SetMultiplexedPacketSize )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [in] */ DWORD cbBytesPerPacket);
        
        HRESULT ( STDMETHODCALLTYPE *GetMultiplexedPacketSize )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [out] */ __RPC__out DWORD *pcbBytesPerPacket);
        
        HRESULT ( STDMETHODCALLTYPE *SetFFTransitionRates )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [in] */ DWORD dwMaxFullFrameRate,
            /* [in] */ DWORD dwMaxNonSkippingRate);
        
        HRESULT ( STDMETHODCALLTYPE *GetFFTransitionRates )( 
            __RPC__in IStreamBufferConfigure2 * This,
            /* [out] */ __RPC__out DWORD *pdwMaxFullFrameRate,
            /* [out] */ __RPC__out DWORD *pdwMaxNonSkippingRate);
        
        END_INTERFACE
    } IStreamBufferConfigure2Vtbl;

    interface IStreamBufferConfigure2
    {
        CONST_VTBL struct IStreamBufferConfigure2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferConfigure2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferConfigure2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferConfigure2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferConfigure2_SetDirectory(This,pszDirectoryName)	\
    ( (This)->lpVtbl -> SetDirectory(This,pszDirectoryName) ) 

#define IStreamBufferConfigure2_GetDirectory(This,ppszDirectoryName)	\
    ( (This)->lpVtbl -> GetDirectory(This,ppszDirectoryName) ) 

#define IStreamBufferConfigure2_SetBackingFileCount(This,dwMin,dwMax)	\
    ( (This)->lpVtbl -> SetBackingFileCount(This,dwMin,dwMax) ) 

#define IStreamBufferConfigure2_GetBackingFileCount(This,pdwMin,pdwMax)	\
    ( (This)->lpVtbl -> GetBackingFileCount(This,pdwMin,pdwMax) ) 

#define IStreamBufferConfigure2_SetBackingFileDuration(This,dwSeconds)	\
    ( (This)->lpVtbl -> SetBackingFileDuration(This,dwSeconds) ) 

#define IStreamBufferConfigure2_GetBackingFileDuration(This,pdwSeconds)	\
    ( (This)->lpVtbl -> GetBackingFileDuration(This,pdwSeconds) ) 


#define IStreamBufferConfigure2_SetMultiplexedPacketSize(This,cbBytesPerPacket)	\
    ( (This)->lpVtbl -> SetMultiplexedPacketSize(This,cbBytesPerPacket) ) 

#define IStreamBufferConfigure2_GetMultiplexedPacketSize(This,pcbBytesPerPacket)	\
    ( (This)->lpVtbl -> GetMultiplexedPacketSize(This,pcbBytesPerPacket) ) 

#define IStreamBufferConfigure2_SetFFTransitionRates(This,dwMaxFullFrameRate,dwMaxNonSkippingRate)	\
    ( (This)->lpVtbl -> SetFFTransitionRates(This,dwMaxFullFrameRate,dwMaxNonSkippingRate) ) 

#define IStreamBufferConfigure2_GetFFTransitionRates(This,pdwMaxFullFrameRate,pdwMaxNonSkippingRate)	\
    ( (This)->lpVtbl -> GetFFTransitionRates(This,pdwMaxFullFrameRate,pdwMaxNonSkippingRate) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferConfigure2_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferConfigure3_INTERFACE_DEFINED__
#define __IStreamBufferConfigure3_INTERFACE_DEFINED__

/* interface IStreamBufferConfigure3 */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferConfigure3;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("7E2D2A1E-7192-4bd7-80C1-061FD1D10402")
    IStreamBufferConfigure3 : public IStreamBufferConfigure2
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetStartRecConfig( 
            /* [in] */ BOOL fStartStopsCur) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetStartRecConfig( 
            /* [out] */ __RPC__out BOOL *pfStartStopsCur) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetNamespace( 
            /* [in] */ __RPC__in LPWSTR pszNamespace) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNamespace( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszNamespace) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferConfigure3Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferConfigure3 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferConfigure3 * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetDirectory )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [in] */ __RPC__in LPCWSTR pszDirectoryName);
        
        HRESULT ( STDMETHODCALLTYPE *GetDirectory )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDirectoryName);
        
        HRESULT ( STDMETHODCALLTYPE *SetBackingFileCount )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [in] */ DWORD dwMin,
            /* [in] */ DWORD dwMax);
        
        HRESULT ( STDMETHODCALLTYPE *GetBackingFileCount )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [out] */ __RPC__out DWORD *pdwMin,
            /* [out] */ __RPC__out DWORD *pdwMax);
        
        HRESULT ( STDMETHODCALLTYPE *SetBackingFileDuration )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [in] */ DWORD dwSeconds);
        
        HRESULT ( STDMETHODCALLTYPE *GetBackingFileDuration )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [out] */ __RPC__out DWORD *pdwSeconds);
        
        HRESULT ( STDMETHODCALLTYPE *SetMultiplexedPacketSize )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [in] */ DWORD cbBytesPerPacket);
        
        HRESULT ( STDMETHODCALLTYPE *GetMultiplexedPacketSize )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [out] */ __RPC__out DWORD *pcbBytesPerPacket);
        
        HRESULT ( STDMETHODCALLTYPE *SetFFTransitionRates )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [in] */ DWORD dwMaxFullFrameRate,
            /* [in] */ DWORD dwMaxNonSkippingRate);
        
        HRESULT ( STDMETHODCALLTYPE *GetFFTransitionRates )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [out] */ __RPC__out DWORD *pdwMaxFullFrameRate,
            /* [out] */ __RPC__out DWORD *pdwMaxNonSkippingRate);
        
        HRESULT ( STDMETHODCALLTYPE *SetStartRecConfig )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [in] */ BOOL fStartStopsCur);
        
        HRESULT ( STDMETHODCALLTYPE *GetStartRecConfig )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [out] */ __RPC__out BOOL *pfStartStopsCur);
        
        HRESULT ( STDMETHODCALLTYPE *SetNamespace )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [in] */ __RPC__in LPWSTR pszNamespace);
        
        HRESULT ( STDMETHODCALLTYPE *GetNamespace )( 
            __RPC__in IStreamBufferConfigure3 * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszNamespace);
        
        END_INTERFACE
    } IStreamBufferConfigure3Vtbl;

    interface IStreamBufferConfigure3
    {
        CONST_VTBL struct IStreamBufferConfigure3Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferConfigure3_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferConfigure3_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferConfigure3_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferConfigure3_SetDirectory(This,pszDirectoryName)	\
    ( (This)->lpVtbl -> SetDirectory(This,pszDirectoryName) ) 

#define IStreamBufferConfigure3_GetDirectory(This,ppszDirectoryName)	\
    ( (This)->lpVtbl -> GetDirectory(This,ppszDirectoryName) ) 

#define IStreamBufferConfigure3_SetBackingFileCount(This,dwMin,dwMax)	\
    ( (This)->lpVtbl -> SetBackingFileCount(This,dwMin,dwMax) ) 

#define IStreamBufferConfigure3_GetBackingFileCount(This,pdwMin,pdwMax)	\
    ( (This)->lpVtbl -> GetBackingFileCount(This,pdwMin,pdwMax) ) 

#define IStreamBufferConfigure3_SetBackingFileDuration(This,dwSeconds)	\
    ( (This)->lpVtbl -> SetBackingFileDuration(This,dwSeconds) ) 

#define IStreamBufferConfigure3_GetBackingFileDuration(This,pdwSeconds)	\
    ( (This)->lpVtbl -> GetBackingFileDuration(This,pdwSeconds) ) 


#define IStreamBufferConfigure3_SetMultiplexedPacketSize(This,cbBytesPerPacket)	\
    ( (This)->lpVtbl -> SetMultiplexedPacketSize(This,cbBytesPerPacket) ) 

#define IStreamBufferConfigure3_GetMultiplexedPacketSize(This,pcbBytesPerPacket)	\
    ( (This)->lpVtbl -> GetMultiplexedPacketSize(This,pcbBytesPerPacket) ) 

#define IStreamBufferConfigure3_SetFFTransitionRates(This,dwMaxFullFrameRate,dwMaxNonSkippingRate)	\
    ( (This)->lpVtbl -> SetFFTransitionRates(This,dwMaxFullFrameRate,dwMaxNonSkippingRate) ) 

#define IStreamBufferConfigure3_GetFFTransitionRates(This,pdwMaxFullFrameRate,pdwMaxNonSkippingRate)	\
    ( (This)->lpVtbl -> GetFFTransitionRates(This,pdwMaxFullFrameRate,pdwMaxNonSkippingRate) ) 


#define IStreamBufferConfigure3_SetStartRecConfig(This,fStartStopsCur)	\
    ( (This)->lpVtbl -> SetStartRecConfig(This,fStartStopsCur) ) 

#define IStreamBufferConfigure3_GetStartRecConfig(This,pfStartStopsCur)	\
    ( (This)->lpVtbl -> GetStartRecConfig(This,pfStartStopsCur) ) 

#define IStreamBufferConfigure3_SetNamespace(This,pszNamespace)	\
    ( (This)->lpVtbl -> SetNamespace(This,pszNamespace) ) 

#define IStreamBufferConfigure3_GetNamespace(This,ppszNamespace)	\
    ( (This)->lpVtbl -> GetNamespace(This,ppszNamespace) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferConfigure3_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferMediaSeeking_INTERFACE_DEFINED__
#define __IStreamBufferMediaSeeking_INTERFACE_DEFINED__

/* interface IStreamBufferMediaSeeking */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferMediaSeeking;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("f61f5c26-863d-4afa-b0ba-2f81dc978596")
    IStreamBufferMediaSeeking : public IMediaSeeking
    {
    public:
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferMediaSeekingVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferMediaSeeking * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferMediaSeeking * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetCapabilities )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  DWORD *pCapabilities);
        
        HRESULT ( STDMETHODCALLTYPE *CheckCapabilities )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [out][in] */ __RPC__inout DWORD *pCapabilities);
        
        HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [in] */ __RPC__in const GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *QueryPreferredFormat )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *GetTimeFormat )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *IsUsingTimeFormat )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [in] */ __RPC__in const GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *SetTimeFormat )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [in] */ __RPC__in const GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *GetDuration )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pDuration);
        
        HRESULT ( STDMETHODCALLTYPE *GetStopPosition )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pStop);
        
        HRESULT ( STDMETHODCALLTYPE *GetCurrentPosition )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pCurrent);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertTimeFormat )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pTarget,
            /* [annotation][in] */ 
            __in_opt  const GUID *pTargetFormat,
            /* [in] */ LONGLONG Source,
            /* [annotation][in] */ 
            __in_opt  const GUID *pSourceFormat);
        
        HRESULT ( STDMETHODCALLTYPE *SetPositions )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out][in] */ 
            __inout_opt  LONGLONG *pCurrent,
            /* [in] */ DWORD dwCurrentFlags,
            /* [annotation][out][in] */ 
            __inout_opt  LONGLONG *pStop,
            /* [in] */ DWORD dwStopFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetPositions )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out_opt  LONGLONG *pCurrent,
            /* [annotation][out] */ 
            __out_opt  LONGLONG *pStop);
        
        HRESULT ( STDMETHODCALLTYPE *GetAvailable )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out_opt  LONGLONG *pEarliest,
            /* [annotation][out] */ 
            __out_opt  LONGLONG *pLatest);
        
        HRESULT ( STDMETHODCALLTYPE *SetRate )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [in] */ double dRate);
        
        HRESULT ( STDMETHODCALLTYPE *GetRate )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  double *pdRate);
        
        HRESULT ( STDMETHODCALLTYPE *GetPreroll )( 
            __RPC__in IStreamBufferMediaSeeking * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pllPreroll);
        
        END_INTERFACE
    } IStreamBufferMediaSeekingVtbl;

    interface IStreamBufferMediaSeeking
    {
        CONST_VTBL struct IStreamBufferMediaSeekingVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferMediaSeeking_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferMediaSeeking_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferMediaSeeking_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferMediaSeeking_GetCapabilities(This,pCapabilities)	\
    ( (This)->lpVtbl -> GetCapabilities(This,pCapabilities) ) 

#define IStreamBufferMediaSeeking_CheckCapabilities(This,pCapabilities)	\
    ( (This)->lpVtbl -> CheckCapabilities(This,pCapabilities) ) 

#define IStreamBufferMediaSeeking_IsFormatSupported(This,pFormat)	\
    ( (This)->lpVtbl -> IsFormatSupported(This,pFormat) ) 

#define IStreamBufferMediaSeeking_QueryPreferredFormat(This,pFormat)	\
    ( (This)->lpVtbl -> QueryPreferredFormat(This,pFormat) ) 

#define IStreamBufferMediaSeeking_GetTimeFormat(This,pFormat)	\
    ( (This)->lpVtbl -> GetTimeFormat(This,pFormat) ) 

#define IStreamBufferMediaSeeking_IsUsingTimeFormat(This,pFormat)	\
    ( (This)->lpVtbl -> IsUsingTimeFormat(This,pFormat) ) 

#define IStreamBufferMediaSeeking_SetTimeFormat(This,pFormat)	\
    ( (This)->lpVtbl -> SetTimeFormat(This,pFormat) ) 

#define IStreamBufferMediaSeeking_GetDuration(This,pDuration)	\
    ( (This)->lpVtbl -> GetDuration(This,pDuration) ) 

#define IStreamBufferMediaSeeking_GetStopPosition(This,pStop)	\
    ( (This)->lpVtbl -> GetStopPosition(This,pStop) ) 

#define IStreamBufferMediaSeeking_GetCurrentPosition(This,pCurrent)	\
    ( (This)->lpVtbl -> GetCurrentPosition(This,pCurrent) ) 

#define IStreamBufferMediaSeeking_ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat)	\
    ( (This)->lpVtbl -> ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) ) 

#define IStreamBufferMediaSeeking_SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags)	\
    ( (This)->lpVtbl -> SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) ) 

#define IStreamBufferMediaSeeking_GetPositions(This,pCurrent,pStop)	\
    ( (This)->lpVtbl -> GetPositions(This,pCurrent,pStop) ) 

#define IStreamBufferMediaSeeking_GetAvailable(This,pEarliest,pLatest)	\
    ( (This)->lpVtbl -> GetAvailable(This,pEarliest,pLatest) ) 

#define IStreamBufferMediaSeeking_SetRate(This,dRate)	\
    ( (This)->lpVtbl -> SetRate(This,dRate) ) 

#define IStreamBufferMediaSeeking_GetRate(This,pdRate)	\
    ( (This)->lpVtbl -> GetRate(This,pdRate) ) 

#define IStreamBufferMediaSeeking_GetPreroll(This,pllPreroll)	\
    ( (This)->lpVtbl -> GetPreroll(This,pllPreroll) ) 


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferMediaSeeking_INTERFACE_DEFINED__ */


#ifndef __IStreamBufferMediaSeeking2_INTERFACE_DEFINED__
#define __IStreamBufferMediaSeeking2_INTERFACE_DEFINED__

/* interface IStreamBufferMediaSeeking2 */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferMediaSeeking2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("3a439ab0-155f-470a-86a6-9ea54afd6eaf")
    IStreamBufferMediaSeeking2 : public IStreamBufferMediaSeeking
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetRateEx( 
            /* [in] */ double dRate,
            /* [in] */ DWORD dwFramesPerSec) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferMediaSeeking2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferMediaSeeking2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferMediaSeeking2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetCapabilities )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  DWORD *pCapabilities);
        
        HRESULT ( STDMETHODCALLTYPE *CheckCapabilities )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [out][in] */ __RPC__inout DWORD *pCapabilities);
        
        HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [in] */ __RPC__in const GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *QueryPreferredFormat )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *GetTimeFormat )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *IsUsingTimeFormat )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [in] */ __RPC__in const GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *SetTimeFormat )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [in] */ __RPC__in const GUID *pFormat);
        
        HRESULT ( STDMETHODCALLTYPE *GetDuration )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pDuration);
        
        HRESULT ( STDMETHODCALLTYPE *GetStopPosition )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pStop);
        
        HRESULT ( STDMETHODCALLTYPE *GetCurrentPosition )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pCurrent);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertTimeFormat )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pTarget,
            /* [annotation][in] */ 
            __in_opt  const GUID *pTargetFormat,
            /* [in] */ LONGLONG Source,
            /* [annotation][in] */ 
            __in_opt  const GUID *pSourceFormat);
        
        HRESULT ( STDMETHODCALLTYPE *SetPositions )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out][in] */ 
            __inout_opt  LONGLONG *pCurrent,
            /* [in] */ DWORD dwCurrentFlags,
            /* [annotation][out][in] */ 
            __inout_opt  LONGLONG *pStop,
            /* [in] */ DWORD dwStopFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetPositions )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out_opt  LONGLONG *pCurrent,
            /* [annotation][out] */ 
            __out_opt  LONGLONG *pStop);
        
        HRESULT ( STDMETHODCALLTYPE *GetAvailable )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out_opt  LONGLONG *pEarliest,
            /* [annotation][out] */ 
            __out_opt  LONGLONG *pLatest);
        
        HRESULT ( STDMETHODCALLTYPE *SetRate )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [in] */ double dRate);
        
        HRESULT ( STDMETHODCALLTYPE *GetRate )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  double *pdRate);
        
        HRESULT ( STDMETHODCALLTYPE *GetPreroll )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [annotation][out] */ 
            __out  LONGLONG *pllPreroll);
        
        HRESULT ( STDMETHODCALLTYPE *SetRateEx )( 
            __RPC__in IStreamBufferMediaSeeking2 * This,
            /* [in] */ double dRate,
            /* [in] */ DWORD dwFramesPerSec);
        
        END_INTERFACE
    } IStreamBufferMediaSeeking2Vtbl;

    interface IStreamBufferMediaSeeking2
    {
        CONST_VTBL struct IStreamBufferMediaSeeking2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferMediaSeeking2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferMediaSeeking2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferMediaSeeking2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferMediaSeeking2_GetCapabilities(This,pCapabilities)	\
    ( (This)->lpVtbl -> GetCapabilities(This,pCapabilities) ) 

#define IStreamBufferMediaSeeking2_CheckCapabilities(This,pCapabilities)	\
    ( (This)->lpVtbl -> CheckCapabilities(This,pCapabilities) ) 

#define IStreamBufferMediaSeeking2_IsFormatSupported(This,pFormat)	\
    ( (This)->lpVtbl -> IsFormatSupported(This,pFormat) ) 

#define IStreamBufferMediaSeeking2_QueryPreferredFormat(This,pFormat)	\
    ( (This)->lpVtbl -> QueryPreferredFormat(This,pFormat) ) 

#define IStreamBufferMediaSeeking2_GetTimeFormat(This,pFormat)	\
    ( (This)->lpVtbl -> GetTimeFormat(This,pFormat) ) 

#define IStreamBufferMediaSeeking2_IsUsingTimeFormat(This,pFormat)	\
    ( (This)->lpVtbl -> IsUsingTimeFormat(This,pFormat) ) 

#define IStreamBufferMediaSeeking2_SetTimeFormat(This,pFormat)	\
    ( (This)->lpVtbl -> SetTimeFormat(This,pFormat) ) 

#define IStreamBufferMediaSeeking2_GetDuration(This,pDuration)	\
    ( (This)->lpVtbl -> GetDuration(This,pDuration) ) 

#define IStreamBufferMediaSeeking2_GetStopPosition(This,pStop)	\
    ( (This)->lpVtbl -> GetStopPosition(This,pStop) ) 

#define IStreamBufferMediaSeeking2_GetCurrentPosition(This,pCurrent)	\
    ( (This)->lpVtbl -> GetCurrentPosition(This,pCurrent) ) 

#define IStreamBufferMediaSeeking2_ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat)	\
    ( (This)->lpVtbl -> ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) ) 

#define IStreamBufferMediaSeeking2_SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags)	\
    ( (This)->lpVtbl -> SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) ) 

#define IStreamBufferMediaSeeking2_GetPositions(This,pCurrent,pStop)	\
    ( (This)->lpVtbl -> GetPositions(This,pCurrent,pStop) ) 

#define IStreamBufferMediaSeeking2_GetAvailable(This,pEarliest,pLatest)	\
    ( (This)->lpVtbl -> GetAvailable(This,pEarliest,pLatest) ) 

#define IStreamBufferMediaSeeking2_SetRate(This,dRate)	\
    ( (This)->lpVtbl -> SetRate(This,dRate) ) 

#define IStreamBufferMediaSeeking2_GetRate(This,pdRate)	\
    ( (This)->lpVtbl -> GetRate(This,pdRate) ) 

#define IStreamBufferMediaSeeking2_GetPreroll(This,pllPreroll)	\
    ( (This)->lpVtbl -> GetPreroll(This,pllPreroll) ) 



#define IStreamBufferMediaSeeking2_SetRateEx(This,dRate,dwFramesPerSec)	\
    ( (This)->lpVtbl -> SetRateEx(This,dRate,dwFramesPerSec) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferMediaSeeking2_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_sbe_0000_0014 */
/* [local] */ 

typedef struct SBE_PIN_DATA
    {
    ULONGLONG cDataBytes;
    ULONGLONG cSamplesProcessed;
    ULONGLONG cDiscontinuities;
    ULONGLONG cSyncPoints;
    ULONGLONG cTimestamps;
    } 	SBE_PIN_DATA;



extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0014_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0014_v0_0_s_ifspec;

#ifndef __IStreamBufferDataCounters_INTERFACE_DEFINED__
#define __IStreamBufferDataCounters_INTERFACE_DEFINED__

/* interface IStreamBufferDataCounters */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IStreamBufferDataCounters;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9D2A2563-31AB-402e-9A6B-ADB903489440")
    IStreamBufferDataCounters : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetData( 
            /* [out] */ __RPC__out SBE_PIN_DATA *pPinData) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ResetData( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamBufferDataCountersVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IStreamBufferDataCounters * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IStreamBufferDataCounters * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IStreamBufferDataCounters * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetData )( 
            __RPC__in IStreamBufferDataCounters * This,
            /* [out] */ __RPC__out SBE_PIN_DATA *pPinData);
        
        HRESULT ( STDMETHODCALLTYPE *ResetData )( 
            __RPC__in IStreamBufferDataCounters * This);
        
        END_INTERFACE
    } IStreamBufferDataCountersVtbl;

    interface IStreamBufferDataCounters
    {
        CONST_VTBL struct IStreamBufferDataCountersVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamBufferDataCounters_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IStreamBufferDataCounters_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IStreamBufferDataCounters_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IStreamBufferDataCounters_GetData(This,pPinData)	\
    ( (This)->lpVtbl -> GetData(This,pPinData) ) 

#define IStreamBufferDataCounters_ResetData(This)	\
    ( (This)->lpVtbl -> ResetData(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IStreamBufferDataCounters_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_sbe_0000_0015 */
/* [local] */ 

#define STREAMBUFFER_EC_BASE                     0x0326
enum {
    //  timehole event
    //      param1 = timehole stream offset ms
    //      param1 = timehole size ms
    STREAMBUFFER_EC_TIMEHOLE = STREAMBUFFER_EC_BASE,
    
    STREAMBUFFER_EC_STALE_DATA_READ,
    
    STREAMBUFFER_EC_STALE_FILE_DELETED,
    STREAMBUFFER_EC_CONTENT_BECOMING_STALE,
    STREAMBUFFER_EC_WRITE_FAILURE,
    STREAMBUFFER_EC_WRITE_FAILURE_CLEAR,
    //
    //  unexpected read failure
    //      param1 = HRESULT failure
    //      param2 = undefined
    STREAMBUFFER_EC_READ_FAILURE,
    //
    //  playback rate change
    //      param1 = old_playback_rate * 10000 e.g. 2x is 20000
    //      param2 = new_playback_rate * 10000
    STREAMBUFFER_EC_RATE_CHANGED,
    //
    //  index frame insertion notification
    // 
    STREAMBUFFER_EC_PRIMARY_AUDIO,
    //
    //  about to send playback rate change that is due to IMediaSeeking::SetPositions() call
    //      param1 = old_playback_rate * 10000 e.g. 2x is 20000
    //      param2 = new_playback_rate * 10000
    STREAMBUFFER_EC_RATE_CHANGING_FOR_SETPOSITIONS,
    //
    //  the work of a SetPositions() call has finished
    //      param1 = unused (set to 0 -- if uses are defined, they will be non-0)
    //      param2 = unused (set to 0 -- if uses are defined later, they will be non-0)
    STREAMBUFFER_EC_SETPOSITIONS_EVENTS_DONE,
} ;






// {8966A89E-F83E-4c0e-BC3B-BFA7649E04CB}
DEFINE_GUID(EVENTID_SBE2RecControlStarted, 
0x8966a89e, 0xf83e, 0x4c0e, 0xbc, 0x3b, 0xbf, 0xa7, 0x64, 0x9e, 0x4, 0xcb);
// {454B1EC8-0C9B-4caa-B1A1-1E7A2666F6C3}
DEFINE_GUID(EVENTID_SBE2RecControlStopped, 
0x454b1ec8, 0xc9b, 0x4caa, 0xb1, 0xa1, 0x1e, 0x7a, 0x26, 0x66, 0xf6, 0xc3);
DEFINE_GUID (SBE2_STREAM_DESC_EVENT,
0x2313a4ed, 0xbf2d, 0x454f, 0xad, 0x8a, 0xd9, 0x5b, 0xa7, 0xf9, 0x1f, 0xee);
// {000FCF09-97F5-46ac-9769-7A83B35384FB}
DEFINE_GUID (SBE2_V1_STREAMS_CREATION_EVENT,
0xfcf09, 0x97f5, 0x46ac, 0x97, 0x69, 0x7a, 0x83, 0xb3, 0x53, 0x84, 0xfb);
// {A72530A3-0344-4cab-A2D0-FE937DBDCAB3}
DEFINE_GUID (SBE2_V2_STREAMS_CREATION_EVENT,
0xa72530a3, 0x344, 0x4cab, 0xa2, 0xd0, 0xfe, 0x93, 0x7d, 0xbd, 0xca, 0xb3);
typedef enum {
DEF_MODE_PROFILE = 0x0000001,
DEF_MODE_STREAMS = 0x0000002,
} CROSSBAR_DEFAULT_FLAGS ;
typedef DWORD SBE2_STREAM_ID;

#define	SBE2_STREAM_DESC_VERSION	( 1 )

typedef /* [public][public] */ struct __MIDL___MIDL_itf_sbe_0000_0015_0001
    {
    DWORD Version;
    SBE2_STREAM_ID StreamId;
    DWORD Default;
    DWORD Reserved;
    } 	SBE2_STREAM_DESC;

typedef /* [public] */ struct __MIDL___MIDL_itf_sbe_0000_0015_0002
    {
    DWORD Version;
    DWORD StreamId;
    BOOL Default;
    BOOL Creation;
    DWORD Reserved;
    GUID guidSubMediaType;
    GUID guidFormatType;
    AM_MEDIA_TYPE MediaType;
    } 	DVR_STREAM_DESC;



extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0015_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_0015_v0_0_s_ifspec;

#ifndef __ISBE2GlobalEvent_INTERFACE_DEFINED__
#define __ISBE2GlobalEvent_INTERFACE_DEFINED__

/* interface ISBE2GlobalEvent */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_ISBE2GlobalEvent;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("caede759-b6b1-11db-a578-0018f3fa24c6")
    ISBE2GlobalEvent : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetEvent( 
            /* [in] */ __RPC__in REFGUID idEvt,
            /* [in] */ ULONG param1,
            /* [in] */ ULONG param2,
            /* [in] */ ULONG param3,
            /* [in] */ ULONG param4,
            /* [out] */ __RPC__out BOOL *pSpanning,
            /* [out][in] */ __RPC__inout DWORD *pcb,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcb) BYTE *pb) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISBE2GlobalEventVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISBE2GlobalEvent * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISBE2GlobalEvent * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISBE2GlobalEvent * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetEvent )( 
            __RPC__in ISBE2GlobalEvent * This,
            /* [in] */ __RPC__in REFGUID idEvt,
            /* [in] */ ULONG param1,
            /* [in] */ ULONG param2,
            /* [in] */ ULONG param3,
            /* [in] */ ULONG param4,
            /* [out] */ __RPC__out BOOL *pSpanning,
            /* [out][in] */ __RPC__inout DWORD *pcb,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcb) BYTE *pb);
        
        END_INTERFACE
    } ISBE2GlobalEventVtbl;

    interface ISBE2GlobalEvent
    {
        CONST_VTBL struct ISBE2GlobalEventVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISBE2GlobalEvent_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISBE2GlobalEvent_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISBE2GlobalEvent_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISBE2GlobalEvent_GetEvent(This,idEvt,param1,param2,param3,param4,pSpanning,pcb,pb)	\
    ( (This)->lpVtbl -> GetEvent(This,idEvt,param1,param2,param3,param4,pSpanning,pcb,pb) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISBE2GlobalEvent_INTERFACE_DEFINED__ */


#ifndef __ISBE2GlobalEvent2_INTERFACE_DEFINED__
#define __ISBE2GlobalEvent2_INTERFACE_DEFINED__

/* interface ISBE2GlobalEvent2 */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_ISBE2GlobalEvent2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("6D8309BF-00FE-4506-8B03-F8C65B5C9B39")
    ISBE2GlobalEvent2 : public ISBE2GlobalEvent
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetEventEx( 
            /* [in] */ __RPC__in REFGUID idEvt,
            /* [in] */ ULONG param1,
            /* [in] */ ULONG param2,
            /* [in] */ ULONG param3,
            /* [in] */ ULONG param4,
            /* [out] */ __RPC__out BOOL *pSpanning,
            /* [out][in] */ __RPC__inout DWORD *pcb,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcb) BYTE *pb,
            /* [out] */ __RPC__out REFERENCE_TIME *pStreamTime) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISBE2GlobalEvent2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISBE2GlobalEvent2 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISBE2GlobalEvent2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISBE2GlobalEvent2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetEvent )( 
            __RPC__in ISBE2GlobalEvent2 * This,
            /* [in] */ __RPC__in REFGUID idEvt,
            /* [in] */ ULONG param1,
            /* [in] */ ULONG param2,
            /* [in] */ ULONG param3,
            /* [in] */ ULONG param4,
            /* [out] */ __RPC__out BOOL *pSpanning,
            /* [out][in] */ __RPC__inout DWORD *pcb,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcb) BYTE *pb);
        
        HRESULT ( STDMETHODCALLTYPE *GetEventEx )( 
            __RPC__in ISBE2GlobalEvent2 * This,
            /* [in] */ __RPC__in REFGUID idEvt,
            /* [in] */ ULONG param1,
            /* [in] */ ULONG param2,
            /* [in] */ ULONG param3,
            /* [in] */ ULONG param4,
            /* [out] */ __RPC__out BOOL *pSpanning,
            /* [out][in] */ __RPC__inout DWORD *pcb,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcb) BYTE *pb,
            /* [out] */ __RPC__out REFERENCE_TIME *pStreamTime);
        
        END_INTERFACE
    } ISBE2GlobalEvent2Vtbl;

    interface ISBE2GlobalEvent2
    {
        CONST_VTBL struct ISBE2GlobalEvent2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISBE2GlobalEvent2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISBE2GlobalEvent2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISBE2GlobalEvent2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISBE2GlobalEvent2_GetEvent(This,idEvt,param1,param2,param3,param4,pSpanning,pcb,pb)	\
    ( (This)->lpVtbl -> GetEvent(This,idEvt,param1,param2,param3,param4,pSpanning,pcb,pb) ) 


#define ISBE2GlobalEvent2_GetEventEx(This,idEvt,param1,param2,param3,param4,pSpanning,pcb,pb,pStreamTime)	\
    ( (This)->lpVtbl -> GetEventEx(This,idEvt,param1,param2,param3,param4,pSpanning,pcb,pb,pStreamTime) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISBE2GlobalEvent2_INTERFACE_DEFINED__ */


#ifndef __ISBE2SpanningEvent_INTERFACE_DEFINED__
#define __ISBE2SpanningEvent_INTERFACE_DEFINED__

/* interface ISBE2SpanningEvent */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_ISBE2SpanningEvent;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("caede760-b6b1-11db-a578-0018f3fa24c6")
    ISBE2SpanningEvent : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetEvent( 
            /* [in] */ __RPC__in REFGUID idEvt,
            /* [in] */ SBE2_STREAM_ID streamId,
            /* [out][in] */ __RPC__inout DWORD *pcb,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcb) BYTE *pb) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISBE2SpanningEventVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISBE2SpanningEvent * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISBE2SpanningEvent * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISBE2SpanningEvent * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetEvent )( 
            __RPC__in ISBE2SpanningEvent * This,
            /* [in] */ __RPC__in REFGUID idEvt,
            /* [in] */ SBE2_STREAM_ID streamId,
            /* [out][in] */ __RPC__inout DWORD *pcb,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcb) BYTE *pb);
        
        END_INTERFACE
    } ISBE2SpanningEventVtbl;

    interface ISBE2SpanningEvent
    {
        CONST_VTBL struct ISBE2SpanningEventVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISBE2SpanningEvent_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISBE2SpanningEvent_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISBE2SpanningEvent_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISBE2SpanningEvent_GetEvent(This,idEvt,streamId,pcb,pb)	\
    ( (This)->lpVtbl -> GetEvent(This,idEvt,streamId,pcb,pb) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISBE2SpanningEvent_INTERFACE_DEFINED__ */


#ifndef __ISBE2Crossbar_INTERFACE_DEFINED__
#define __ISBE2Crossbar_INTERFACE_DEFINED__

/* interface ISBE2Crossbar */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_ISBE2Crossbar;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("547b6d26-3226-487e-8253-8aa168749434")
    ISBE2Crossbar : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE EnableDefaultMode( 
            /* [in] */ DWORD DefaultFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetInitialProfile( 
            /* [out] */ __RPC__deref_out_opt ISBE2MediaTypeProfile **ppProfile) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetOutputProfile( 
            /* [in] */ __RPC__in_opt ISBE2MediaTypeProfile *pProfile,
            /* [out] */ __RPC__out DWORD *pcOutputPins,
            /* [out] */ __RPC__deref_out_opt IPin **ppOutputPins) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumStreams( 
            /* [out] */ __RPC__deref_out_opt ISBE2EnumStream **ppStreams) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISBE2CrossbarVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISBE2Crossbar * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISBE2Crossbar * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISBE2Crossbar * This);
        
        HRESULT ( STDMETHODCALLTYPE *EnableDefaultMode )( 
            __RPC__in ISBE2Crossbar * This,
            /* [in] */ DWORD DefaultFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetInitialProfile )( 
            __RPC__in ISBE2Crossbar * This,
            /* [out] */ __RPC__deref_out_opt ISBE2MediaTypeProfile **ppProfile);
        
        HRESULT ( STDMETHODCALLTYPE *SetOutputProfile )( 
            __RPC__in ISBE2Crossbar * This,
            /* [in] */ __RPC__in_opt ISBE2MediaTypeProfile *pProfile,
            /* [out] */ __RPC__out DWORD *pcOutputPins,
            /* [out] */ __RPC__deref_out_opt IPin **ppOutputPins);
        
        HRESULT ( STDMETHODCALLTYPE *EnumStreams )( 
            __RPC__in ISBE2Crossbar * This,
            /* [out] */ __RPC__deref_out_opt ISBE2EnumStream **ppStreams);
        
        END_INTERFACE
    } ISBE2CrossbarVtbl;

    interface ISBE2Crossbar
    {
        CONST_VTBL struct ISBE2CrossbarVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISBE2Crossbar_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISBE2Crossbar_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISBE2Crossbar_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISBE2Crossbar_EnableDefaultMode(This,DefaultFlags)	\
    ( (This)->lpVtbl -> EnableDefaultMode(This,DefaultFlags) ) 

#define ISBE2Crossbar_GetInitialProfile(This,ppProfile)	\
    ( (This)->lpVtbl -> GetInitialProfile(This,ppProfile) ) 

#define ISBE2Crossbar_SetOutputProfile(This,pProfile,pcOutputPins,ppOutputPins)	\
    ( (This)->lpVtbl -> SetOutputProfile(This,pProfile,pcOutputPins,ppOutputPins) ) 

#define ISBE2Crossbar_EnumStreams(This,ppStreams)	\
    ( (This)->lpVtbl -> EnumStreams(This,ppStreams) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISBE2Crossbar_INTERFACE_DEFINED__ */


#ifndef __ISBE2StreamMap_INTERFACE_DEFINED__
#define __ISBE2StreamMap_INTERFACE_DEFINED__

/* interface ISBE2StreamMap */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_ISBE2StreamMap;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("667c7745-85b1-4c55-ae55-4e25056159fc")
    ISBE2StreamMap : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE MapStream( 
            /* [in] */ SBE2_STREAM_ID Stream) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE UnmapStream( 
            /* [in] */ SBE2_STREAM_ID Stream) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumMappedStreams( 
            /* [out] */ __RPC__deref_out_opt ISBE2EnumStream **ppStreams) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISBE2StreamMapVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISBE2StreamMap * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISBE2StreamMap * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISBE2StreamMap * This);
        
        HRESULT ( STDMETHODCALLTYPE *MapStream )( 
            __RPC__in ISBE2StreamMap * This,
            /* [in] */ SBE2_STREAM_ID Stream);
        
        HRESULT ( STDMETHODCALLTYPE *UnmapStream )( 
            __RPC__in ISBE2StreamMap * This,
            /* [in] */ SBE2_STREAM_ID Stream);
        
        HRESULT ( STDMETHODCALLTYPE *EnumMappedStreams )( 
            __RPC__in ISBE2StreamMap * This,
            /* [out] */ __RPC__deref_out_opt ISBE2EnumStream **ppStreams);
        
        END_INTERFACE
    } ISBE2StreamMapVtbl;

    interface ISBE2StreamMap
    {
        CONST_VTBL struct ISBE2StreamMapVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISBE2StreamMap_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISBE2StreamMap_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISBE2StreamMap_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISBE2StreamMap_MapStream(This,Stream)	\
    ( (This)->lpVtbl -> MapStream(This,Stream) ) 

#define ISBE2StreamMap_UnmapStream(This,Stream)	\
    ( (This)->lpVtbl -> UnmapStream(This,Stream) ) 

#define ISBE2StreamMap_EnumMappedStreams(This,ppStreams)	\
    ( (This)->lpVtbl -> EnumMappedStreams(This,ppStreams) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISBE2StreamMap_INTERFACE_DEFINED__ */


#ifndef __ISBE2EnumStream_INTERFACE_DEFINED__
#define __ISBE2EnumStream_INTERFACE_DEFINED__

/* interface ISBE2EnumStream */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_ISBE2EnumStream;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("f7611092-9fbc-46ec-a7c7-548ea78b71a4")
    ISBE2EnumStream : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Next( 
            /* [in] */ ULONG cRequest,
            /* [size_is][out][in] */ __RPC__inout_ecount_full(cRequest) SBE2_STREAM_DESC *pStreamDesc,
            /* [out] */ __RPC__out ULONG *pcReceived) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Skip( 
            /* [in] */ ULONG cRecords) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Clone( 
            /* [out] */ __RPC__deref_out_opt ISBE2EnumStream **ppIEnumStream) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISBE2EnumStreamVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISBE2EnumStream * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISBE2EnumStream * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISBE2EnumStream * This);
        
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            __RPC__in ISBE2EnumStream * This,
            /* [in] */ ULONG cRequest,
            /* [size_is][out][in] */ __RPC__inout_ecount_full(cRequest) SBE2_STREAM_DESC *pStreamDesc,
            /* [out] */ __RPC__out ULONG *pcReceived);
        
        HRESULT ( STDMETHODCALLTYPE *Skip )( 
            __RPC__in ISBE2EnumStream * This,
            /* [in] */ ULONG cRecords);
        
        HRESULT ( STDMETHODCALLTYPE *Reset )( 
            __RPC__in ISBE2EnumStream * This);
        
        HRESULT ( STDMETHODCALLTYPE *Clone )( 
            __RPC__in ISBE2EnumStream * This,
            /* [out] */ __RPC__deref_out_opt ISBE2EnumStream **ppIEnumStream);
        
        END_INTERFACE
    } ISBE2EnumStreamVtbl;

    interface ISBE2EnumStream
    {
        CONST_VTBL struct ISBE2EnumStreamVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISBE2EnumStream_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISBE2EnumStream_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISBE2EnumStream_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISBE2EnumStream_Next(This,cRequest,pStreamDesc,pcReceived)	\
    ( (This)->lpVtbl -> Next(This,cRequest,pStreamDesc,pcReceived) ) 

#define ISBE2EnumStream_Skip(This,cRecords)	\
    ( (This)->lpVtbl -> Skip(This,cRecords) ) 

#define ISBE2EnumStream_Reset(This)	\
    ( (This)->lpVtbl -> Reset(This) ) 

#define ISBE2EnumStream_Clone(This,ppIEnumStream)	\
    ( (This)->lpVtbl -> Clone(This,ppIEnumStream) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISBE2EnumStream_INTERFACE_DEFINED__ */


#ifndef __ISBE2MediaTypeProfile_INTERFACE_DEFINED__
#define __ISBE2MediaTypeProfile_INTERFACE_DEFINED__

/* interface ISBE2MediaTypeProfile */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_ISBE2MediaTypeProfile;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("f238267d-4671-40d7-997e-25dc32cfed2a")
    ISBE2MediaTypeProfile : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetStreamCount( 
            /* [out] */ __RPC__out DWORD *pCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetStream( 
            /* [in] */ DWORD Index,
            /* [out] */ __RPC__deref_out_opt AM_MEDIA_TYPE **ppMediaType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE AddStream( 
            /* [in] */ __RPC__in AM_MEDIA_TYPE *pMediaType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DeleteStream( 
            /* [in] */ DWORD Index) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISBE2MediaTypeProfileVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISBE2MediaTypeProfile * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISBE2MediaTypeProfile * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISBE2MediaTypeProfile * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetStreamCount )( 
            __RPC__in ISBE2MediaTypeProfile * This,
            /* [out] */ __RPC__out DWORD *pCount);
        
        HRESULT ( STDMETHODCALLTYPE *GetStream )( 
            __RPC__in ISBE2MediaTypeProfile * This,
            /* [in] */ DWORD Index,
            /* [out] */ __RPC__deref_out_opt AM_MEDIA_TYPE **ppMediaType);
        
        HRESULT ( STDMETHODCALLTYPE *AddStream )( 
            __RPC__in ISBE2MediaTypeProfile * This,
            /* [in] */ __RPC__in AM_MEDIA_TYPE *pMediaType);
        
        HRESULT ( STDMETHODCALLTYPE *DeleteStream )( 
            __RPC__in ISBE2MediaTypeProfile * This,
            /* [in] */ DWORD Index);
        
        END_INTERFACE
    } ISBE2MediaTypeProfileVtbl;

    interface ISBE2MediaTypeProfile
    {
        CONST_VTBL struct ISBE2MediaTypeProfileVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISBE2MediaTypeProfile_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISBE2MediaTypeProfile_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISBE2MediaTypeProfile_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISBE2MediaTypeProfile_GetStreamCount(This,pCount)	\
    ( (This)->lpVtbl -> GetStreamCount(This,pCount) ) 

#define ISBE2MediaTypeProfile_GetStream(This,Index,ppMediaType)	\
    ( (This)->lpVtbl -> GetStream(This,Index,ppMediaType) ) 

#define ISBE2MediaTypeProfile_AddStream(This,pMediaType)	\
    ( (This)->lpVtbl -> AddStream(This,pMediaType) ) 

#define ISBE2MediaTypeProfile_DeleteStream(This,Index)	\
    ( (This)->lpVtbl -> DeleteStream(This,Index) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISBE2MediaTypeProfile_INTERFACE_DEFINED__ */


#ifndef __ISBE2FileScan_INTERFACE_DEFINED__
#define __ISBE2FileScan_INTERFACE_DEFINED__

/* interface ISBE2FileScan */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_ISBE2FileScan;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("3E2BF5A5-4F96-4899-A1A3-75E8BE9A5AC0")
    ISBE2FileScan : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE RepairFile( 
            /* [in] */ __RPC__in LPCWSTR filename) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISBE2FileScanVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in ISBE2FileScan * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in ISBE2FileScan * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in ISBE2FileScan * This);
        
        HRESULT ( STDMETHODCALLTYPE *RepairFile )( 
            __RPC__in ISBE2FileScan * This,
            /* [in] */ __RPC__in LPCWSTR filename);
        
        END_INTERFACE
    } ISBE2FileScanVtbl;

    interface ISBE2FileScan
    {
        CONST_VTBL struct ISBE2FileScanVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISBE2FileScan_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ISBE2FileScan_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ISBE2FileScan_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ISBE2FileScan_RepairFile(This,filename)	\
    ( (This)->lpVtbl -> RepairFile(This,filename) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ISBE2FileScan_INTERFACE_DEFINED__ */


/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



