155 lines
4 KiB
C++
155 lines
4 KiB
C++
/*
|
||
- INSCODEC.H
|
||
-
|
||
* Microsoft NetMeeting
|
||
* Network Audio Controller (NAC) DLL
|
||
* Internal header file for installable codecs
|
||
*
|
||
* Revision History:
|
||
*
|
||
* When Who What
|
||
* -------- ------------------ ---------------------------------------
|
||
* 1.29.97 Yoram Yaacovi Created
|
||
*
|
||
*/
|
||
|
||
#include <pshpack8.h> /* Assume 8 byte packing throughout */
|
||
|
||
/*
|
||
* Macros
|
||
*/
|
||
#define COMPARE_GUIDS(a,b) RtlEqualMemory((a), (b), sizeof(GUID))
|
||
#define ACQMUTEX(hMutex) \
|
||
while (WaitForSingleObject(hMutex, 10000) == WAIT_TIMEOUT) \
|
||
{ \
|
||
ERRORMSG(("Thread 0x%x waits on mutex\n", GetCurrentThreadId())); \
|
||
} \
|
||
|
||
#define RELMUTEX(hMutex) ReleaseMutex(hMutex)
|
||
|
||
#define IMPL(class, member, pointer) \
|
||
(&((class *)0)->member == pointer, ((class *) (((LONG_PTR) pointer) - offsetof (class, member))))
|
||
|
||
/*
|
||
* Data Structures
|
||
*/
|
||
|
||
/****************************************************************************
|
||
* @doc INTERNAL DATASTRUC AUDIO
|
||
*
|
||
* @class CInstallAudioCodecs | Installable Audio codecs
|
||
*
|
||
* @base public | IInstallAudioCodecs
|
||
*
|
||
***************************************************************************/
|
||
class CInstallAudioCodecs : public IInstallAudioCodecs
|
||
{
|
||
public:
|
||
// IUnknown methods
|
||
STDMETHODIMP QueryInterface (REFIID riid, void **ppv);
|
||
STDMETHODIMP_(ULONG) AddRef (void);
|
||
STDMETHODIMP_(ULONG) Release (void);
|
||
|
||
// IInstallAudioCodecs methods
|
||
STDMETHODIMP AddACMFormat (LPWAVEFORMATEX lpwfx, PBASIC_AUDCAP_INFO pAudCapInfo);
|
||
STDMETHODIMP RemoveACMFormat (LPWAVEFORMATEX lpwfx);
|
||
STDMETHODIMP ReorderFormats (PAUDCAP_INFO_LIST pAudCapInfoList);
|
||
STDMETHODIMP EnumFormats(PAUDCAP_INFO_LIST *ppAudCapInfoList);
|
||
STDMETHODIMP FreeBuffer(LPVOID lpBuffer);
|
||
|
||
private:
|
||
// Private functions
|
||
|
||
// Debug display functions
|
||
|
||
// Variables
|
||
};
|
||
|
||
/****************************************************************************
|
||
* @doc INTERNAL DATASTRUC VIDEO
|
||
*
|
||
* @class CInstallVideoCodecs | Installable Video codecs
|
||
*
|
||
* @base public | IInstallVideoCodecs
|
||
*
|
||
***************************************************************************/
|
||
class CInstallVideoCodecs : public IInstallVideoCodecs
|
||
{
|
||
public:
|
||
// IUnknown methods
|
||
STDMETHODIMP QueryInterface (REFIID riid, void **ppv);
|
||
STDMETHODIMP_(ULONG) AddRef (void);
|
||
STDMETHODIMP_(ULONG) Release (void);
|
||
|
||
// IInstallVideoCodecs methods
|
||
STDMETHODIMP AddVCMFormat (PVIDCAP_INFO pVidCapInfo);
|
||
STDMETHODIMP RemoveVCMFormat (PVIDCAP_INFO pVidCapInfo);
|
||
STDMETHODIMP ReorderFormats (PVIDCAP_INFO_LIST pVidCapInfoList);
|
||
STDMETHODIMP EnumFormats(PVIDCAP_INFO_LIST *ppVidCapInfoList);
|
||
STDMETHODIMP FreeBuffer(LPVOID lpBuffer);
|
||
|
||
private:
|
||
// Private functions
|
||
STDMETHODIMP AddRemoveVCMFormat(PVIDCAP_INFO pVidCapInfo,
|
||
BOOL bAdd);
|
||
|
||
// Debug display functions
|
||
|
||
// Variables
|
||
};
|
||
|
||
/****************************************************************************
|
||
* @doc INTERNAL DATASTRUC
|
||
*
|
||
* @class CInstallCodecs | Installable codecs
|
||
*
|
||
* @base public | IUnknown
|
||
*
|
||
***************************************************************************/
|
||
class CInstallCodecs : public IInstallCodecs
|
||
{
|
||
friend class CInstallAudioCodecs;
|
||
friend class CInstallVideoCodecs;
|
||
|
||
public:
|
||
// IUnknown methods
|
||
STDMETHODIMP QueryInterface (REFIID riid, void **ppv);
|
||
STDMETHODIMP_(ULONG) AddRef (void);
|
||
STDMETHODIMP_(ULONG) Release (void);
|
||
|
||
CInstallCodecs (void);
|
||
~CInstallCodecs (void);
|
||
HRESULT Initialize(REFIID riid);
|
||
|
||
private:
|
||
// Functions
|
||
STDMETHODIMP FreeBuffer(LPVOID lpBuffer);
|
||
STDMETHODIMP TranslateHr(HRESULT hr);
|
||
|
||
// Audio and video interfaces
|
||
CInstallAudioCodecs ifAudio;
|
||
CInstallVideoCodecs ifVideo;
|
||
|
||
// Variables
|
||
// @cmember Reference Count
|
||
int m_cRef;
|
||
// Two public members to allow access from the nested classes
|
||
// @cmember Pointer to an audio capability interface
|
||
LPAPPCAPPIF m_pAudAppCaps;
|
||
// @cmember Pointer to an video capability interface
|
||
LPAPPVIDCAPPIF m_pVidAppCaps;
|
||
|
||
};
|
||
|
||
/*
|
||
* Globals
|
||
*/
|
||
EXTERN_C HANDLE g_hMutex;
|
||
EXTERN_C class CInstallCodecs *g_pIC;
|
||
|
||
/*
|
||
* Function prototypes
|
||
*/
|
||
|
||
#include <poppack.h> /* End byte packing */
|
||
|