windows-nt/Source/XPSP1/NT/net/tapi/skywalker/cc/inc/ppmif.h
2020-09-26 16:20:57 +08:00

152 lines
3.7 KiB
C++

/****************************************************************************
*
* $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