windows-nt/Source/XPSP1/NT/enduser/netmeeting/h/codecs.h
2020-09-26 16:20:57 +08:00

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