#ifndef _INC_ACM
#define _INC_ACM /* #defined if msacm.h has been included */
#if _MSC_VER > 1000
#pragma once
#endif
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if !defined(_INC_MMREG) || (_INC_MMREG < 142)
#ifndef RC_INVOKED
#error MMREG.H version 142 or greater to be included first
#endif
#endif
#if defined(WIN32) && !defined(_WIN32)
#ifndef RC_INVOKED
#pragma message("MSACM.H: defining _WIN32 because application defined WIN32")
#endif
#define _WIN32
#endif
#if defined(UNICODE) && !defined(_UNICODE)
#ifndef RC_INVOKED
#pragma message("MSACM.H: defining _UNICODE because application defined UNICODE")
#endif
#define _UNICODE
#endif
#include "pshpack1.h" /* Assume byte packing throughout */
#ifdef __cplusplus
extern
"C"
{
#endif /* __cplusplus */
#ifndef DRV_MAPPER_PREFERRED_INPUT_GET
#define DRV_MAPPER_PREFERRED_INPUT_GET (DRV_USER + 0)
#endif
#ifndef DRV_MAPPER_PREFERRED_OUTPUT_GET
#define DRV_MAPPER_PREFERRED_OUTPUT_GET (DRV_USER + 2)
#endif
#ifndef DRVM_MAPPER_STATUS
#define DRVM_MAPPER (0x2000)
#define DRVM_MAPPER_STATUS (DRVM_MAPPER+0)
#endif
#ifndef WIDM_MAPPER_STATUS
#define WIDM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
#define WAVEIN_MAPPER_STATUS_DEVICE 0
#define WAVEIN_MAPPER_STATUS_MAPPED 1
#define WAVEIN_MAPPER_STATUS_FORMAT 2
#endif
#ifndef WODM_MAPPER_STATUS
#define WODM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
#define WAVEOUT_MAPPER_STATUS_DEVICE 0
#define WAVEOUT_MAPPER_STATUS_MAPPED 1
#define WAVEOUT_MAPPER_STATUS_FORMAT 2
#endif
#ifdef _WIN32
#define ACMAPI WINAPI
#else
#ifdef _WINDLL
#define ACMAPI _far _pascal _loadds
#else
#define ACMAPI _far _pascal
#endif
#endif
DECLARE_HANDLE(HACMDRIVERID);
struct
{
int
;};
typedef
struct
*
;
typedef
*
;
typedef HACMDRIVERID FAR *LPHACMDRIVERID;
DECLARE_HANDLE(HACMDRIVER);
struct
{
int
;};
typedef
struct
*
;
typedef
*
;
typedef HACMDRIVER FAR *LPHACMDRIVER;
DECLARE_HANDLE(HACMSTREAM);
struct
{
int
;};
typedef
struct
*
;
typedef
*
;
typedef HACMSTREAM FAR *LPHACMSTREAM;
DECLARE_HANDLE(HACMOBJ);
struct
{
int
;};
typedef
struct
*
;
typedef
*
;
typedef HACMOBJ FAR *LPHACMOBJ;
#ifndef _MMRESULT_
#define _MMRESULT_
typedef UINT MMRESULT;
#endif
#define ACMERR_BASE (512)
#define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
#define ACMERR_BUSY (ACMERR_BASE + 1)
#define ACMERR_UNPREPARED (ACMERR_BASE + 2)
#define ACMERR_CANCELED (ACMERR_BASE + 3)
#define MM_ACM_OPEN (MM_STREAM_OPEN) // conversion callback messages
#define MM_ACM_CLOSE (MM_STREAM_CLOSE)
#define MM_ACM_DONE (MM_STREAM_DONE)
DWORD ACMAPI acmGetVersion
(
void
);
MMRESULT ACMAPI acmMetrics
(
,
,
);
#define ACM_METRIC_COUNT_DRIVERS 1
#define ACM_METRIC_COUNT_CODECS 2
#define ACM_METRIC_COUNT_CONVERTERS 3
#define ACM_METRIC_COUNT_FILTERS 4
#define ACM_METRIC_COUNT_DISABLED 5
#define ACM_METRIC_COUNT_HARDWARE 6
#define ACM_METRIC_COUNT_LOCAL_DRIVERS 20
#define ACM_METRIC_COUNT_LOCAL_CODECS 21
#define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22
#define ACM_METRIC_COUNT_LOCAL_FILTERS 23
#define ACM_METRIC_COUNT_LOCAL_DISABLED 24
#define ACM_METRIC_HARDWARE_WAVE_INPUT 30
#define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31
#define ACM_METRIC_MAX_SIZE_FORMAT 50
#define ACM_METRIC_MAX_SIZE_FILTER 51
#define ACM_METRIC_DRIVER_SUPPORT 100
#define ACM_METRIC_DRIVER_PRIORITY 101
typedef BOOL (CALLBACK *ACMDRIVERENUMCB)
(
hadid,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmDriverEnum
(
,
,
);
#define ACM_DRIVERENUMF_NOLOCAL 0x40000000L
#define ACM_DRIVERENUMF_DISABLED 0x80000000L
MMRESULT ACMAPI acmDriverID
(
,
,
);
#ifdef _WIN32
MMRESULT ACMAPI acmDriverAddA
(
,
,
,
,
);
MMRESULT ACMAPI acmDriverAddW
(
,
,
,
,
);
#ifdef _UNICODE
#define acmDriverAdd acmDriverAddW
#else
#define acmDriverAdd acmDriverAddA
#endif
#else
MMRESULT ACMAPI acmDriverAdd
(
LPHACMDRIVERID phadid,
HINSTANCE hinstModule,
LPARAM lParam,
DWORD dwPriority,
DWORD fdwAdd
);
#endif
#define ACM_DRIVERADDF_NAME 0x00000001L
#define ACM_DRIVERADDF_FUNCTION 0x00000003L // lParam is a procedure
#define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L // lParam is notify hwnd
#define ACM_DRIVERADDF_TYPEMASK 0x00000007L // driver type mask
#define ACM_DRIVERADDF_LOCAL 0x00000000L // is local to current task
#define ACM_DRIVERADDF_GLOBAL 0x00000008L // is global
typedef LRESULT (CALLBACK *ACMDRIVERPROC)(DWORD_PTR, HACMDRIVERID, UINT, LPARAM, LPARAM);
typedef
(
__stdcall
*
)(
,
,
,
,
);
typedef ACMDRIVERPROC FAR *LPACMDRIVERPROC;
MMRESULT ACMAPI acmDriverRemove
(
,
);
MMRESULT ACMAPI acmDriverOpen
(
,
,
);
MMRESULT ACMAPI acmDriverClose
(
,
);
LRESULT ACMAPI acmDriverMessage
(
,
,
,
);
#define ACMDM_USER (DRV_USER + 0x0000)
#define ACMDM_RESERVED_LOW (DRV_USER + 0x2000)
#define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF)
#define ACMDM_BASE ACMDM_RESERVED_LOW
#define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11)
MMRESULT ACMAPI acmDriverPriority
(
,
,
);
#define ACM_DRIVERPRIORITYF_ENABLE 0x00000001L
#define ACM_DRIVERPRIORITYF_DISABLE 0x00000002L
#define ACM_DRIVERPRIORITYF_ABLEMASK 0x00000003L
#define ACM_DRIVERPRIORITYF_BEGIN 0x00010000L
#define ACM_DRIVERPRIORITYF_END 0x00020000L
#define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
#define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
#define ACMDRIVERDETAILS_LONGNAME_CHARS 128
#define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
#define ACMDRIVERDETAILS_LICENSING_CHARS 128
#define ACMDRIVERDETAILS_FEATURES_CHARS 512
#ifdef _WIN32
typedef
struct
{
;
;
;
;
;
;
;
;
;
;
;
char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
} ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, FAR *LPACMDRIVERDETAILSA;
typedef
struct
{
;
;
;
;
;
;
;
;
;
;
;
WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
} ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, FAR *LPACMDRIVERDETAILSW;
#ifdef _UNICODE
#define ACMDRIVERDETAILS ACMDRIVERDETAILSW
#define PACMDRIVERDETAILS PACMDRIVERDETAILSW
#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW
#else
#define ACMDRIVERDETAILS ACMDRIVERDETAILSA
#define PACMDRIVERDETAILS PACMDRIVERDETAILSA
#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSA
#endif
#else
typedef struct tACMDRIVERDETAILS
{
DWORD cbStruct; // number of valid bytes in structure
FOURCC fccType; // compressor type 'audc'
FOURCC fccComp; // sub-type (not used; reserved)
WORD wMid; // manufacturer id
WORD wPid; // product id
DWORD vdwACM; // version of the ACM *compiled* for
DWORD vdwDriver; // version of the driver
DWORD fdwSupport; // misc. support flags
DWORD cFormatTags; // total unique format tags supported
DWORD cFilterTags; // total unique filter tags supported
HICON hicon; // handle to custom icon
char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
} ACMDRIVERDETAILS, *PACMDRIVERDETAILS, FAR *LPACMDRIVERDETAILS;
#endif
#define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
#define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0', '\0', '\0', '\0')
#define ACMDRIVERDETAILS_SUPPORTF_CODEC 0x00000001L
#define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
#define ACMDRIVERDETAILS_SUPPORTF_FILTER 0x00000004L
#define ACMDRIVERDETAILS_SUPPORTF_HARDWARE 0x00000008L
#define ACMDRIVERDETAILS_SUPPORTF_ASYNC 0x00000010L
#define ACMDRIVERDETAILS_SUPPORTF_LOCAL 0x40000000L
#define ACMDRIVERDETAILS_SUPPORTF_DISABLED 0x80000000L
#ifdef _WIN32
MMRESULT ACMAPI acmDriverDetailsA
(
,
,
);
MMRESULT ACMAPI acmDriverDetailsW
(
,
,
);
#ifdef _UNICODE
#define acmDriverDetails acmDriverDetailsW
#else
#define acmDriverDetails acmDriverDetailsA
#endif
#else
MMRESULT ACMAPI acmDriverDetails
(
HACMDRIVERID hadid,
LPACMDRIVERDETAILS padd,
DWORD fdwDetails
);
#endif
#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
#ifdef _WIN32
typedef
struct
{
;
;
;
;
;
;
char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
} ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, FAR *LPACMFORMATTAGDETAILSA;
typedef
struct
{
;
;
;
;
;
;
WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
} ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, FAR *LPACMFORMATTAGDETAILSW;
#ifdef _UNICODE
#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW
#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW
#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW
#else
#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSA
#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSA
#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSA
#endif
#else
typedef struct tACMFORMATTAGDETAILS
{
DWORD cbStruct;
DWORD dwFormatTagIndex;
DWORD dwFormatTag;
DWORD cbFormatSize;
DWORD fdwSupport;
DWORD cStandardFormats;
char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
} ACMFORMATTAGDETAILS, *PACMFORMATTAGDETAILS, FAR *LPACMFORMATTAGDETAILS;
#endif
#ifdef _WIN32
MMRESULT ACMAPI acmFormatTagDetailsA
(
,
,
);
MMRESULT ACMAPI acmFormatTagDetailsW
(
,
,
);
#ifdef _UNICODE
#define acmFormatTagDetails acmFormatTagDetailsW
#else
#define acmFormatTagDetails acmFormatTagDetailsA
#endif
#else
MMRESULT ACMAPI acmFormatTagDetails
(
HACMDRIVER had,
LPACMFORMATTAGDETAILS paftd,
DWORD fdwDetails
);
#endif
#define ACM_FORMATTAGDETAILSF_INDEX 0x00000000L
#define ACM_FORMATTAGDETAILSF_FORMATTAG 0x00000001L
#define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
#define ACM_FORMATTAGDETAILSF_QUERYMASK 0x0000000FL
#ifdef _WIN32
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)
(
hadid,
paftd,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmFormatTagEnumA
(
,
,
,
,
);
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)
(
hadid,
paftd,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmFormatTagEnumW
(
,
,
,
,
);
#ifdef _UNICODE
#define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBW
#define acmFormatTagEnum acmFormatTagEnumW
#else
#define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBA
#define acmFormatTagEnum acmFormatTagEnumA
#endif
#else
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCB)
(
HACMDRIVERID hadid,
LPACMFORMATTAGDETAILS paftd,
DWORD_PTR dwInstance,
DWORD fdwSupport
);
MMRESULT ACMAPI acmFormatTagEnum
(
HACMDRIVER had,
LPACMFORMATTAGDETAILS paftd,
ACMFORMATTAGENUMCB fnCallback,
DWORD_PTR dwInstance,
DWORD fdwEnum
);
#endif
#define ACMFORMATDETAILS_FORMAT_CHARS 128
#ifdef _WIN32
typedef
struct
{
;
;
;
;
;
;
char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
} ACMFORMATDETAILSA, *PACMFORMATDETAILSA, FAR *LPACMFORMATDETAILSA;
typedef
struct
{
;
;
;
;
;
;
WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
} ACMFORMATDETAILSW, *PACMFORMATDETAILSW, FAR *LPACMFORMATDETAILSW;
#ifdef _UNICODE
#define ACMFORMATDETAILS ACMFORMATDETAILSW
#define PACMFORMATDETAILS PACMFORMATDETAILSW
#define LPACMFORMATDETAILS LPACMFORMATDETAILSW
#else
#define ACMFORMATDETAILS ACMFORMATDETAILSA
#define PACMFORMATDETAILS PACMFORMATDETAILSA
#define LPACMFORMATDETAILS LPACMFORMATDETAILSA
#endif
#else
typedef struct tACMFORMATDETAILS
{
DWORD cbStruct;
DWORD dwFormatIndex;
DWORD dwFormatTag;
DWORD fdwSupport;
LPWAVEFORMATEX pwfx;
DWORD cbwfx;
char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
} ACMFORMATDETAILS, *PACMFORMATDETAILS, FAR *LPACMFORMATDETAILS;
#endif
#ifdef _WIN32
MMRESULT ACMAPI acmFormatDetailsA
(
,
,
);
MMRESULT ACMAPI acmFormatDetailsW
(
,
,
);
#ifdef _UNICODE
#define acmFormatDetails acmFormatDetailsW
#else
#define acmFormatDetails acmFormatDetailsA
#endif
#else
MMRESULT ACMAPI acmFormatDetails
(
HACMDRIVER had,
LPACMFORMATDETAILS pafd,
DWORD fdwDetails
);
#endif
#define ACM_FORMATDETAILSF_INDEX 0x00000000L
#define ACM_FORMATDETAILSF_FORMAT 0x00000001L
#define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
#ifdef _WIN32
typedef BOOL (CALLBACK *ACMFORMATENUMCBA)
(
hadid,
pafd,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmFormatEnumA
(
,
,
,
,
);
typedef BOOL (CALLBACK *ACMFORMATENUMCBW)
(
hadid,
pafd,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmFormatEnumW
(
,
,
,
,
);
#ifdef _UNICODE
#define ACMFORMATENUMCB ACMFORMATENUMCBW
#define acmFormatEnum acmFormatEnumW
#else
#define ACMFORMATENUMCB ACMFORMATENUMCBA
#define acmFormatEnum acmFormatEnumA
#endif
#else
typedef BOOL (CALLBACK *ACMFORMATENUMCB)
(
HACMDRIVERID hadid,
LPACMFORMATDETAILS pafd,
DWORD_PTR dwInstance,
DWORD fdwSupport
);
MMRESULT ACMAPI acmFormatEnum
(
HACMDRIVER had,
LPACMFORMATDETAILS pafd,
ACMFORMATENUMCB fnCallback,
DWORD_PTR dwInstance,
DWORD fdwEnum
);
#endif
#define ACM_FORMATENUMF_WFORMATTAG 0x00010000L
#define ACM_FORMATENUMF_NCHANNELS 0x00020000L
#define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
#define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
#define ACM_FORMATENUMF_CONVERT 0x00100000L
#define ACM_FORMATENUMF_SUGGEST 0x00200000L
#define ACM_FORMATENUMF_HARDWARE 0x00400000L
#define ACM_FORMATENUMF_INPUT 0x00800000L
#define ACM_FORMATENUMF_OUTPUT 0x01000000L
MMRESULT ACMAPI acmFormatSuggest
(
,
,
,
,
);
#define ACM_FORMATSUGGESTF_WFORMATTAG 0x00010000L
#define ACM_FORMATSUGGESTF_NCHANNELS 0x00020000L
#define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
#define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
#define ACM_FORMATSUGGESTF_TYPEMASK 0x00FF0000L
#ifdef _WIN32
#define ACMHELPMSGSTRINGA "acmchoose_help"
#define ACMHELPMSGSTRINGW L"acmchoose_help"
#define ACMHELPMSGCONTEXTMENUA "acmchoose_contextmenu"
#define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu"
#define ACMHELPMSGCONTEXTHELPA "acmchoose_contexthelp"
#define ACMHELPMSGCONTEXTHELPW L"acmchoose_contexthelp"
#ifdef _UNICODE
#define ACMHELPMSGSTRING ACMHELPMSGSTRINGW
#define ACMHELPMSGCONTEXTMENU ACMHELPMSGCONTEXTMENUW
#define ACMHELPMSGCONTEXTHELP ACMHELPMSGCONTEXTHELPW
#else
#define ACMHELPMSGSTRING ACMHELPMSGSTRINGA
#define ACMHELPMSGCONTEXTMENU ACMHELPMSGCONTEXTMENUA
#define ACMHELPMSGCONTEXTHELP ACMHELPMSGCONTEXTHELPA
#endif
#else
#define ACMHELPMSGSTRING "acmchoose_help"
#define ACMHELPMSGCONTEXTMENU "acmchoose_contextmenu"
#define ACMHELPMSGCONTEXTHELP "acmchoose_contexthelp"
#endif
#define MM_ACM_FORMATCHOOSE (0x8000)
#define FORMATCHOOSE_MESSAGE 0
#define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
#define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1)
#define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2)
#ifdef _WIN32
typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)
(
hwnd,
uMsg,
wParam,
lParam
);
typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)
(
hwnd,
uMsg,
wParam,
lParam
);
#ifdef _UNICODE
#define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCW
#else
#define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCA
#endif
#else
typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROC)
(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
#endif
#ifdef _WIN32
typedef
struct
{
;
;
;
;
;
;
char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
;
;
;
;
;
;
;
;
} ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, FAR *LPACMFORMATCHOOSEA;
typedef
struct
{
;
;
;
;
;
;
WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
;
;
;
;
;
;
;
;
} ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, FAR *LPACMFORMATCHOOSEW;
#ifdef _UNICODE
#define ACMFORMATCHOOSE ACMFORMATCHOOSEW
#define PACMFORMATCHOOSE PACMFORMATCHOOSEW
#define LPACMFORMATCHOOSE LPACMFORMATCHOOSEW
#else
#define ACMFORMATCHOOSE ACMFORMATCHOOSEA
#define PACMFORMATCHOOSE PACMFORMATCHOOSEA
#define LPACMFORMATCHOOSE LPACMFORMATCHOOSEA
#endif
#else
typedef struct tACMFORMATCHOOSE
{
DWORD cbStruct; // sizeof(ACMFORMATCHOOSE)
DWORD fdwStyle; // chooser style flags
HWND hwndOwner; // caller's window handle
LPWAVEFORMATEX pwfx; // ptr to wfx buf to receive choice
DWORD cbwfx; // size of mem buf for pwfx
LPCSTR pszTitle; // dialog box title bar
char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
LPSTR pszName; // custom name selection
DWORD cchName; // size in chars of mem buf for pszName
DWORD fdwEnum; // format enumeration restrictions
LPWAVEFORMATEX pwfxEnum; // format describing restrictions
HINSTANCE hInstance; // app instance containing dlg template
LPCSTR pszTemplateName; // custom template name
LPARAM lCustData; // data passed to hook fn.
ACMFORMATCHOOSEHOOKPROC pfnHook; // ptr to hook function
} ACMFORMATCHOOSE, *PACMFORMATCHOOSE, FAR *LPACMFORMATCHOOSE;
#endif
#define ACMFORMATCHOOSE_STYLEF_SHOWHELP 0x00000004L
#define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
#define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT 0x00000040L
#define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
#ifdef _WIN32
MMRESULT ACMAPI acmFormatChooseA
(
);
MMRESULT ACMAPI acmFormatChooseW
(
);
#ifdef _UNICODE
#define acmFormatChoose acmFormatChooseW
#else
#define acmFormatChoose acmFormatChooseA
#endif
#else
MMRESULT ACMAPI acmFormatChoose
(
LPACMFORMATCHOOSE pafmtc
);
#endif
#define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
#ifdef _WIN32
typedef
struct
{
;
;
;
;
;
;
char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
} ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, FAR *LPACMFILTERTAGDETAILSA;
typedef
struct
{
;
;
;
;
;
;
WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
} ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, FAR *LPACMFILTERTAGDETAILSW;
#ifdef _UNICODE
#define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSW
#define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSW
#define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSW
#else
#define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSA
#define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSA
#define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSA
#endif
#else
typedef struct tACMFILTERTAGDETAILS
{
DWORD cbStruct;
DWORD dwFilterTagIndex;
DWORD dwFilterTag;
DWORD cbFilterSize;
DWORD fdwSupport;
DWORD cStandardFilters;
char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
} ACMFILTERTAGDETAILS, *PACMFILTERTAGDETAILS, FAR *LPACMFILTERTAGDETAILS;
#endif
#ifdef _WIN32
MMRESULT ACMAPI acmFilterTagDetailsA
(
,
,
);
MMRESULT ACMAPI acmFilterTagDetailsW
(
,
,
);
#ifdef _UNICODE
#define acmFilterTagDetails acmFilterTagDetailsW
#else
#define acmFilterTagDetails acmFilterTagDetailsA
#endif
#else
MMRESULT ACMAPI acmFilterTagDetails
(
HACMDRIVER had,
LPACMFILTERTAGDETAILS paftd,
DWORD fdwDetails
);
#endif
#define ACM_FILTERTAGDETAILSF_INDEX 0x00000000L
#define ACM_FILTERTAGDETAILSF_FILTERTAG 0x00000001L
#define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
#define ACM_FILTERTAGDETAILSF_QUERYMASK 0x0000000FL
#ifdef _WIN32
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)
(
hadid,
paftd,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmFilterTagEnumA
(
,
,
,
,
);
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)
(
hadid,
paftd,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmFilterTagEnumW
(
,
,
,
,
);
#ifdef _UNICODE
#define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBW
#define acmFilterTagEnum acmFilterTagEnumW
#else
#define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBA
#define acmFilterTagEnum acmFilterTagEnumA
#endif
#else
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCB)
(
HACMDRIVERID hadid,
LPACMFILTERTAGDETAILS paftd,
DWORD_PTR dwInstance,
DWORD fdwSupport
);
MMRESULT ACMAPI acmFilterTagEnum
(
HACMDRIVER had,
LPACMFILTERTAGDETAILS paftd,
ACMFILTERTAGENUMCB fnCallback,
DWORD_PTR dwInstance,
DWORD fdwEnum
);
#endif
#define ACMFILTERDETAILS_FILTER_CHARS 128
#ifdef _WIN32
typedef
struct
{
;
;
;
;
;
;
char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
} ACMFILTERDETAILSA, *PACMFILTERDETAILSA, FAR *LPACMFILTERDETAILSA;
typedef
struct
{
;
;
;
;
;
;
WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
} ACMFILTERDETAILSW, *PACMFILTERDETAILSW, FAR *LPACMFILTERDETAILSW;
#ifdef _UNICODE
#define ACMFILTERDETAILS ACMFILTERDETAILSW
#define PACMFILTERDETAILS PACMFILTERDETAILSW
#define LPACMFILTERDETAILS LPACMFILTERDETAILSW
#else
#define ACMFILTERDETAILS ACMFILTERDETAILSA
#define PACMFILTERDETAILS PACMFILTERDETAILSA
#define LPACMFILTERDETAILS LPACMFILTERDETAILSA
#endif
#else
typedef struct tACMFILTERDETAILS
{
DWORD cbStruct;
DWORD dwFilterIndex;
DWORD dwFilterTag;
DWORD fdwSupport;
LPWAVEFILTER pwfltr;
DWORD cbwfltr;
char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
} ACMFILTERDETAILS, *PACMFILTERDETAILS, FAR *LPACMFILTERDETAILS;
#endif
#ifdef _WIN32
MMRESULT ACMAPI acmFilterDetailsA
(
,
,
);
MMRESULT ACMAPI acmFilterDetailsW
(
,
,
);
#ifdef _UNICODE
#define acmFilterDetails acmFilterDetailsW
#else
#define acmFilterDetails acmFilterDetailsA
#endif
#else
MMRESULT ACMAPI acmFilterDetails
(
HACMDRIVER had,
LPACMFILTERDETAILS pafd,
DWORD fdwDetails
);
#endif
#define ACM_FILTERDETAILSF_INDEX 0x00000000L
#define ACM_FILTERDETAILSF_FILTER 0x00000001L
#define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
#ifdef _WIN32
typedef BOOL (CALLBACK *ACMFILTERENUMCBA)
(
hadid,
pafd,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmFilterEnumA
(
,
,
,
,
);
typedef BOOL (CALLBACK *ACMFILTERENUMCBW)
(
hadid,
pafd,
dwInstance,
fdwSupport
);
MMRESULT ACMAPI acmFilterEnumW
(
,
,
,
,
);
#ifdef _UNICODE
#define ACMFILTERENUMCB ACMFILTERENUMCBW
#define acmFilterEnum acmFilterEnumW
#else
#define ACMFILTERENUMCB ACMFILTERENUMCBA
#define acmFilterEnum acmFilterEnumA
#endif
#else
typedef BOOL (CALLBACK *ACMFILTERENUMCB)
(
HACMDRIVERID hadid,
LPACMFILTERDETAILS pafd,
DWORD_PTR dwInstance,
DWORD fdwSupport
);
MMRESULT ACMAPI acmFilterEnum
(
HACMDRIVER had,
LPACMFILTERDETAILS pafd,
ACMFILTERENUMCB fnCallback,
DWORD_PTR dwInstance,
DWORD fdwEnum
);
#endif
#define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
#define MM_ACM_FILTERCHOOSE (0x8000)
#define FILTERCHOOSE_MESSAGE 0
#define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
#define FILTERCHOOSE_FILTER_VERIFY (FILTERCHOOSE_MESSAGE+1)
#define FILTERCHOOSE_CUSTOM_VERIFY (FILTERCHOOSE_MESSAGE+2)
#ifdef _WIN32
typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)
(
hwnd,
uMsg,
wParam,
lParam
);
typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)
(
hwnd,
uMsg,
wParam,
lParam
);
#ifdef _UNICODE
#define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCW
#else
#define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCA
#endif
#else
typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROC)
(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
#endif
#ifdef _WIN32
typedef
struct
{
;
;
;
;
;
;
char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
;
;
;
;
;
;
;
;
} ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, FAR *LPACMFILTERCHOOSEA;
typedef
struct
{
;
;
;
;
;
;
WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
;
;
;
;
;
;
;
;
} ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, FAR *LPACMFILTERCHOOSEW;
#ifdef _UNICODE
#define ACMFILTERCHOOSE ACMFILTERCHOOSEW
#define PACMFILTERCHOOSE PACMFILTERCHOOSEW
#define LPACMFILTERCHOOSE LPACMFILTERCHOOSEW
#else
#define ACMFILTERCHOOSE ACMFILTERCHOOSEA
#define PACMFILTERCHOOSE PACMFILTERCHOOSEA
#define LPACMFILTERCHOOSE LPACMFILTERCHOOSEA
#endif
#else
typedef struct tACMFILTERCHOOSE
{
DWORD cbStruct; // sizeof(ACMFILTERCHOOSE)
DWORD fdwStyle; // chooser style flags
HWND hwndOwner; // caller's window handle
LPWAVEFILTER pwfltr; // ptr to wfltr buf to receive choice
DWORD cbwfltr; // size of mem buf for pwfltr
LPCSTR pszTitle;
char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
LPSTR pszName; // custom name selection
DWORD cchName; // size in chars of mem buf for pszName
DWORD fdwEnum; // filter enumeration restrictions
LPWAVEFILTER pwfltrEnum; // filter describing restrictions
HINSTANCE hInstance; // app instance containing dlg template
LPCSTR pszTemplateName; // custom template name
LPARAM lCustData; // data passed to hook fn.
ACMFILTERCHOOSEHOOKPROC pfnHook; // ptr to hook function
} ACMFILTERCHOOSE, *PACMFILTERCHOOSE, FAR *LPACMFILTERCHOOSE;
#endif
#define ACMFILTERCHOOSE_STYLEF_SHOWHELP 0x00000004L
#define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
#define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT 0x00000040L
#define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
#ifdef _WIN32
MMRESULT ACMAPI acmFilterChooseA
(
);
MMRESULT ACMAPI acmFilterChooseW
(
);
#ifdef _UNICODE
#define acmFilterChoose acmFilterChooseW
#else
#define acmFilterChoose acmFilterChooseA
#endif
#else
MMRESULT ACMAPI acmFilterChoose
(
LPACMFILTERCHOOSE pafltrc
);
#endif
#ifdef _WIN64
#define _DRVRESERVED 15
#else
#define _DRVRESERVED 10
#endif // _WIN64
typedef
struct
{
;
;
;
;
;
;
;
;
;
;
;
DWORD dwReservedDriver[_DRVRESERVED]; // driver reserved work space
} ACMSTREAMHEADER, *PACMSTREAMHEADER, FAR *LPACMSTREAMHEADER;
} , *, *;
#define ACMSTREAMHEADER_STATUSF_DONE 0x00010000L
#define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
#define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L
MMRESULT ACMAPI acmStreamOpen
(
,
,
,
,
,
,
,
);
#define ACM_STREAMOPENF_QUERY 0x00000001
#define ACM_STREAMOPENF_ASYNC 0x00000002
#define ACM_STREAMOPENF_NONREALTIME 0x00000004
MMRESULT ACMAPI acmStreamClose
(
,
);
MMRESULT ACMAPI acmStreamSize
(
,
,
,
);
#define ACM_STREAMSIZEF_SOURCE 0x00000000L
#define ACM_STREAMSIZEF_DESTINATION 0x00000001L
#define ACM_STREAMSIZEF_QUERYMASK 0x0000000FL
MMRESULT ACMAPI acmStreamReset
(
,
);
MMRESULT ACMAPI acmStreamMessage
(
,
,
,
);
MMRESULT ACMAPI acmStreamConvert
(
,
,
);
#define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
#define ACM_STREAMCONVERTF_START 0x00000010
#define ACM_STREAMCONVERTF_END 0x00000020
MMRESULT ACMAPI acmStreamPrepareHeader
(
,
,
);
MMRESULT ACMAPI acmStreamUnprepareHeader
(
,
,
);
#include "poppack.h" /* Revert to default packing */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif /* _INC_ACM */