134 lines
4.1 KiB
C
134 lines
4.1 KiB
C
/*
|
|
- CODECS.H
|
|
-
|
|
* Microsoft NetMeeting
|
|
* Installable codecs
|
|
* Header file
|
|
*
|
|
* @doc EXTERNAL
|
|
*
|
|
* @topic NetMeeting Installable Codecs Programmer's Reference | NetMeeting supports
|
|
* adding arbitrary audio and video codec formats for use with NetMeeting,
|
|
* as well as enumerating, prioritizing or removing these formats.
|
|
*
|
|
*/
|
|
|
|
#include <pshpack8.h> /* Assume 8 byte packing throughout */
|
|
#include "appavcap.h"
|
|
|
|
/*
|
|
* Constants
|
|
*/
|
|
|
|
// hresult codes, facility IC = 0x301
|
|
#define IC_E_CAPS_INSTANTIATION_FAILURE 0x83010001 // could not instantiate a required caps object
|
|
#define IC_E_CAPS_INITIALIZATION_FAILURE 0x83010002 // could not initialize a required bject
|
|
#define IC_E_NO_FORMATS 0x83010003 // no formats available
|
|
#define IC_E_NO_SUCH_FORMAT 0x83010005 // no matching AC</VCM format was found
|
|
#define IC_E_INTERNAL_ERROR 0x83010006 // the Network Audio/Video Controller
|
|
// reported a system error
|
|
|
|
/*
|
|
* Macros
|
|
*/
|
|
|
|
/*
|
|
* Data Structures
|
|
*/
|
|
|
|
/*
|
|
* Functions
|
|
*/
|
|
|
|
/*
|
|
* Interfaces
|
|
*/
|
|
|
|
#ifndef DECLARE_INTERFACE_PTR
|
|
#ifdef __cplusplus
|
|
#define DECLARE_INTERFACE_PTR(iface, piface) \
|
|
interface iface; typedef iface FAR * piface
|
|
#else
|
|
#define DECLARE_INTERFACE_PTR(iface, piface) \
|
|
typedef interface iface iface, FAR * piface
|
|
#endif
|
|
#endif /* DECLARE_INTERFACE_PTR */
|
|
|
|
|
|
#define IUNKNOWN_METHODS(IPURE) \
|
|
STDMETHOD (QueryInterface) \
|
|
(THIS_ REFIID riid, LPVOID FAR * ppvObj) IPURE; \
|
|
STDMETHOD_(ULONG,AddRef) (THIS) IPURE; \
|
|
STDMETHOD_(ULONG,Release) (THIS) IPURE; \
|
|
|
|
#define IINSTALLAUDIOCODECS_METHODS(IPURE) \
|
|
STDMETHOD(AddACMFormat) \
|
|
(THIS_ LPWAVEFORMATEX lpwfx, PAUDCAP_INFO pAudCapInfo) IPURE; \
|
|
STDMETHOD (RemoveACMFormat) \
|
|
(THIS_ LPWAVEFORMATEX lpwfx) IPURE; \
|
|
STDMETHOD (ReorderFormats) \
|
|
(THIS_ PAUDCAP_INFO_LIST pAudCapInfoList) IPURE; \
|
|
STDMETHOD (EnumFormats) \
|
|
(THIS_ PAUDCAP_INFO_LIST *ppAudCapInfoList) IPURE; \
|
|
STDMETHOD (FreeBuffer) (THIS_ LPVOID lpBuffer) IPURE; \
|
|
|
|
#define IINSTALLVIDEOCODECS_METHODS(IPURE) \
|
|
STDMETHOD(AddVCMFormat) \
|
|
(THIS_ PVIDCAP_INFO pVidCapInfo) IPURE; \
|
|
STDMETHOD (RemoveVCMFormat) \
|
|
(THIS_ PVIDCAP_INFO pVidCapInfo) IPURE; \
|
|
STDMETHOD (ReorderFormats) \
|
|
(THIS_ PVIDCAP_INFO_LIST pVidCapInfoList) IPURE; \
|
|
STDMETHOD (EnumFormats) \
|
|
(THIS_ PVIDCAP_INFO_LIST *ppVidCapInfoList) IPURE; \
|
|
STDMETHOD (FreeBuffer) (THIS_ LPVOID lpBuffer) IPURE; \
|
|
|
|
// IInstallAudioCodecs
|
|
#undef INTERFACE
|
|
#define INTERFACE IInstallAudioCodecs
|
|
DECLARE_INTERFACE_(IInstallAudioCodecs, IUnknown)
|
|
{
|
|
IUNKNOWN_METHODS(PURE)
|
|
IINSTALLAUDIOCODECS_METHODS(PURE)
|
|
};
|
|
DECLARE_INTERFACE_PTR(IInstallAudioCodecs, LPINSTALLAUDIOCODECS);
|
|
|
|
// IInstallVideooCodecs
|
|
#undef INTERFACE
|
|
#define INTERFACE IInstallVideoCodecs
|
|
DECLARE_INTERFACE_(IInstallVideoCodecs, IUnknown)
|
|
{
|
|
IUNKNOWN_METHODS(PURE)
|
|
IINSTALLVIDEOCODECS_METHODS(PURE)
|
|
};
|
|
DECLARE_INTERFACE_PTR(IInstallVideoCodecs, LPINSTALLVIDEOCODECS);
|
|
|
|
// IInstallAudioCodecs
|
|
#undef INTERFACE
|
|
#define INTERFACE IInstallCodecs
|
|
DECLARE_INTERFACE_(IInstallCodecs, IUnknown)
|
|
{
|
|
IUNKNOWN_METHODS(PURE)
|
|
};
|
|
DECLARE_INTERFACE_PTR(IInstallCodecs, LPINSTALLCODECS);
|
|
|
|
EXTERN_C HRESULT WINAPI CreateInstallCodecs (
|
|
IUnknown *punkOuter,
|
|
REFIID riid,
|
|
void **ppv);
|
|
|
|
typedef HRESULT (WINAPI *PFNCREATEINSTALLCODECS)
|
|
(IUnknown *punkOuter, REFIID riid, void **ppv);
|
|
|
|
|
|
// {8ED14CC0-7A1F-11d0-92F6-00A0C922E6B2}
|
|
DEFINE_GUID(CLSID_InstallCodecs, 0x8ed14cc0, 0x7a1f, 0x11d0, 0x92, 0xf6, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xb2);
|
|
// {8ED14CC1-7A1F-11d0-92F6-00A0C922E6B2}
|
|
DEFINE_GUID(IID_IInstallCodecs, 0x8ed14cc1, 0x7a1f, 0x11d0, 0x92, 0xf6, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xb2);
|
|
// {8ED14CC2-7A1F-11d0-92F6-00A0C922E6B2}
|
|
DEFINE_GUID(IID_IInstallAudioCodecs, 0x8ed14cc2, 0x7a1f, 0x11d0, 0x92, 0xf6, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xb2);
|
|
// {8ED14CC3-7A1F-11d0-92F6-00A0C922E6B2}
|
|
DEFINE_GUID(IID_IInstallVideoCodecs, 0x8ed14cc3, 0x7a1f, 0x11d0, 0x92, 0xf6, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xb2);
|
|
|
|
#include <poppack.h> /* End byte packing */
|