Leaked source code of windows server 2003
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.

133 lines
4.3 KiB

  1. /*
  2. - CODECS.H
  3. -
  4. * Microsoft NetMeeting
  5. * Installable codecs
  6. * Header file
  7. *
  8. * @doc EXTERNAL
  9. *
  10. * @topic NetMeeting Installable Codecs Programmer's Reference | NetMeeting supports
  11. * adding arbitrary audio and video codec formats for use with NetMeeting,
  12. * as well as enumerating, prioritizing or removing these formats.
  13. *
  14. */
  15. #include <pshpack8.h> /* Assume 8 byte packing throughout */
  16. #include "appavcap.h"
  17. /*
  18. * Constants
  19. */
  20. // hresult codes, facility IC = 0x301
  21. #define IC_E_CAPS_INSTANTIATION_FAILURE 0x83010001 // could not instantiate a required caps object
  22. #define IC_E_CAPS_INITIALIZATION_FAILURE 0x83010002 // could not initialize a required bject
  23. #define IC_E_NO_FORMATS 0x83010003 // no formats available
  24. #define IC_E_NO_SUCH_FORMAT 0x83010005 // no matching AC</VCM format was found
  25. #define IC_E_INTERNAL_ERROR 0x83010006 // the Network Audio/Video Controller
  26. // reported a system error
  27. /*
  28. * Macros
  29. */
  30. /*
  31. * Data Structures
  32. */
  33. /*
  34. * Functions
  35. */
  36. /*
  37. * Interfaces
  38. */
  39. #ifndef DECLARE_INTERFACE_PTR
  40. #ifdef __cplusplus
  41. #define DECLARE_INTERFACE_PTR(iface, piface) \
  42. interface iface; typedef iface FAR * piface
  43. #else
  44. #define DECLARE_INTERFACE_PTR(iface, piface) \
  45. typedef interface iface iface, FAR * piface
  46. #endif
  47. #endif /* DECLARE_INTERFACE_PTR */
  48. #define IUNKNOWN_METHODS(IPURE) \
  49. STDMETHOD (QueryInterface) \
  50. (THIS_ REFIID riid, LPVOID FAR * ppvObj) IPURE; \
  51. STDMETHOD_(ULONG,AddRef) (THIS) IPURE; \
  52. STDMETHOD_(ULONG,Release) (THIS) IPURE; \
  53. #define IINSTALLAUDIOCODECS_METHODS(IPURE) \
  54. STDMETHOD(AddACMFormat) \
  55. (THIS_ LPWAVEFORMATEX lpwfx, PAUDCAP_INFO pAudCapInfo) IPURE; \
  56. STDMETHOD (RemoveACMFormat) \
  57. (THIS_ LPWAVEFORMATEX lpwfx) IPURE; \
  58. STDMETHOD (ReorderFormats) \
  59. (THIS_ PAUDCAP_INFO_LIST pAudCapInfoList) IPURE; \
  60. STDMETHOD (EnumFormats) \
  61. (THIS_ PAUDCAP_INFO_LIST *ppAudCapInfoList) IPURE; \
  62. STDMETHOD (FreeBuffer) (THIS_ LPVOID lpBuffer) IPURE; \
  63. #define IINSTALLVIDEOCODECS_METHODS(IPURE) \
  64. STDMETHOD(AddVCMFormat) \
  65. (THIS_ PVIDCAP_INFO pVidCapInfo) IPURE; \
  66. STDMETHOD (RemoveVCMFormat) \
  67. (THIS_ PVIDCAP_INFO pVidCapInfo) IPURE; \
  68. STDMETHOD (ReorderFormats) \
  69. (THIS_ PVIDCAP_INFO_LIST pVidCapInfoList) IPURE; \
  70. STDMETHOD (EnumFormats) \
  71. (THIS_ PVIDCAP_INFO_LIST *ppVidCapInfoList) IPURE; \
  72. STDMETHOD (FreeBuffer) (THIS_ LPVOID lpBuffer) IPURE; \
  73. // IInstallAudioCodecs
  74. #undef INTERFACE
  75. #define INTERFACE IInstallAudioCodecs
  76. DECLARE_INTERFACE_(IInstallAudioCodecs, IUnknown)
  77. {
  78. IUNKNOWN_METHODS(PURE)
  79. IINSTALLAUDIOCODECS_METHODS(PURE)
  80. };
  81. DECLARE_INTERFACE_PTR(IInstallAudioCodecs, LPINSTALLAUDIOCODECS);
  82. // IInstallVideooCodecs
  83. #undef INTERFACE
  84. #define INTERFACE IInstallVideoCodecs
  85. DECLARE_INTERFACE_(IInstallVideoCodecs, IUnknown)
  86. {
  87. IUNKNOWN_METHODS(PURE)
  88. IINSTALLVIDEOCODECS_METHODS(PURE)
  89. };
  90. DECLARE_INTERFACE_PTR(IInstallVideoCodecs, LPINSTALLVIDEOCODECS);
  91. // IInstallAudioCodecs
  92. #undef INTERFACE
  93. #define INTERFACE IInstallCodecs
  94. DECLARE_INTERFACE_(IInstallCodecs, IUnknown)
  95. {
  96. IUNKNOWN_METHODS(PURE)
  97. };
  98. DECLARE_INTERFACE_PTR(IInstallCodecs, LPINSTALLCODECS);
  99. EXTERN_C HRESULT WINAPI CreateInstallCodecs (
  100. IUnknown *punkOuter,
  101. REFIID riid,
  102. void **ppv);
  103. typedef HRESULT (WINAPI *PFNCREATEINSTALLCODECS)
  104. (IUnknown *punkOuter, REFIID riid, void **ppv);
  105. // {8ED14CC0-7A1F-11d0-92F6-00A0C922E6B2}
  106. DEFINE_GUID(CLSID_InstallCodecs, 0x8ed14cc0, 0x7a1f, 0x11d0, 0x92, 0xf6, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xb2);
  107. // {8ED14CC1-7A1F-11d0-92F6-00A0C922E6B2}
  108. DEFINE_GUID(IID_IInstallCodecs, 0x8ed14cc1, 0x7a1f, 0x11d0, 0x92, 0xf6, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xb2);
  109. // {8ED14CC2-7A1F-11d0-92F6-00A0C922E6B2}
  110. DEFINE_GUID(IID_IInstallAudioCodecs, 0x8ed14cc2, 0x7a1f, 0x11d0, 0x92, 0xf6, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xb2);
  111. // {8ED14CC3-7A1F-11d0-92F6-00A0C922E6B2}
  112. DEFINE_GUID(IID_IInstallVideoCodecs, 0x8ed14cc3, 0x7a1f, 0x11d0, 0x92, 0xf6, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xb2);
  113. #include <poppack.h> /* End byte packing */