You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
4.2 KiB
155 lines
4.2 KiB
/*
|
|
- 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 */
|
|
|