/**************************************************************************** * * $Archive: S:/STURGEON/SRC/INCLUDE/VCS/ppmif.h_v $ * * INTEL Corporation Prorietary Information * * This listing is supplied under the terms of a license agreement * with INTEL Corporation and may not be copied nor disclosed except * in accordance with the terms of that agreement. * * Copyright (c) 1993-1996 Intel Corporation. * * $Revision: 1.10 $ * $Date: 30 Jul 1996 15:18:58 $ * $Author: SLI $ * * Deliverable: audmsp32.dll * * Abstract: 32-bit Audio Source/Sink Media Service Provider code. * * Notes: * ***************************************************************************/ #ifndef PPMIF_H #define PPMIF_H #include "ippm.h" // PPM interface include file // Includes isubmit.h #define ulong ULONG #define MAX_PPM_PACKET_SIZE 1000 #define G723_CODEC 723 #define G711_ALAW_CODEC 711 #define G711_MULAW_CODEC 712 #define H263_CODEC 263 #define H261_CODEC 261 #define IVI41_CODEC 41 #define LH_CODEC 111 #define GENERIC_CODEC 999 extern BOOL bCOMInitialized; // MSP COM Interfaces to provide to PPM // The Send and Receive interfaces use ISubmit/ISubmitCallback. The new interface // also implies that the SRC (ISubmit) side allocates and manages buffers. class MSPISubmit : public ISubmit { public: LPVOID m_pToken; LPVOID m_pParent; ISubmitCallback* m_pPPMISubmitCallback; // IUnknown Interface functions STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj); STDMETHODIMP_ ( ULONG )AddRef(void){ return 0; } STDMETHODIMP_ ( ULONG )Release(void){ return 0; } // ISubmit functions STDMETHOD(InitSubmit)(ISubmitCallback* pSubmitCallback); STDMETHOD(Submit)(WSABUF* pWSABuffer, DWORD BufferCount, void *pUserToken, HRESULT Error); STDMETHOD_(void,ReportError)(HRESULT Error); STDMETHOD(Flush)(void); // Constructor and Destructor MSPISubmit(LPVOID pToken, LPVOID pParent); // { m_pPPMISubmitCallback = NULL; } ~MSPISubmit(); }; class MSPISubmitCB : public ISubmitCallback { public: LPVOID m_pToken; // IUnknown Interface functions STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj); STDMETHODIMP_ ( ULONG )AddRef(void){ return 0; } STDMETHODIMP_ ( ULONG )Release(void){ return 0; } // ISubmitCallback functions STDMETHOD_(void,SubmitComplete)(void *pUserToken, HRESULT Error); STDMETHOD_(void,ReportError)(HRESULT Error, int Value); MSPISubmitCB(LPVOID pToken); ~MSPISubmitCB() {}; }; class MSPPPMInterface { public: // Our interfaces to PPM MSPISubmit *pMSPISubmit; MSPISubmitCB *pMSPISubmitCB; public: // PPM's interfaces we call ISubmit *pPPMISubmit; ISubmitUser *pPPMISubmitUser; ISubmitCallback *pPPMISubmitCB; // PPM's interface to initialize either send or receive IPPMSend *pPPMInitISend; IPPMReceive *pPPMInitIReceive; // Constructor and destructor MSPPPMInterface (); ~MSPPPMInterface (); BOOL InitMSPPPMInterface (LPVOID pToken, BOOL IsSrcMsp, UINT CodecType); BOOL InitMSPPPMInterface (LPVOID pToken, BOOL IsSrcMsp, GUID guidPPMClass); HRESULT Submit(WSABUF *pWSABuffer, DWORD BufferCount, void *pCookie); HRESULT Submit(WSABUF *pWSABuffer, DWORD BufferCount, void *pCookie, HRESULT hresult); void SubmitComplete(void *pCookie, HRESULT Error); void SetSession (PPMSESSPARAM_T *pSessparam); void Flush(); private: BOOL m_bIsSrcMsp; }; extern void ProcessSubmitCompleteFromPPM ( LPVOID pToken, LPVOID pCookie, DWORD dwError ); extern HRESULT ProcessSubmitFromPPM ( LPVOID pToken, LPWSABUF pWSABuf, DWORD dwBufferCount, LPVOID pCookie ); #endif