

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


 /* File created by MIDL compiler version 6.00.0366 */
/* at Wed May 20 19:07:03 2009
 */
/* Compiler settings for ..\..\builds\Release_Win32\_MediaDv.idl:
    Oicf, W1, Zp8, env=Win32 (32b run)
    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__ 475
#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 ___MediaDv_h__
#define ___MediaDv_h__

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

/* Forward Declarations */ 

#ifndef __IRsMediaDvNodeFactory_FWD_DEFINED__
#define __IRsMediaDvNodeFactory_FWD_DEFINED__
typedef interface IRsMediaDvNodeFactory IRsMediaDvNodeFactory;
#endif 	/* __IRsMediaDvNodeFactory_FWD_DEFINED__ */


#ifndef __IRsMediaDvCmdFactory_FWD_DEFINED__
#define __IRsMediaDvCmdFactory_FWD_DEFINED__
typedef interface IRsMediaDvCmdFactory IRsMediaDvCmdFactory;
#endif 	/* __IRsMediaDvCmdFactory_FWD_DEFINED__ */


#ifndef __IRsMediaDvDataObjFactory_FWD_DEFINED__
#define __IRsMediaDvDataObjFactory_FWD_DEFINED__
typedef interface IRsMediaDvDataObjFactory IRsMediaDvDataObjFactory;
#endif 	/* __IRsMediaDvDataObjFactory_FWD_DEFINED__ */


#ifndef __IRsSndCaptureCallback_FWD_DEFINED__
#define __IRsSndCaptureCallback_FWD_DEFINED__
typedef interface IRsSndCaptureCallback IRsSndCaptureCallback;
#endif 	/* __IRsSndCaptureCallback_FWD_DEFINED__ */


#ifndef __IRsSoundCapture_FWD_DEFINED__
#define __IRsSoundCapture_FWD_DEFINED__
typedef interface IRsSoundCapture IRsSoundCapture;
#endif 	/* __IRsSoundCapture_FWD_DEFINED__ */


#ifndef __IRsAudioEncoder_FWD_DEFINED__
#define __IRsAudioEncoder_FWD_DEFINED__
typedef interface IRsAudioEncoder IRsAudioEncoder;
#endif 	/* __IRsAudioEncoder_FWD_DEFINED__ */


#ifndef __IRsAudioDecoder_FWD_DEFINED__
#define __IRsAudioDecoder_FWD_DEFINED__
typedef interface IRsAudioDecoder IRsAudioDecoder;
#endif 	/* __IRsAudioDecoder_FWD_DEFINED__ */


#ifndef __IRsSoundPlayback_FWD_DEFINED__
#define __IRsSoundPlayback_FWD_DEFINED__
typedef interface IRsSoundPlayback IRsSoundPlayback;
#endif 	/* __IRsSoundPlayback_FWD_DEFINED__ */


#ifndef __IRsSoundMixer_FWD_DEFINED__
#define __IRsSoundMixer_FWD_DEFINED__
typedef interface IRsSoundMixer IRsSoundMixer;
#endif 	/* __IRsSoundMixer_FWD_DEFINED__ */


#ifndef __IRpMediaDv_FWD_DEFINED__
#define __IRpMediaDv_FWD_DEFINED__
typedef interface IRpMediaDv IRpMediaDv;
#endif 	/* __IRpMediaDv_FWD_DEFINED__ */


#ifndef __IRiMediaDv_FWD_DEFINED__
#define __IRiMediaDv_FWD_DEFINED__
typedef interface IRiMediaDv IRiMediaDv;
#endif 	/* __IRiMediaDv_FWD_DEFINED__ */


#ifndef __CRpMediaDv_FWD_DEFINED__
#define __CRpMediaDv_FWD_DEFINED__

#ifdef __cplusplus
typedef class CRpMediaDv CRpMediaDv;
#else
typedef struct CRpMediaDv CRpMediaDv;
#endif /* __cplusplus */

#endif 	/* __CRpMediaDv_FWD_DEFINED__ */


#ifndef __CRiMediaDv_FWD_DEFINED__
#define __CRiMediaDv_FWD_DEFINED__

#ifdef __cplusplus
typedef class CRiMediaDv CRiMediaDv;
#else
typedef struct CRiMediaDv CRiMediaDv;
#endif /* __cplusplus */

#endif 	/* __CRiMediaDv_FWD_DEFINED__ */


/* header files for imported files */
#include "prsht.h"
#include "mshtml.h"
#include "mshtmhst.h"
#include "exdisp.h"
#include "objsafe.h"
#include "_kernel.h"
#include "_CommonData.h"

#ifdef __cplusplus
extern "C"{
#endif 

void * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void * ); 

#ifndef __IRsMediaDvNodeFactory_INTERFACE_DEFINED__
#define __IRsMediaDvNodeFactory_INTERFACE_DEFINED__

/* interface IRsMediaDvNodeFactory */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IRsMediaDvNodeFactory;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E0AEBD72-BC9B-43b5-8427-3D2230CD5B72")
    IRsMediaDvNodeFactory : public IUnknown
    {
    public:
    };
    
#else 	/* C style interface */

    typedef struct IRsMediaDvNodeFactoryVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsMediaDvNodeFactory * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsMediaDvNodeFactory * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsMediaDvNodeFactory * This);
        
        END_INTERFACE
    } IRsMediaDvNodeFactoryVtbl;

    interface IRsMediaDvNodeFactory
    {
        CONST_VTBL struct IRsMediaDvNodeFactoryVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IRsMediaDvNodeFactory_INTERFACE_DEFINED__ */


#ifndef __IRsMediaDvCmdFactory_INTERFACE_DEFINED__
#define __IRsMediaDvCmdFactory_INTERFACE_DEFINED__

/* interface IRsMediaDvCmdFactory */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IRsMediaDvCmdFactory;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("1DA8798A-5FD7-4869-8EBB-3F21FD447740")
    IRsMediaDvCmdFactory : public IUnknown
    {
    public:
    };
    
#else 	/* C style interface */

    typedef struct IRsMediaDvCmdFactoryVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsMediaDvCmdFactory * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsMediaDvCmdFactory * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsMediaDvCmdFactory * This);
        
        END_INTERFACE
    } IRsMediaDvCmdFactoryVtbl;

    interface IRsMediaDvCmdFactory
    {
        CONST_VTBL struct IRsMediaDvCmdFactoryVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IRsMediaDvCmdFactory_INTERFACE_DEFINED__ */


#ifndef __IRsMediaDvDataObjFactory_INTERFACE_DEFINED__
#define __IRsMediaDvDataObjFactory_INTERFACE_DEFINED__

/* interface IRsMediaDvDataObjFactory */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IRsMediaDvDataObjFactory;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("26C7FC50-03E3-4824-B2E3-DC92DD8856CF")
    IRsMediaDvDataObjFactory : public IUnknown
    {
    public:
    };
    
#else 	/* C style interface */

    typedef struct IRsMediaDvDataObjFactoryVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsMediaDvDataObjFactory * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsMediaDvDataObjFactory * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsMediaDvDataObjFactory * This);
        
        END_INTERFACE
    } IRsMediaDvDataObjFactoryVtbl;

    interface IRsMediaDvDataObjFactory
    {
        CONST_VTBL struct IRsMediaDvDataObjFactoryVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IRsMediaDvDataObjFactory_INTERFACE_DEFINED__ */


#ifndef __IRsSndCaptureCallback_INTERFACE_DEFINED__
#define __IRsSndCaptureCallback_INTERFACE_DEFINED__

/* interface IRsSndCaptureCallback */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IRsSndCaptureCallback;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("B037A020-C639-4794-A52D-116BBC564007")
    IRsSndCaptureCallback : public IUnknown
    {
    public:
        virtual /* [helpstring][local] */ HRESULT STDMETHODCALLTYPE RsSndCaptureCallback( 
            /* [in] */ void *pData1,
            /* [in] */ RtDWORD dwDataLen1,
            /* [in] */ void *pData2,
            /* [in] */ RtDWORD dwDataLen2) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IRsSndCaptureCallbackVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsSndCaptureCallback * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsSndCaptureCallback * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsSndCaptureCallback * This);
        
        /* [helpstring][local] */ HRESULT ( STDMETHODCALLTYPE *RsSndCaptureCallback )( 
            IRsSndCaptureCallback * This,
            /* [in] */ void *pData1,
            /* [in] */ RtDWORD dwDataLen1,
            /* [in] */ void *pData2,
            /* [in] */ RtDWORD dwDataLen2);
        
        END_INTERFACE
    } IRsSndCaptureCallbackVtbl;

    interface IRsSndCaptureCallback
    {
        CONST_VTBL struct IRsSndCaptureCallbackVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IRsSndCaptureCallback_RsSndCaptureCallback(This,pData1,dwDataLen1,pData2,dwDataLen2)	\
    (This)->lpVtbl -> RsSndCaptureCallback(This,pData1,dwDataLen1,pData2,dwDataLen2)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][local] */ HRESULT STDMETHODCALLTYPE IRsSndCaptureCallback_RsSndCaptureCallback_Proxy( 
    IRsSndCaptureCallback * This,
    /* [in] */ void *pData1,
    /* [in] */ RtDWORD dwDataLen1,
    /* [in] */ void *pData2,
    /* [in] */ RtDWORD dwDataLen2);


void __RPC_STUB IRsSndCaptureCallback_RsSndCaptureCallback_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IRsSndCaptureCallback_INTERFACE_DEFINED__ */


#ifndef __IRsSoundCapture_INTERFACE_DEFINED__
#define __IRsSoundCapture_INTERFACE_DEFINED__

/* interface IRsSoundCapture */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IRsSoundCapture;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("FE1D4BA7-A0C3-46cf-85AD-540092722257")
    IRsSoundCapture : public IRsObject
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Initialize( void) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetAvailableWaveFormatsIndTable( 
            /* [out] */ RtBOOL **ppabInputFormatSupported,
            /* [out] */ RtDWORD *pdwNumFormats) = 0;
        
        virtual /* [helpstring][local] */ HRESULT STDMETHODCALLTYPE GetWaveFormatFromIndex( 
            /* [in] */ RtDWORD dwFormatIndex,
            /* [out][in] */ void *pWfx) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCaptureBuffersSize( 
            /* [out] */ RtDWORD *pdwBufferSize,
            /* [out] */ RtDWORD *pdwBuffersCount) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetCaptureFormat( 
            /* [in] */ RtDWORD dwWavIndex,
            /* [in] */ RtDWORD dwRecBufferSize) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCurrCaptureFormat( 
            /* [retval][out] */ RtDWORD *pdwFormatIndex) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE StartCapturing( 
            /* [in] */ IRsSndCaptureCallback *pSndCaptCallback) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE IsCapturing( void) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE StopCapturing( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IRsSoundCaptureVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsSoundCapture * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsSoundCapture * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsSoundCapture * This);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassId )( 
            IRsSoundCapture * This,
            /* [retval][out] */ GUID *pVal);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassName )( 
            IRsSoundCapture * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IRsSoundCapture * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetAvailableWaveFormatsIndTable )( 
            IRsSoundCapture * This,
            /* [out] */ RtBOOL **ppabInputFormatSupported,
            /* [out] */ RtDWORD *pdwNumFormats);
        
        /* [helpstring][local] */ HRESULT ( STDMETHODCALLTYPE *GetWaveFormatFromIndex )( 
            IRsSoundCapture * This,
            /* [in] */ RtDWORD dwFormatIndex,
            /* [out][in] */ void *pWfx);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCaptureBuffersSize )( 
            IRsSoundCapture * This,
            /* [out] */ RtDWORD *pdwBufferSize,
            /* [out] */ RtDWORD *pdwBuffersCount);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetCaptureFormat )( 
            IRsSoundCapture * This,
            /* [in] */ RtDWORD dwWavIndex,
            /* [in] */ RtDWORD dwRecBufferSize);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCurrCaptureFormat )( 
            IRsSoundCapture * This,
            /* [retval][out] */ RtDWORD *pdwFormatIndex);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *StartCapturing )( 
            IRsSoundCapture * This,
            /* [in] */ IRsSndCaptureCallback *pSndCaptCallback);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *IsCapturing )( 
            IRsSoundCapture * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *StopCapturing )( 
            IRsSoundCapture * This);
        
        END_INTERFACE
    } IRsSoundCaptureVtbl;

    interface IRsSoundCapture
    {
        CONST_VTBL struct IRsSoundCaptureVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IRsSoundCapture_get_ClassId(This,pVal)	\
    (This)->lpVtbl -> get_ClassId(This,pVal)

#define IRsSoundCapture_get_ClassName(This,pVal)	\
    (This)->lpVtbl -> get_ClassName(This,pVal)


#define IRsSoundCapture_Initialize(This)	\
    (This)->lpVtbl -> Initialize(This)

#define IRsSoundCapture_GetAvailableWaveFormatsIndTable(This,ppabInputFormatSupported,pdwNumFormats)	\
    (This)->lpVtbl -> GetAvailableWaveFormatsIndTable(This,ppabInputFormatSupported,pdwNumFormats)

#define IRsSoundCapture_GetWaveFormatFromIndex(This,dwFormatIndex,pWfx)	\
    (This)->lpVtbl -> GetWaveFormatFromIndex(This,dwFormatIndex,pWfx)

#define IRsSoundCapture_GetCaptureBuffersSize(This,pdwBufferSize,pdwBuffersCount)	\
    (This)->lpVtbl -> GetCaptureBuffersSize(This,pdwBufferSize,pdwBuffersCount)

#define IRsSoundCapture_SetCaptureFormat(This,dwWavIndex,dwRecBufferSize)	\
    (This)->lpVtbl -> SetCaptureFormat(This,dwWavIndex,dwRecBufferSize)

#define IRsSoundCapture_GetCurrCaptureFormat(This,pdwFormatIndex)	\
    (This)->lpVtbl -> GetCurrCaptureFormat(This,pdwFormatIndex)

#define IRsSoundCapture_StartCapturing(This,pSndCaptCallback)	\
    (This)->lpVtbl -> StartCapturing(This,pSndCaptCallback)

#define IRsSoundCapture_IsCapturing(This)	\
    (This)->lpVtbl -> IsCapturing(This)

#define IRsSoundCapture_StopCapturing(This)	\
    (This)->lpVtbl -> StopCapturing(This)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_Initialize_Proxy( 
    IRsSoundCapture * This);


void __RPC_STUB IRsSoundCapture_Initialize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_GetAvailableWaveFormatsIndTable_Proxy( 
    IRsSoundCapture * This,
    /* [out] */ RtBOOL **ppabInputFormatSupported,
    /* [out] */ RtDWORD *pdwNumFormats);


void __RPC_STUB IRsSoundCapture_GetAvailableWaveFormatsIndTable_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][local] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_GetWaveFormatFromIndex_Proxy( 
    IRsSoundCapture * This,
    /* [in] */ RtDWORD dwFormatIndex,
    /* [out][in] */ void *pWfx);


void __RPC_STUB IRsSoundCapture_GetWaveFormatFromIndex_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_GetCaptureBuffersSize_Proxy( 
    IRsSoundCapture * This,
    /* [out] */ RtDWORD *pdwBufferSize,
    /* [out] */ RtDWORD *pdwBuffersCount);


void __RPC_STUB IRsSoundCapture_GetCaptureBuffersSize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_SetCaptureFormat_Proxy( 
    IRsSoundCapture * This,
    /* [in] */ RtDWORD dwWavIndex,
    /* [in] */ RtDWORD dwRecBufferSize);


void __RPC_STUB IRsSoundCapture_SetCaptureFormat_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_GetCurrCaptureFormat_Proxy( 
    IRsSoundCapture * This,
    /* [retval][out] */ RtDWORD *pdwFormatIndex);


void __RPC_STUB IRsSoundCapture_GetCurrCaptureFormat_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_StartCapturing_Proxy( 
    IRsSoundCapture * This,
    /* [in] */ IRsSndCaptureCallback *pSndCaptCallback);


void __RPC_STUB IRsSoundCapture_StartCapturing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_IsCapturing_Proxy( 
    IRsSoundCapture * This);


void __RPC_STUB IRsSoundCapture_IsCapturing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundCapture_StopCapturing_Proxy( 
    IRsSoundCapture * This);


void __RPC_STUB IRsSoundCapture_StopCapturing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IRsSoundCapture_INTERFACE_DEFINED__ */


#ifndef __IRsAudioEncoder_INTERFACE_DEFINED__
#define __IRsAudioEncoder_INTERFACE_DEFINED__

/* interface IRsAudioEncoder */
/* [unique][helpstring][uuid][local][object] */ 


EXTERN_C const IID IID_IRsAudioEncoder;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("A396348E-5B29-4bfa-8DA0-42915879B3CC")
    IRsAudioEncoder : public IRsObject
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ RtDWORD dwChannels,
            /* [in] */ RtLong lRate,
            /* [in] */ RtFloat fQuality,
            /* [in] */ RtBYTE bBits,
            /* [out][in] */ RtVoid **ppHeaderData,
            /* [out] */ RtDWORD *pdwHeaderDataLen) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EncodeOneChannel( 
            /* [in] */ const RtVoid *pData,
            /* [in] */ RtDWORD dwDataLen,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen,
            /* [in] */ RtBOOL bFlush) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EncodeTwoChannels( 
            /* [in] */ const RtVoid *pData1,
            /* [in] */ RtDWORD dwDataLen1,
            /* [in] */ const RtVoid *pData2,
            /* [in] */ RtDWORD dwDataLen2,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen,
            /* [in] */ RtBOOL bFlush) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Encode( 
            /* [in] */ const RtVoid *pData,
            /* [in] */ RtDWORD dwDataLen,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen,
            /* [in] */ RtBOOL bFlush) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Finalize( 
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE AddCustomData( 
            /* [in] */ const RtVoid *pCustData,
            /* [in] */ RtDWORD dwCustDataLen,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen) = 0;
        
        virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_VolumeCorrection( 
            /* [retval][out] */ RtFloat *pfVal) = 0;
        
        virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_VolumeCorrection( 
            /* [in] */ RtFloat fVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IRsAudioEncoderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsAudioEncoder * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsAudioEncoder * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsAudioEncoder * This);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassId )( 
            IRsAudioEncoder * This,
            /* [retval][out] */ GUID *pVal);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassName )( 
            IRsAudioEncoder * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IRsAudioEncoder * This,
            /* [in] */ RtDWORD dwChannels,
            /* [in] */ RtLong lRate,
            /* [in] */ RtFloat fQuality,
            /* [in] */ RtBYTE bBits,
            /* [out][in] */ RtVoid **ppHeaderData,
            /* [out] */ RtDWORD *pdwHeaderDataLen);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EncodeOneChannel )( 
            IRsAudioEncoder * This,
            /* [in] */ const RtVoid *pData,
            /* [in] */ RtDWORD dwDataLen,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen,
            /* [in] */ RtBOOL bFlush);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EncodeTwoChannels )( 
            IRsAudioEncoder * This,
            /* [in] */ const RtVoid *pData1,
            /* [in] */ RtDWORD dwDataLen1,
            /* [in] */ const RtVoid *pData2,
            /* [in] */ RtDWORD dwDataLen2,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen,
            /* [in] */ RtBOOL bFlush);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Encode )( 
            IRsAudioEncoder * This,
            /* [in] */ const RtVoid *pData,
            /* [in] */ RtDWORD dwDataLen,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen,
            /* [in] */ RtBOOL bFlush);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Finalize )( 
            IRsAudioEncoder * This,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *AddCustomData )( 
            IRsAudioEncoder * This,
            /* [in] */ const RtVoid *pCustData,
            /* [in] */ RtDWORD dwCustDataLen,
            /* [out][in] */ RtVoid **ppEncodedData,
            /* [out] */ RtDWORD *pdwEncodedDataLen);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VolumeCorrection )( 
            IRsAudioEncoder * This,
            /* [retval][out] */ RtFloat *pfVal);
        
        /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_VolumeCorrection )( 
            IRsAudioEncoder * This,
            /* [in] */ RtFloat fVal);
        
        END_INTERFACE
    } IRsAudioEncoderVtbl;

    interface IRsAudioEncoder
    {
        CONST_VTBL struct IRsAudioEncoderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IRsAudioEncoder_get_ClassId(This,pVal)	\
    (This)->lpVtbl -> get_ClassId(This,pVal)

#define IRsAudioEncoder_get_ClassName(This,pVal)	\
    (This)->lpVtbl -> get_ClassName(This,pVal)


#define IRsAudioEncoder_Initialize(This,dwChannels,lRate,fQuality,bBits,ppHeaderData,pdwHeaderDataLen)	\
    (This)->lpVtbl -> Initialize(This,dwChannels,lRate,fQuality,bBits,ppHeaderData,pdwHeaderDataLen)

#define IRsAudioEncoder_EncodeOneChannel(This,pData,dwDataLen,ppEncodedData,pdwEncodedDataLen,bFlush)	\
    (This)->lpVtbl -> EncodeOneChannel(This,pData,dwDataLen,ppEncodedData,pdwEncodedDataLen,bFlush)

#define IRsAudioEncoder_EncodeTwoChannels(This,pData1,dwDataLen1,pData2,dwDataLen2,ppEncodedData,pdwEncodedDataLen,bFlush)	\
    (This)->lpVtbl -> EncodeTwoChannels(This,pData1,dwDataLen1,pData2,dwDataLen2,ppEncodedData,pdwEncodedDataLen,bFlush)

#define IRsAudioEncoder_Encode(This,pData,dwDataLen,ppEncodedData,pdwEncodedDataLen,bFlush)	\
    (This)->lpVtbl -> Encode(This,pData,dwDataLen,ppEncodedData,pdwEncodedDataLen,bFlush)

#define IRsAudioEncoder_Finalize(This,ppEncodedData,pdwEncodedDataLen)	\
    (This)->lpVtbl -> Finalize(This,ppEncodedData,pdwEncodedDataLen)

#define IRsAudioEncoder_AddCustomData(This,pCustData,dwCustDataLen,ppEncodedData,pdwEncodedDataLen)	\
    (This)->lpVtbl -> AddCustomData(This,pCustData,dwCustDataLen,ppEncodedData,pdwEncodedDataLen)

#define IRsAudioEncoder_get_VolumeCorrection(This,pfVal)	\
    (This)->lpVtbl -> get_VolumeCorrection(This,pfVal)

#define IRsAudioEncoder_put_VolumeCorrection(This,fVal)	\
    (This)->lpVtbl -> put_VolumeCorrection(This,fVal)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioEncoder_Initialize_Proxy( 
    IRsAudioEncoder * This,
    /* [in] */ RtDWORD dwChannels,
    /* [in] */ RtLong lRate,
    /* [in] */ RtFloat fQuality,
    /* [in] */ RtBYTE bBits,
    /* [out][in] */ RtVoid **ppHeaderData,
    /* [out] */ RtDWORD *pdwHeaderDataLen);


void __RPC_STUB IRsAudioEncoder_Initialize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioEncoder_EncodeOneChannel_Proxy( 
    IRsAudioEncoder * This,
    /* [in] */ const RtVoid *pData,
    /* [in] */ RtDWORD dwDataLen,
    /* [out][in] */ RtVoid **ppEncodedData,
    /* [out] */ RtDWORD *pdwEncodedDataLen,
    /* [in] */ RtBOOL bFlush);


void __RPC_STUB IRsAudioEncoder_EncodeOneChannel_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioEncoder_EncodeTwoChannels_Proxy( 
    IRsAudioEncoder * This,
    /* [in] */ const RtVoid *pData1,
    /* [in] */ RtDWORD dwDataLen1,
    /* [in] */ const RtVoid *pData2,
    /* [in] */ RtDWORD dwDataLen2,
    /* [out][in] */ RtVoid **ppEncodedData,
    /* [out] */ RtDWORD *pdwEncodedDataLen,
    /* [in] */ RtBOOL bFlush);


void __RPC_STUB IRsAudioEncoder_EncodeTwoChannels_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioEncoder_Encode_Proxy( 
    IRsAudioEncoder * This,
    /* [in] */ const RtVoid *pData,
    /* [in] */ RtDWORD dwDataLen,
    /* [out][in] */ RtVoid **ppEncodedData,
    /* [out] */ RtDWORD *pdwEncodedDataLen,
    /* [in] */ RtBOOL bFlush);


void __RPC_STUB IRsAudioEncoder_Encode_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioEncoder_Finalize_Proxy( 
    IRsAudioEncoder * This,
    /* [out][in] */ RtVoid **ppEncodedData,
    /* [out] */ RtDWORD *pdwEncodedDataLen);


void __RPC_STUB IRsAudioEncoder_Finalize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioEncoder_AddCustomData_Proxy( 
    IRsAudioEncoder * This,
    /* [in] */ const RtVoid *pCustData,
    /* [in] */ RtDWORD dwCustDataLen,
    /* [out][in] */ RtVoid **ppEncodedData,
    /* [out] */ RtDWORD *pdwEncodedDataLen);


void __RPC_STUB IRsAudioEncoder_AddCustomData_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IRsAudioEncoder_get_VolumeCorrection_Proxy( 
    IRsAudioEncoder * This,
    /* [retval][out] */ RtFloat *pfVal);


void __RPC_STUB IRsAudioEncoder_get_VolumeCorrection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IRsAudioEncoder_put_VolumeCorrection_Proxy( 
    IRsAudioEncoder * This,
    /* [in] */ RtFloat fVal);


void __RPC_STUB IRsAudioEncoder_put_VolumeCorrection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IRsAudioEncoder_INTERFACE_DEFINED__ */


#ifndef __IRsAudioDecoder_INTERFACE_DEFINED__
#define __IRsAudioDecoder_INTERFACE_DEFINED__

/* interface IRsAudioDecoder */
/* [unique][helpstring][uuid][local][object] */ 


EXTERN_C const IID IID_IRsAudioDecoder;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E3D23050-583B-4685-A7F5-5C54217C1D35")
    IRsAudioDecoder : public IRsObject
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ const RtVoid *pHeaderData,
            /* [in] */ RtDWORD dwHeaderDataLen) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStmParam( 
            /* [out] */ RtDWORD *pdwChannels,
            /* [out] */ RtLong *plRate,
            /* [out] */ RtBYTE *pbBits) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE DecodeOneChannel( 
            /* [in] */ const RtVoid *pEncodedData,
            /* [in] */ RtDWORD dwEncodedDataLen,
            /* [in] */ RtBYTE bBits,
            /* [in] */ RtDWORD dwMaxDataLen,
            /* [out][in] */ RtVoid **ppData,
            /* [out] */ RtDWORD *pdwDataLen) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE DecodeTwoChannels( 
            /* [in] */ const RtVoid *pEncodedData,
            /* [in] */ RtDWORD dwEncodedDataLen,
            /* [in] */ RtBYTE bBits,
            /* [in] */ RtDWORD dwMaxDataLen,
            /* [out][in] */ RtVoid **ppData1,
            /* [out][in] */ RtVoid **ppData2,
            /* [out] */ RtDWORD *pdwDataLen) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Decode( 
            /* [in] */ const RtVoid *pEncodedData,
            /* [in] */ RtDWORD dwEncodedDataLen,
            /* [in] */ RtBYTE bBits,
            /* [in] */ RtDWORD dwMaxDataLen,
            /* [out][in] */ RtVoid **ppData,
            /* [out] */ RtDWORD *pdwDataLen) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Finalize( void) = 0;
        
        virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_VolumeCorrection( 
            /* [retval][out] */ RtFloat *pfVal) = 0;
        
        virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_VolumeCorrection( 
            /* [in] */ RtFloat fVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IRsAudioDecoderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsAudioDecoder * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsAudioDecoder * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsAudioDecoder * This);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassId )( 
            IRsAudioDecoder * This,
            /* [retval][out] */ GUID *pVal);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassName )( 
            IRsAudioDecoder * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IRsAudioDecoder * This,
            /* [in] */ const RtVoid *pHeaderData,
            /* [in] */ RtDWORD dwHeaderDataLen);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStmParam )( 
            IRsAudioDecoder * This,
            /* [out] */ RtDWORD *pdwChannels,
            /* [out] */ RtLong *plRate,
            /* [out] */ RtBYTE *pbBits);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *DecodeOneChannel )( 
            IRsAudioDecoder * This,
            /* [in] */ const RtVoid *pEncodedData,
            /* [in] */ RtDWORD dwEncodedDataLen,
            /* [in] */ RtBYTE bBits,
            /* [in] */ RtDWORD dwMaxDataLen,
            /* [out][in] */ RtVoid **ppData,
            /* [out] */ RtDWORD *pdwDataLen);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *DecodeTwoChannels )( 
            IRsAudioDecoder * This,
            /* [in] */ const RtVoid *pEncodedData,
            /* [in] */ RtDWORD dwEncodedDataLen,
            /* [in] */ RtBYTE bBits,
            /* [in] */ RtDWORD dwMaxDataLen,
            /* [out][in] */ RtVoid **ppData1,
            /* [out][in] */ RtVoid **ppData2,
            /* [out] */ RtDWORD *pdwDataLen);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Decode )( 
            IRsAudioDecoder * This,
            /* [in] */ const RtVoid *pEncodedData,
            /* [in] */ RtDWORD dwEncodedDataLen,
            /* [in] */ RtBYTE bBits,
            /* [in] */ RtDWORD dwMaxDataLen,
            /* [out][in] */ RtVoid **ppData,
            /* [out] */ RtDWORD *pdwDataLen);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Finalize )( 
            IRsAudioDecoder * This);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VolumeCorrection )( 
            IRsAudioDecoder * This,
            /* [retval][out] */ RtFloat *pfVal);
        
        /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_VolumeCorrection )( 
            IRsAudioDecoder * This,
            /* [in] */ RtFloat fVal);
        
        END_INTERFACE
    } IRsAudioDecoderVtbl;

    interface IRsAudioDecoder
    {
        CONST_VTBL struct IRsAudioDecoderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IRsAudioDecoder_get_ClassId(This,pVal)	\
    (This)->lpVtbl -> get_ClassId(This,pVal)

#define IRsAudioDecoder_get_ClassName(This,pVal)	\
    (This)->lpVtbl -> get_ClassName(This,pVal)


#define IRsAudioDecoder_Initialize(This,pHeaderData,dwHeaderDataLen)	\
    (This)->lpVtbl -> Initialize(This,pHeaderData,dwHeaderDataLen)

#define IRsAudioDecoder_GetStmParam(This,pdwChannels,plRate,pbBits)	\
    (This)->lpVtbl -> GetStmParam(This,pdwChannels,plRate,pbBits)

#define IRsAudioDecoder_DecodeOneChannel(This,pEncodedData,dwEncodedDataLen,bBits,dwMaxDataLen,ppData,pdwDataLen)	\
    (This)->lpVtbl -> DecodeOneChannel(This,pEncodedData,dwEncodedDataLen,bBits,dwMaxDataLen,ppData,pdwDataLen)

#define IRsAudioDecoder_DecodeTwoChannels(This,pEncodedData,dwEncodedDataLen,bBits,dwMaxDataLen,ppData1,ppData2,pdwDataLen)	\
    (This)->lpVtbl -> DecodeTwoChannels(This,pEncodedData,dwEncodedDataLen,bBits,dwMaxDataLen,ppData1,ppData2,pdwDataLen)

#define IRsAudioDecoder_Decode(This,pEncodedData,dwEncodedDataLen,bBits,dwMaxDataLen,ppData,pdwDataLen)	\
    (This)->lpVtbl -> Decode(This,pEncodedData,dwEncodedDataLen,bBits,dwMaxDataLen,ppData,pdwDataLen)

#define IRsAudioDecoder_Finalize(This)	\
    (This)->lpVtbl -> Finalize(This)

#define IRsAudioDecoder_get_VolumeCorrection(This,pfVal)	\
    (This)->lpVtbl -> get_VolumeCorrection(This,pfVal)

#define IRsAudioDecoder_put_VolumeCorrection(This,fVal)	\
    (This)->lpVtbl -> put_VolumeCorrection(This,fVal)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioDecoder_Initialize_Proxy( 
    IRsAudioDecoder * This,
    /* [in] */ const RtVoid *pHeaderData,
    /* [in] */ RtDWORD dwHeaderDataLen);


void __RPC_STUB IRsAudioDecoder_Initialize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioDecoder_GetStmParam_Proxy( 
    IRsAudioDecoder * This,
    /* [out] */ RtDWORD *pdwChannels,
    /* [out] */ RtLong *plRate,
    /* [out] */ RtBYTE *pbBits);


void __RPC_STUB IRsAudioDecoder_GetStmParam_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioDecoder_DecodeOneChannel_Proxy( 
    IRsAudioDecoder * This,
    /* [in] */ const RtVoid *pEncodedData,
    /* [in] */ RtDWORD dwEncodedDataLen,
    /* [in] */ RtBYTE bBits,
    /* [in] */ RtDWORD dwMaxDataLen,
    /* [out][in] */ RtVoid **ppData,
    /* [out] */ RtDWORD *pdwDataLen);


void __RPC_STUB IRsAudioDecoder_DecodeOneChannel_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioDecoder_DecodeTwoChannels_Proxy( 
    IRsAudioDecoder * This,
    /* [in] */ const RtVoid *pEncodedData,
    /* [in] */ RtDWORD dwEncodedDataLen,
    /* [in] */ RtBYTE bBits,
    /* [in] */ RtDWORD dwMaxDataLen,
    /* [out][in] */ RtVoid **ppData1,
    /* [out][in] */ RtVoid **ppData2,
    /* [out] */ RtDWORD *pdwDataLen);


void __RPC_STUB IRsAudioDecoder_DecodeTwoChannels_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioDecoder_Decode_Proxy( 
    IRsAudioDecoder * This,
    /* [in] */ const RtVoid *pEncodedData,
    /* [in] */ RtDWORD dwEncodedDataLen,
    /* [in] */ RtBYTE bBits,
    /* [in] */ RtDWORD dwMaxDataLen,
    /* [out][in] */ RtVoid **ppData,
    /* [out] */ RtDWORD *pdwDataLen);


void __RPC_STUB IRsAudioDecoder_Decode_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsAudioDecoder_Finalize_Proxy( 
    IRsAudioDecoder * This);


void __RPC_STUB IRsAudioDecoder_Finalize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IRsAudioDecoder_get_VolumeCorrection_Proxy( 
    IRsAudioDecoder * This,
    /* [retval][out] */ RtFloat *pfVal);


void __RPC_STUB IRsAudioDecoder_get_VolumeCorrection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IRsAudioDecoder_put_VolumeCorrection_Proxy( 
    IRsAudioDecoder * This,
    /* [in] */ RtFloat fVal);


void __RPC_STUB IRsAudioDecoder_put_VolumeCorrection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IRsAudioDecoder_INTERFACE_DEFINED__ */


/* interface __MIDL_itf__MediaDv_1188 */
/* [local] */ 

typedef struct tagRsDSBPOSITIONNOTIFY
    {
    DWORD dwOffset;
    HANDLE hEventNotify;
    } 	RsDSBPOSITIONNOTIFY;

typedef struct tagRsWAVEFORMATEX
    {
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wBitsPerSample;
    WORD cbSize;
    } 	RsWAVEFORMATEX;

typedef struct tagRsSoundChannel
    {
    RtDWORD dwChannelId;
    void *pDSBuffer;
    RtDWORD dwBufferSize;
    RtDWORD dwNumNotifyEvents;
    RsDSBPOSITIONNOTIFY *paPosNotify;
    RsWAVEFORMATEX wfx;
    RtDWORD dwNextPlayPos;
    RtDWORD dwFilledSubBufs;
    RtDWORD dwLastBlockWritten;
    void *pCRsSoundDecrypt;
    void *pTmpSndBuffer;
    RtBOOL bChannel3D;
    RtBOOL bPlayInLoop;
    RtBOOL bRemoveAfterPlay;
    RtFloat fMaxDist;
    RtFloat fMinDist;
    RtBOOL bPlayingFromSource;
    } 	RsSoundChannel;



extern RPC_IF_HANDLE __MIDL_itf__MediaDv_1188_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf__MediaDv_1188_v0_0_s_ifspec;

#ifndef __IRsSoundPlayback_INTERFACE_DEFINED__
#define __IRsSoundPlayback_INTERFACE_DEFINED__

/* interface IRsSoundPlayback */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IRsSoundPlayback;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("B97DC8A3-20CB-4a07-9172-6C960293A109")
    IRsSoundPlayback : public IRsObject
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ HWND hDlg,
            /* [in] */ RtBOOL bEnable3D) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE AddChannel( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtDWORD dwBufferSize,
            /* [in] */ RtDWORD dwBuffersCount,
            /* [in] */ RtDWORD dwPrimaryChannels,
            /* [in] */ RtDWORD dwPrimaryFreq,
            /* [in] */ RtDWORD dwBitsPerSample) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Add3DChannel( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtDWORD dwBufferSize,
            /* [in] */ RtDWORD dwBuffersCount,
            /* [in] */ RtDWORD dwPrimaryChannels,
            /* [in] */ RtDWORD dwPrimaryFreq,
            /* [in] */ RtDWORD dwBitsPerSample,
            /* [in] */ RtFloat fMinDist,
            /* [in] */ RtFloat fMaxDist) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSoundBufferInfo( 
            /* [in] */ RtDWORD dwChannelId,
            /* [out] */ RtDWORD *pdwBufferSize,
            /* [out] */ RtDWORD *pdwBuffersCount,
            /* [out] */ RtDWORD *pdwUsedBuffersCount) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSoundStreamInfo( 
            /* [in] */ RtDWORD dwChannelId,
            /* [out] */ RtDWORD *pdwPrimaryChannels,
            /* [out] */ RtDWORD *pdwPrimaryFreq,
            /* [out] */ RtDWORD *pdwBitsPerSample) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetListener3DPosition( 
            /* [in] */ const RtPoint *pPos,
            /* [in] */ const RtPoint *pFrontOrient,
            /* [in] */ const RtPoint *pTopOrient) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetListener3DPosition( 
            /* [in] */ RtPoint *pPos,
            /* [in] */ RtPoint *pFrontOrient,
            /* [in] */ RtPoint *pTopOrient) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannel3DPosition( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ const RtPoint *pPos,
            /* [in] */ const RtPoint *pOrient) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannel3DPosition( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtPoint *pPos,
            /* [in] */ RtPoint *pOrient) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Commit3DChannelsChanges( void) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannelVolume( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtFloat fVolume) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannelMinDistance( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtFloat fVal) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannelMaxDistance( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtFloat fVal) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannelPan( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtFloat fPan) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetPlayInLoop( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtBOOL bPlayInLoop) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RemoveChannel( 
            /* [in] */ RtDWORD dwChannelId) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE AutoRemoveChannel( 
            /* [in] */ RtDWORD dwChannelId) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RemoveAllChannels( void) = 0;
        
        virtual /* [helpstring][local] */ HRESULT STDMETHODCALLTYPE PlayStreamBuffer( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ void *pData1,
            /* [in] */ void *pData2,
            /* [in] */ RtDWORD dwDataLen,
            /* [in] */ RtDWORD dwDelay) = 0;
        
        virtual /* [helpstring][local] */ HRESULT STDMETHODCALLTYPE PlaySoundFromFile( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ HMODULE hModule,
            /* [in] */ LPTSTR strFileName,
            /* [in] */ RtBOOL bPlayInLoop) = 0;
        
        virtual /* [helpstring][local] */ HRESULT STDMETHODCALLTYPE PlaySoundFromDO( 
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ IRdSound *pRdSound,
            /* [in] */ RtBOOL bPlayInLoop) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE IsPlayingFromSource( 
            /* [in] */ RtDWORD dwChannelId,
            /* [retval][out] */ RtBOOL *pbVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IRsSoundPlaybackVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsSoundPlayback * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsSoundPlayback * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsSoundPlayback * This);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassId )( 
            IRsSoundPlayback * This,
            /* [retval][out] */ GUID *pVal);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassName )( 
            IRsSoundPlayback * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IRsSoundPlayback * This,
            /* [in] */ HWND hDlg,
            /* [in] */ RtBOOL bEnable3D);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *AddChannel )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtDWORD dwBufferSize,
            /* [in] */ RtDWORD dwBuffersCount,
            /* [in] */ RtDWORD dwPrimaryChannels,
            /* [in] */ RtDWORD dwPrimaryFreq,
            /* [in] */ RtDWORD dwBitsPerSample);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Add3DChannel )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtDWORD dwBufferSize,
            /* [in] */ RtDWORD dwBuffersCount,
            /* [in] */ RtDWORD dwPrimaryChannels,
            /* [in] */ RtDWORD dwPrimaryFreq,
            /* [in] */ RtDWORD dwBitsPerSample,
            /* [in] */ RtFloat fMinDist,
            /* [in] */ RtFloat fMaxDist);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSoundBufferInfo )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [out] */ RtDWORD *pdwBufferSize,
            /* [out] */ RtDWORD *pdwBuffersCount,
            /* [out] */ RtDWORD *pdwUsedBuffersCount);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSoundStreamInfo )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [out] */ RtDWORD *pdwPrimaryChannels,
            /* [out] */ RtDWORD *pdwPrimaryFreq,
            /* [out] */ RtDWORD *pdwBitsPerSample);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetListener3DPosition )( 
            IRsSoundPlayback * This,
            /* [in] */ const RtPoint *pPos,
            /* [in] */ const RtPoint *pFrontOrient,
            /* [in] */ const RtPoint *pTopOrient);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetListener3DPosition )( 
            IRsSoundPlayback * This,
            /* [in] */ RtPoint *pPos,
            /* [in] */ RtPoint *pFrontOrient,
            /* [in] */ RtPoint *pTopOrient);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannel3DPosition )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ const RtPoint *pPos,
            /* [in] */ const RtPoint *pOrient);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannel3DPosition )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtPoint *pPos,
            /* [in] */ RtPoint *pOrient);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Commit3DChannelsChanges )( 
            IRsSoundPlayback * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannelVolume )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtFloat fVolume);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannelMinDistance )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtFloat fVal);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannelMaxDistance )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtFloat fVal);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannelPan )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtFloat fPan);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetPlayInLoop )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ RtBOOL bPlayInLoop);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RemoveChannel )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *AutoRemoveChannel )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RemoveAllChannels )( 
            IRsSoundPlayback * This);
        
        /* [helpstring][local] */ HRESULT ( STDMETHODCALLTYPE *PlayStreamBuffer )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ void *pData1,
            /* [in] */ void *pData2,
            /* [in] */ RtDWORD dwDataLen,
            /* [in] */ RtDWORD dwDelay);
        
        /* [helpstring][local] */ HRESULT ( STDMETHODCALLTYPE *PlaySoundFromFile )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ HMODULE hModule,
            /* [in] */ LPTSTR strFileName,
            /* [in] */ RtBOOL bPlayInLoop);
        
        /* [helpstring][local] */ HRESULT ( STDMETHODCALLTYPE *PlaySoundFromDO )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [in] */ IRdSound *pRdSound,
            /* [in] */ RtBOOL bPlayInLoop);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *IsPlayingFromSource )( 
            IRsSoundPlayback * This,
            /* [in] */ RtDWORD dwChannelId,
            /* [retval][out] */ RtBOOL *pbVal);
        
        END_INTERFACE
    } IRsSoundPlaybackVtbl;

    interface IRsSoundPlayback
    {
        CONST_VTBL struct IRsSoundPlaybackVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IRsSoundPlayback_get_ClassId(This,pVal)	\
    (This)->lpVtbl -> get_ClassId(This,pVal)

#define IRsSoundPlayback_get_ClassName(This,pVal)	\
    (This)->lpVtbl -> get_ClassName(This,pVal)


#define IRsSoundPlayback_Initialize(This,hDlg,bEnable3D)	\
    (This)->lpVtbl -> Initialize(This,hDlg,bEnable3D)

#define IRsSoundPlayback_AddChannel(This,dwChannelId,dwBufferSize,dwBuffersCount,dwPrimaryChannels,dwPrimaryFreq,dwBitsPerSample)	\
    (This)->lpVtbl -> AddChannel(This,dwChannelId,dwBufferSize,dwBuffersCount,dwPrimaryChannels,dwPrimaryFreq,dwBitsPerSample)

#define IRsSoundPlayback_Add3DChannel(This,dwChannelId,dwBufferSize,dwBuffersCount,dwPrimaryChannels,dwPrimaryFreq,dwBitsPerSample,fMinDist,fMaxDist)	\
    (This)->lpVtbl -> Add3DChannel(This,dwChannelId,dwBufferSize,dwBuffersCount,dwPrimaryChannels,dwPrimaryFreq,dwBitsPerSample,fMinDist,fMaxDist)

#define IRsSoundPlayback_GetSoundBufferInfo(This,dwChannelId,pdwBufferSize,pdwBuffersCount,pdwUsedBuffersCount)	\
    (This)->lpVtbl -> GetSoundBufferInfo(This,dwChannelId,pdwBufferSize,pdwBuffersCount,pdwUsedBuffersCount)

#define IRsSoundPlayback_GetSoundStreamInfo(This,dwChannelId,pdwPrimaryChannels,pdwPrimaryFreq,pdwBitsPerSample)	\
    (This)->lpVtbl -> GetSoundStreamInfo(This,dwChannelId,pdwPrimaryChannels,pdwPrimaryFreq,pdwBitsPerSample)

#define IRsSoundPlayback_SetListener3DPosition(This,pPos,pFrontOrient,pTopOrient)	\
    (This)->lpVtbl -> SetListener3DPosition(This,pPos,pFrontOrient,pTopOrient)

#define IRsSoundPlayback_GetListener3DPosition(This,pPos,pFrontOrient,pTopOrient)	\
    (This)->lpVtbl -> GetListener3DPosition(This,pPos,pFrontOrient,pTopOrient)

#define IRsSoundPlayback_SetChannel3DPosition(This,dwChannelId,pPos,pOrient)	\
    (This)->lpVtbl -> SetChannel3DPosition(This,dwChannelId,pPos,pOrient)

#define IRsSoundPlayback_GetChannel3DPosition(This,dwChannelId,pPos,pOrient)	\
    (This)->lpVtbl -> GetChannel3DPosition(This,dwChannelId,pPos,pOrient)

#define IRsSoundPlayback_Commit3DChannelsChanges(This)	\
    (This)->lpVtbl -> Commit3DChannelsChanges(This)

#define IRsSoundPlayback_SetChannelVolume(This,dwChannelId,fVolume)	\
    (This)->lpVtbl -> SetChannelVolume(This,dwChannelId,fVolume)

#define IRsSoundPlayback_SetChannelMinDistance(This,dwChannelId,fVal)	\
    (This)->lpVtbl -> SetChannelMinDistance(This,dwChannelId,fVal)

#define IRsSoundPlayback_SetChannelMaxDistance(This,dwChannelId,fVal)	\
    (This)->lpVtbl -> SetChannelMaxDistance(This,dwChannelId,fVal)

#define IRsSoundPlayback_SetChannelPan(This,dwChannelId,fPan)	\
    (This)->lpVtbl -> SetChannelPan(This,dwChannelId,fPan)

#define IRsSoundPlayback_SetPlayInLoop(This,dwChannelId,bPlayInLoop)	\
    (This)->lpVtbl -> SetPlayInLoop(This,dwChannelId,bPlayInLoop)

#define IRsSoundPlayback_RemoveChannel(This,dwChannelId)	\
    (This)->lpVtbl -> RemoveChannel(This,dwChannelId)

#define IRsSoundPlayback_AutoRemoveChannel(This,dwChannelId)	\
    (This)->lpVtbl -> AutoRemoveChannel(This,dwChannelId)

#define IRsSoundPlayback_RemoveAllChannels(This)	\
    (This)->lpVtbl -> RemoveAllChannels(This)

#define IRsSoundPlayback_PlayStreamBuffer(This,dwChannelId,pData1,pData2,dwDataLen,dwDelay)	\
    (This)->lpVtbl -> PlayStreamBuffer(This,dwChannelId,pData1,pData2,dwDataLen,dwDelay)

#define IRsSoundPlayback_PlaySoundFromFile(This,dwChannelId,hModule,strFileName,bPlayInLoop)	\
    (This)->lpVtbl -> PlaySoundFromFile(This,dwChannelId,hModule,strFileName,bPlayInLoop)

#define IRsSoundPlayback_PlaySoundFromDO(This,dwChannelId,pRdSound,bPlayInLoop)	\
    (This)->lpVtbl -> PlaySoundFromDO(This,dwChannelId,pRdSound,bPlayInLoop)

#define IRsSoundPlayback_IsPlayingFromSource(This,dwChannelId,pbVal)	\
    (This)->lpVtbl -> IsPlayingFromSource(This,dwChannelId,pbVal)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_Initialize_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ HWND hDlg,
    /* [in] */ RtBOOL bEnable3D);


void __RPC_STUB IRsSoundPlayback_Initialize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_AddChannel_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ RtDWORD dwBufferSize,
    /* [in] */ RtDWORD dwBuffersCount,
    /* [in] */ RtDWORD dwPrimaryChannels,
    /* [in] */ RtDWORD dwPrimaryFreq,
    /* [in] */ RtDWORD dwBitsPerSample);


void __RPC_STUB IRsSoundPlayback_AddChannel_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_Add3DChannel_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ RtDWORD dwBufferSize,
    /* [in] */ RtDWORD dwBuffersCount,
    /* [in] */ RtDWORD dwPrimaryChannels,
    /* [in] */ RtDWORD dwPrimaryFreq,
    /* [in] */ RtDWORD dwBitsPerSample,
    /* [in] */ RtFloat fMinDist,
    /* [in] */ RtFloat fMaxDist);


void __RPC_STUB IRsSoundPlayback_Add3DChannel_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_GetSoundBufferInfo_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [out] */ RtDWORD *pdwBufferSize,
    /* [out] */ RtDWORD *pdwBuffersCount,
    /* [out] */ RtDWORD *pdwUsedBuffersCount);


void __RPC_STUB IRsSoundPlayback_GetSoundBufferInfo_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_GetSoundStreamInfo_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [out] */ RtDWORD *pdwPrimaryChannels,
    /* [out] */ RtDWORD *pdwPrimaryFreq,
    /* [out] */ RtDWORD *pdwBitsPerSample);


void __RPC_STUB IRsSoundPlayback_GetSoundStreamInfo_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_SetListener3DPosition_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ const RtPoint *pPos,
    /* [in] */ const RtPoint *pFrontOrient,
    /* [in] */ const RtPoint *pTopOrient);


void __RPC_STUB IRsSoundPlayback_SetListener3DPosition_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_GetListener3DPosition_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtPoint *pPos,
    /* [in] */ RtPoint *pFrontOrient,
    /* [in] */ RtPoint *pTopOrient);


void __RPC_STUB IRsSoundPlayback_GetListener3DPosition_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_SetChannel3DPosition_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ const RtPoint *pPos,
    /* [in] */ const RtPoint *pOrient);


void __RPC_STUB IRsSoundPlayback_SetChannel3DPosition_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_GetChannel3DPosition_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ RtPoint *pPos,
    /* [in] */ RtPoint *pOrient);


void __RPC_STUB IRsSoundPlayback_GetChannel3DPosition_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_Commit3DChannelsChanges_Proxy( 
    IRsSoundPlayback * This);


void __RPC_STUB IRsSoundPlayback_Commit3DChannelsChanges_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_SetChannelVolume_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ RtFloat fVolume);


void __RPC_STUB IRsSoundPlayback_SetChannelVolume_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_SetChannelMinDistance_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ RtFloat fVal);


void __RPC_STUB IRsSoundPlayback_SetChannelMinDistance_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_SetChannelMaxDistance_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ RtFloat fVal);


void __RPC_STUB IRsSoundPlayback_SetChannelMaxDistance_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_SetChannelPan_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ RtFloat fPan);


void __RPC_STUB IRsSoundPlayback_SetChannelPan_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_SetPlayInLoop_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ RtBOOL bPlayInLoop);


void __RPC_STUB IRsSoundPlayback_SetPlayInLoop_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_RemoveChannel_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId);


void __RPC_STUB IRsSoundPlayback_RemoveChannel_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_AutoRemoveChannel_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId);


void __RPC_STUB IRsSoundPlayback_AutoRemoveChannel_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_RemoveAllChannels_Proxy( 
    IRsSoundPlayback * This);


void __RPC_STUB IRsSoundPlayback_RemoveAllChannels_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][local] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_PlayStreamBuffer_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ void *pData1,
    /* [in] */ void *pData2,
    /* [in] */ RtDWORD dwDataLen,
    /* [in] */ RtDWORD dwDelay);


void __RPC_STUB IRsSoundPlayback_PlayStreamBuffer_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][local] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_PlaySoundFromFile_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ HMODULE hModule,
    /* [in] */ LPTSTR strFileName,
    /* [in] */ RtBOOL bPlayInLoop);


void __RPC_STUB IRsSoundPlayback_PlaySoundFromFile_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][local] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_PlaySoundFromDO_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [in] */ IRdSound *pRdSound,
    /* [in] */ RtBOOL bPlayInLoop);


void __RPC_STUB IRsSoundPlayback_PlaySoundFromDO_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundPlayback_IsPlayingFromSource_Proxy( 
    IRsSoundPlayback * This,
    /* [in] */ RtDWORD dwChannelId,
    /* [retval][out] */ RtBOOL *pbVal);


void __RPC_STUB IRsSoundPlayback_IsPlayingFromSource_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IRsSoundPlayback_INTERFACE_DEFINED__ */


/* interface __MIDL_itf__MediaDv_1189 */
/* [local] */ 

typedef struct tagRsSoundMixedChnlState
    {
    RtDWORD dwId;
    RtFloat fAvgIntensity;
    RtFloat fPeakIntensity;
    } 	RsSoundMixedChnlState;



extern RPC_IF_HANDLE __MIDL_itf__MediaDv_1189_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf__MediaDv_1189_v0_0_s_ifspec;

#ifndef __IRsSoundMixer_INTERFACE_DEFINED__
#define __IRsSoundMixer_INTERFACE_DEFINED__

/* interface IRsSoundMixer */
/* [unique][helpstring][uuid][local][object] */ 


EXTERN_C const IID IID_IRsSoundMixer;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("AD1B14F7-2406-4dfc-9157-486B79943E48")
    IRsSoundMixer : public IRsObject
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ RtLong lRate,
            /* [in] */ RtDWORD dwMinsamplesCount,
            /* [in] */ RtDWORD dwMaxWaitTime) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE AddStream( 
            /* [in] */ RtDWORD dwId,
            /* [in] */ RtLong lRate,
            /* [in] */ const RtFloat *pfData,
            /* [in] */ RtDWORD dwDataCount,
            /* [in] */ RtDWORD dwTime,
            /* [in] */ RtFloat **ppfMixedData,
            /* [in] */ RtDWORD *pdwMixedDataCount) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Flush( 
            /* [out] */ RtFloat **ppfMixedData,
            /* [out] */ RtDWORD *pdwMixedDataCount,
            /* [in] */ RtBOOL bAll) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ReleaseIdBuff( 
            /* [in] */ RtDWORD dwId) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ReleaseAllIdBuffs( void) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNumChannels( 
            /* [retval][out] */ RtDWORD *pdwChannels) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelsState( 
            /* [out] */ RsSoundMixedChnlState **ppState,
            /* [out] */ RtDWORD *pdwChannelsNum) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IRsSoundMixerVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRsSoundMixer * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRsSoundMixer * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRsSoundMixer * This);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassId )( 
            IRsSoundMixer * This,
            /* [retval][out] */ GUID *pVal);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassName )( 
            IRsSoundMixer * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IRsSoundMixer * This,
            /* [in] */ RtLong lRate,
            /* [in] */ RtDWORD dwMinsamplesCount,
            /* [in] */ RtDWORD dwMaxWaitTime);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *AddStream )( 
            IRsSoundMixer * This,
            /* [in] */ RtDWORD dwId,
            /* [in] */ RtLong lRate,
            /* [in] */ const RtFloat *pfData,
            /* [in] */ RtDWORD dwDataCount,
            /* [in] */ RtDWORD dwTime,
            /* [in] */ RtFloat **ppfMixedData,
            /* [in] */ RtDWORD *pdwMixedDataCount);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Flush )( 
            IRsSoundMixer * This,
            /* [out] */ RtFloat **ppfMixedData,
            /* [out] */ RtDWORD *pdwMixedDataCount,
            /* [in] */ RtBOOL bAll);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ReleaseIdBuff )( 
            IRsSoundMixer * This,
            /* [in] */ RtDWORD dwId);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ReleaseAllIdBuffs )( 
            IRsSoundMixer * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNumChannels )( 
            IRsSoundMixer * This,
            /* [retval][out] */ RtDWORD *pdwChannels);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelsState )( 
            IRsSoundMixer * This,
            /* [out] */ RsSoundMixedChnlState **ppState,
            /* [out] */ RtDWORD *pdwChannelsNum);
        
        END_INTERFACE
    } IRsSoundMixerVtbl;

    interface IRsSoundMixer
    {
        CONST_VTBL struct IRsSoundMixerVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IRsSoundMixer_get_ClassId(This,pVal)	\
    (This)->lpVtbl -> get_ClassId(This,pVal)

#define IRsSoundMixer_get_ClassName(This,pVal)	\
    (This)->lpVtbl -> get_ClassName(This,pVal)


#define IRsSoundMixer_Initialize(This,lRate,dwMinsamplesCount,dwMaxWaitTime)	\
    (This)->lpVtbl -> Initialize(This,lRate,dwMinsamplesCount,dwMaxWaitTime)

#define IRsSoundMixer_AddStream(This,dwId,lRate,pfData,dwDataCount,dwTime,ppfMixedData,pdwMixedDataCount)	\
    (This)->lpVtbl -> AddStream(This,dwId,lRate,pfData,dwDataCount,dwTime,ppfMixedData,pdwMixedDataCount)

#define IRsSoundMixer_Flush(This,ppfMixedData,pdwMixedDataCount,bAll)	\
    (This)->lpVtbl -> Flush(This,ppfMixedData,pdwMixedDataCount,bAll)

#define IRsSoundMixer_ReleaseIdBuff(This,dwId)	\
    (This)->lpVtbl -> ReleaseIdBuff(This,dwId)

#define IRsSoundMixer_ReleaseAllIdBuffs(This)	\
    (This)->lpVtbl -> ReleaseAllIdBuffs(This)

#define IRsSoundMixer_GetNumChannels(This,pdwChannels)	\
    (This)->lpVtbl -> GetNumChannels(This,pdwChannels)

#define IRsSoundMixer_GetChannelsState(This,ppState,pdwChannelsNum)	\
    (This)->lpVtbl -> GetChannelsState(This,ppState,pdwChannelsNum)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundMixer_Initialize_Proxy( 
    IRsSoundMixer * This,
    /* [in] */ RtLong lRate,
    /* [in] */ RtDWORD dwMinsamplesCount,
    /* [in] */ RtDWORD dwMaxWaitTime);


void __RPC_STUB IRsSoundMixer_Initialize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundMixer_AddStream_Proxy( 
    IRsSoundMixer * This,
    /* [in] */ RtDWORD dwId,
    /* [in] */ RtLong lRate,
    /* [in] */ const RtFloat *pfData,
    /* [in] */ RtDWORD dwDataCount,
    /* [in] */ RtDWORD dwTime,
    /* [in] */ RtFloat **ppfMixedData,
    /* [in] */ RtDWORD *pdwMixedDataCount);


void __RPC_STUB IRsSoundMixer_AddStream_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundMixer_Flush_Proxy( 
    IRsSoundMixer * This,
    /* [out] */ RtFloat **ppfMixedData,
    /* [out] */ RtDWORD *pdwMixedDataCount,
    /* [in] */ RtBOOL bAll);


void __RPC_STUB IRsSoundMixer_Flush_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundMixer_ReleaseIdBuff_Proxy( 
    IRsSoundMixer * This,
    /* [in] */ RtDWORD dwId);


void __RPC_STUB IRsSoundMixer_ReleaseIdBuff_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundMixer_ReleaseAllIdBuffs_Proxy( 
    IRsSoundMixer * This);


void __RPC_STUB IRsSoundMixer_ReleaseAllIdBuffs_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundMixer_GetNumChannels_Proxy( 
    IRsSoundMixer * This,
    /* [retval][out] */ RtDWORD *pdwChannels);


void __RPC_STUB IRsSoundMixer_GetNumChannels_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRsSoundMixer_GetChannelsState_Proxy( 
    IRsSoundMixer * This,
    /* [out] */ RsSoundMixedChnlState **ppState,
    /* [out] */ RtDWORD *pdwChannelsNum);


void __RPC_STUB IRsSoundMixer_GetChannelsState_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IRsSoundMixer_INTERFACE_DEFINED__ */


#ifndef __IRpMediaDv_INTERFACE_DEFINED__
#define __IRpMediaDv_INTERFACE_DEFINED__

/* interface IRpMediaDv */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IRpMediaDv;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E65EA9B9-46D9-47ce-B529-3794BFAD368B")
    IRpMediaDv : public IRsObject
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CreateSoundCapture( 
            /* [retval][out] */ IRsSoundCapture **ppRsSoundCapture) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CreateSoundPlayback( 
            /* [retval][out] */ IRsSoundPlayback **ppRsSoundPlayback) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CreateAudioEncoder( 
            /* [retval][out] */ IRsAudioEncoder **ppRsAudioEncoder) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CreateAudioDecoder( 
            /* [retval][out] */ IRsAudioDecoder **ppRsAudioDecoder) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CreateSoundMixer( 
            /* [retval][out] */ IRsSoundMixer **ppRsSoundMixer) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IRpMediaDvVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRpMediaDv * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRpMediaDv * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRpMediaDv * This);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassId )( 
            IRpMediaDv * This,
            /* [retval][out] */ GUID *pVal);
        
        /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ClassName )( 
            IRpMediaDv * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CreateSoundCapture )( 
            IRpMediaDv * This,
            /* [retval][out] */ IRsSoundCapture **ppRsSoundCapture);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CreateSoundPlayback )( 
            IRpMediaDv * This,
            /* [retval][out] */ IRsSoundPlayback **ppRsSoundPlayback);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CreateAudioEncoder )( 
            IRpMediaDv * This,
            /* [retval][out] */ IRsAudioEncoder **ppRsAudioEncoder);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CreateAudioDecoder )( 
            IRpMediaDv * This,
            /* [retval][out] */ IRsAudioDecoder **ppRsAudioDecoder);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CreateSoundMixer )( 
            IRpMediaDv * This,
            /* [retval][out] */ IRsSoundMixer **ppRsSoundMixer);
        
        END_INTERFACE
    } IRpMediaDvVtbl;

    interface IRpMediaDv
    {
        CONST_VTBL struct IRpMediaDvVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IRpMediaDv_get_ClassId(This,pVal)	\
    (This)->lpVtbl -> get_ClassId(This,pVal)

#define IRpMediaDv_get_ClassName(This,pVal)	\
    (This)->lpVtbl -> get_ClassName(This,pVal)


#define IRpMediaDv_CreateSoundCapture(This,ppRsSoundCapture)	\
    (This)->lpVtbl -> CreateSoundCapture(This,ppRsSoundCapture)

#define IRpMediaDv_CreateSoundPlayback(This,ppRsSoundPlayback)	\
    (This)->lpVtbl -> CreateSoundPlayback(This,ppRsSoundPlayback)

#define IRpMediaDv_CreateAudioEncoder(This,ppRsAudioEncoder)	\
    (This)->lpVtbl -> CreateAudioEncoder(This,ppRsAudioEncoder)

#define IRpMediaDv_CreateAudioDecoder(This,ppRsAudioDecoder)	\
    (This)->lpVtbl -> CreateAudioDecoder(This,ppRsAudioDecoder)

#define IRpMediaDv_CreateSoundMixer(This,ppRsSoundMixer)	\
    (This)->lpVtbl -> CreateSoundMixer(This,ppRsSoundMixer)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRpMediaDv_CreateSoundCapture_Proxy( 
    IRpMediaDv * This,
    /* [retval][out] */ IRsSoundCapture **ppRsSoundCapture);


void __RPC_STUB IRpMediaDv_CreateSoundCapture_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRpMediaDv_CreateSoundPlayback_Proxy( 
    IRpMediaDv * This,
    /* [retval][out] */ IRsSoundPlayback **ppRsSoundPlayback);


void __RPC_STUB IRpMediaDv_CreateSoundPlayback_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRpMediaDv_CreateAudioEncoder_Proxy( 
    IRpMediaDv * This,
    /* [retval][out] */ IRsAudioEncoder **ppRsAudioEncoder);


void __RPC_STUB IRpMediaDv_CreateAudioEncoder_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRpMediaDv_CreateAudioDecoder_Proxy( 
    IRpMediaDv * This,
    /* [retval][out] */ IRsAudioDecoder **ppRsAudioDecoder);


void __RPC_STUB IRpMediaDv_CreateAudioDecoder_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring] */ HRESULT STDMETHODCALLTYPE IRpMediaDv_CreateSoundMixer_Proxy( 
    IRpMediaDv * This,
    /* [retval][out] */ IRsSoundMixer **ppRsSoundMixer);


void __RPC_STUB IRpMediaDv_CreateSoundMixer_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IRpMediaDv_INTERFACE_DEFINED__ */


#ifndef __IRiMediaDv_INTERFACE_DEFINED__
#define __IRiMediaDv_INTERFACE_DEFINED__

/* interface IRiMediaDv */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IRiMediaDv;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("C234C8C0-617A-4b71-9DFF-23CF176BF1F1")
    IRiMediaDv : public IDispatch
    {
    public:
    };
    
#else 	/* C style interface */

    typedef struct IRiMediaDvVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IRiMediaDv * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IRiMediaDv * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IRiMediaDv * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IRiMediaDv * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IRiMediaDv * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IRiMediaDv * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IRiMediaDv * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        END_INTERFACE
    } IRiMediaDvVtbl;

    interface IRiMediaDv
    {
        CONST_VTBL struct IRiMediaDvVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IRiMediaDv_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IRiMediaDv_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IRiMediaDv_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IRiMediaDv_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IRiMediaDv_INTERFACE_DEFINED__ */



#ifndef __MediaDv_LIBRARY_DEFINED__
#define __MediaDv_LIBRARY_DEFINED__

/* library MediaDv */
/* [helpstring][uuid][version] */ 


EXTERN_C const IID LIBID_MediaDv;

EXTERN_C const CLSID CLSID_CRpMediaDv;

#ifdef __cplusplus

class DECLSPEC_UUID("CE76C114-0274-4062-B1C9-70F66C410074")
CRpMediaDv;
#endif

EXTERN_C const CLSID CLSID_CRiMediaDv;

#ifdef __cplusplus

class DECLSPEC_UUID("FEDF0669-3805-43fa-8EBE-7BB0A967FF99")
CRiMediaDv;
#endif
#endif /* __MediaDv_LIBRARY_DEFINED__ */

/* Additional Prototypes for ALL interfaces */

unsigned long             __RPC_USER  HWND_UserSize(     unsigned long *, unsigned long            , HWND * ); 
unsigned char * __RPC_USER  HWND_UserMarshal(  unsigned long *, unsigned char *, HWND * ); 
unsigned char * __RPC_USER  HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND * ); 
void                      __RPC_USER  HWND_UserFree(     unsigned long *, HWND * ); 

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif


