/* * msacm.h - Declarations for MSACM */ #ifndef __WINE_MSACM_H #define __WINE_MSACM_H #include "wintypes.h" #include "driver.h" #include "mmsystem.h" #include "mmreg.h" /*********************************************************************** * Types */ /* FIXME: Move to wintypes.h */ #define DECLARE_HANDLE(a) \ typedef HANDLE16 a##16; \ typedef HANDLE32 a##32; \ typedef a##16 *P##a##16; \ typedef a##16 *NP##a##16; \ typedef a##16 *LP##a##16; \ typedef a##32 *P##a##32; DECLARE_HANDLE(HACMDRIVERID); DECLARE_HANDLE(HACMDRIVER); DECLARE_HANDLE(HACMSTREAM); DECLARE_HANDLE(HACMOBJ); /* FIXME: Remove when define moved to wintypes.h */ #undef DECLARE_HANDLE /*********************************************************************** * Defines/Enums */ #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 #define MM_ACM_CLOSE MM_STREAM_CLOSE #define MM_ACM_DONE MM_STREAM_DONE #define ACM_DRIVERADDF_FUNCTION 0x00000003L #define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L #define ACM_DRIVERADDF_TYPEMASK 0x00000007L #define ACM_DRIVERADDF_LOCAL 0x00000000L #define ACM_DRIVERADDF_GLOBAL 0x00000008L #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 #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 #define ACM_DRIVERENUMF_NOLOCAL 0x40000000L #define ACM_DRIVERENUMF_DISABLED 0x80000000L #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 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) #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 #define ACMFILTERDETAILS_FILTER_CHARS 128 #define ACM_FILTERDETAILSF_INDEX 0x00000000L #define ACM_FILTERDETAILSF_FILTER 0x00000001L #define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48 #define ACM_FILTERTAGDETAILSF_INDEX 0x00000000L #define ACM_FILTERTAGDETAILSF_FILTERTAG 0x00000001L #define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L #define ACM_FILTERTAGDETAILSF_QUERYMASK 0x0000000FL #define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L #define ACMHELPMSGSTRING32A "acmchoose_help" #define ACMHELPMSGSTRING32W L"acmchoose_help" #define ACMHELPMSGSTRING16 "acmchoose_help" #define ACMHELPMSGCONTEXTMENU32A "acmchoose_contextmenu" #define ACMHELPMSGCONTEXTMENU32W L"acmchoose_contextmenu" #define ACMHELPMSGCONTEXTMENU16 "acmchoose_contextmenu" #define ACMHELPMSGCONTEXTHELP32A "acmchoose_contexthelp" #define ACMHELPMSGCONTEXTHELP32W L"acmchoose_contexthelp" #define ACMHELPMSGCONTEXTHELP16 "acmchoose_contexthelp" #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) #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 #define ACMFORMATDETAILS_FORMAT_CHARS 128 #define ACM_FORMATDETAILSF_INDEX 0x00000000L #define ACM_FORMATDETAILSF_FORMAT 0x00000001L #define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL #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 #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 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48 #define ACM_FORMATTAGDETAILSF_INDEX 0x00000000L #define ACM_FORMATTAGDETAILSF_FORMATTAG 0x00000001L #define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L #define ACM_FORMATTAGDETAILSF_QUERYMASK 0x0000000FL #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 #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004 #define ACM_STREAMCONVERTF_START 0x00000010 #define ACM_STREAMCONVERTF_END 0x00000020 #define ACMSTREAMHEADER_STATUSF_DONE 0x00010000L #define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L #define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L #define ACM_STREAMOPENF_QUERY 0x00000001 #define ACM_STREAMOPENF_ASYNC 0x00000002 #define ACM_STREAMOPENF_NONREALTIME 0x00000004 #define ACM_STREAMSIZEF_SOURCE 0x00000000L #define ACM_STREAMSIZEF_DESTINATION 0x00000001L #define ACM_STREAMSIZEF_QUERYMASK 0x0000000FL #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) /*********************************************************************** * Callbacks */ typedef BOOL32 (CALLBACK *ACMDRIVERENUMCB32)( HACMDRIVERID32 hadid, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL16 (CALLBACK *ACMDRIVERENUMCB16)( HACMDRIVERID16 hadid, DWORD dwInstance, DWORD fdwSupport ); typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32A)( HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam ); typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32W)( HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam ); typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC16)( HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam ); typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32A)( HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam ); typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32W)( HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam ); typedef UINT16 (CALLBACK *ACMFORMATCHOOSEHOOKPROC16)( HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam ); /*********************************************************************** * Structures */ typedef struct _ACMDRIVERDETAILS32A { DWORD cbStruct; FOURCC fccType; FOURCC fccComp; WORD wMid; WORD wPid; DWORD vdwACM; DWORD vdwDriver; DWORD fdwSupport; DWORD cFormatTags; DWORD cFilterTags; HICON32 hicon; 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]; } ACMDRIVERDETAILS32A, *PACMDRIVERDETAILS32A; typedef struct _ACMDRIVERDETAILS32W { DWORD cbStruct; FOURCC fccType; FOURCC fccComp; WORD wMid; WORD wPid; DWORD vdwACM; DWORD vdwDriver; DWORD fdwSupport; DWORD cFormatTags; DWORD cFilterTags; HICON32 hicon; 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]; } ACMDRIVERDETAILS32W, *PACMDRIVERDETAILS32W; typedef struct _ACMDRIVERDETAILS16 { DWORD cbStruct; FOURCC fccType; FOURCC fccComp; WORD wMid; WORD wPid; DWORD vdwACM; DWORD vdwDriver; DWORD fdwSupport; DWORD cFormatTags; DWORD cFilterTags; HICON16 hicon; 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]; } ACMDRIVERDETAILS16, *NPACMDRIVERDETAILS16, *LPACMDRIVERDETAILS16; typedef struct _ACMFILTERCHOOSE32A { DWORD cbStruct; DWORD fdwStyle; HWND32 hwndOwner; PWAVEFILTER32 pwfltr; DWORD cbwfltr; LPCSTR pszTitle; CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]; LPSTR pszName; DWORD cchName; DWORD fdwEnum; PWAVEFILTER32 pwfltrEnum; HINSTANCE32 hInstance; LPCSTR pszTemplateName; LPARAM lCustData; ACMFILTERCHOOSEHOOKPROC32A pfnHook; } ACMFILTERCHOOSE32A, *PACMFILTERCHOOSE32A; typedef struct _ACMFILTERCHOOSE32W { DWORD cbStruct; DWORD fdwStyle; HWND32 hwndOwner; PWAVEFILTER32 pwfltr; DWORD cbwfltr; LPCWSTR pszTitle; WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]; LPWSTR pszName; DWORD cchName; DWORD fdwEnum; PWAVEFILTER32 pwfltrEnum; HINSTANCE32 hInstance; LPCWSTR pszTemplateName; LPARAM lCustData; ACMFILTERCHOOSEHOOKPROC32W pfnHook; } ACMFILTERCHOOSE32W, *PACMFILTERCHOOSE32W; typedef struct _ACMFILTERCHOOSE16 { DWORD cbStruct; DWORD fdwStyle; HWND16 hwndOwner; LPWAVEFILTER16 pwfltr; DWORD cbwfltr; LPCSTR pszTitle; char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; char szFilter[ACMFILTERDETAILS_FILTER_CHARS]; LPSTR pszName; DWORD cchName; DWORD fdwEnum; LPWAVEFILTER16 pwfltrEnum; HINSTANCE16 hInstance; LPCSTR pszTemplateName; LPARAM lCustData; ACMFILTERCHOOSEHOOKPROC16 pfnHook; } ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16; typedef struct _ACMFILTERDETAILS32A { DWORD cbStruct; DWORD dwFilterIndex; DWORD dwFilterTag; DWORD fdwSupport; PWAVEFILTER32 pwfltr; DWORD cbwfltr; CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]; } ACMFILTERDETAILS32A, *PACMFILTERDETAILS32A; typedef struct _ACMFILTERDETAILS32W { DWORD cbStruct; DWORD dwFilterIndex; DWORD dwFilterTag; DWORD fdwSupport; PWAVEFILTER32 pwfltr; DWORD cbwfltr; WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]; } ACMFILTERDETAILS32W, *PACMFILTERDETAILS32W; typedef struct _ACMFILTERDETAILS16 { DWORD cbStruct; DWORD dwFilterIndex; DWORD dwFilterTag; DWORD fdwSupport; LPWAVEFILTER16 pwfltr; DWORD cbwfltr; CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]; } ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16; typedef struct _ACMFILTERTAGDETAILS32A { DWORD cbStruct; DWORD dwFilterTagIndex; DWORD dwFilterTag; DWORD cbFilterSize; DWORD fdwSupport; DWORD cStandardFilters; CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; } ACMFILTERTAGDETAILS32A, *PACMFILTERTAGDETAILS32A; typedef struct _ACMFILTERTAGDETAILS32W { DWORD cbStruct; DWORD dwFilterTagIndex; DWORD dwFilterTag; DWORD cbFilterSize; DWORD fdwSupport; DWORD cStandardFilters; WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; } ACMFILTERTAGDETAILS32W, *PACMFILTERTAGDETAILS32W; typedef struct _ACMFILTERTAGDETAILS16 { DWORD cbStruct; DWORD dwFilterTagIndex; DWORD dwFilterTag; DWORD cbFilterSize; DWORD fdwSupport; DWORD cStandardFilters; CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; } ACMFILTERTAGDETAILS16, *NPACMFILTERTAGDETAILS16, *LPACMFILTERTAGDETAILS16; typedef struct _ACMFORMATCHOOSE32A { DWORD cbStruct; DWORD fdwStyle; HWND32 hwndOwner; PWAVEFORMATEX32 pwfx; DWORD cbwfx; LPCSTR pszTitle; CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; LPSTR pszName; DWORD cchName; DWORD fdwEnum; PWAVEFORMATEX32 pwfxEnum; HINSTANCE32 hInstance; LPCSTR pszTemplateName; LPARAM lCustData; ACMFORMATCHOOSEHOOKPROC32A pfnHook; } ACMFORMATCHOOSE32A, *PACMFORMATCHOOSE32A; typedef struct _ACMFORMATCHOOSE32W { DWORD cbStruct; DWORD fdwStyle; HWND32 hwndOwner; PWAVEFORMATEX32 pwfx; DWORD cbwfx; LPCWSTR pszTitle; WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; LPWSTR pszName; DWORD cchName; DWORD fdwEnum; LPWAVEFORMATEX pwfxEnum; HINSTANCE32 hInstance; LPCWSTR pszTemplateName; LPARAM lCustData; ACMFORMATCHOOSEHOOKPROC32W pfnHook; } ACMFORMATCHOOSE32W, *PACMFORMATCHOOSE32W; typedef struct _ACMFORMATCHOOSE16 { DWORD cbStruct; DWORD fdwStyle; HWND16 hwndOwner; LPWAVEFORMATEX16 pwfx; DWORD cbwfx; LPCSTR pszTitle; CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; LPSTR pszName; DWORD cchName; DWORD fdwEnum; LPWAVEFORMATEX16 pwfxEnum; HINSTANCE16 hInstance; LPCSTR pszTemplateName; LPARAM lCustData; ACMFORMATCHOOSEHOOKPROC16 pfnHook; } ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16; typedef struct _ACMFORMATDETAILS32A { DWORD cbStruct; DWORD dwFormatIndex; DWORD dwFormatTag; DWORD fdwSupport; PWAVEFORMATEX32 pwfx; DWORD cbwfx; CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; } ACMFORMATDETAILS32A, *PACMFORMATDETAILS32A; typedef struct _ACMFORMATDETAILS32W { DWORD cbStruct; DWORD dwFormatIndex; DWORD dwFormatTag; DWORD fdwSupport; PWAVEFORMATEX32 pwfx; DWORD cbwfx; WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; } ACMFORMATDETAILS32W, *PACMFORMATDETAILS32W; typedef struct _ACMFORMATDETAILS16 { DWORD cbStruct; DWORD dwFormatIndex; DWORD dwFormatTag; DWORD fdwSupport; LPWAVEFORMATEX16 pwfx; DWORD cbwfx; CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; } ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16; typedef struct _ACMFORMATTAGDETAILS32A { DWORD cbStruct; DWORD dwFormatTagIndex; DWORD dwFormatTag; DWORD cbFormatSize; DWORD fdwSupport; DWORD cStandardFormats; CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; } ACMFORMATTAGDETAILS32A, *PACMFORMATTAGDETAILS32A; typedef struct _ACMFORMATTAGDETAILS32W { DWORD cbStruct; DWORD dwFormatTagIndex; DWORD dwFormatTag; DWORD cbFormatSize; DWORD fdwSupport; DWORD cStandardFormats; WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; } ACMFORMATTAGDETAILS32W, *PACMFORMATTAGDETAILS32W; typedef struct _ACMFORMATTAGDETAILS16 { DWORD cbStruct; DWORD dwFormatTagIndex; DWORD dwFormatTag; DWORD cbFormatSize; DWORD fdwSupport; DWORD cStandardFormats; CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; } ACMFORMATTAGDETAILS16, *NPACMFORMATTAGDETAILS16, *LPACMFORMATTAGDETAILS16; typedef struct _ACMSTREAMHEADER { DWORD cbStruct; DWORD fdwStatus; DWORD dwUser; LPBYTE pbSrc; DWORD cbSrcLength; DWORD cbSrcLengthUsed; DWORD dwSrcUser; LPBYTE pbDst; DWORD cbDstLength; DWORD cbDstLengthUsed; DWORD dwDstUser; DWORD dwReservedDriver[10]; } ACMSTREAMHEADER16, *NPACMSTREAMHEADER16, *LPACMSTREAMHEADER16, ACMSTREAMHEADER32, *PACMSTREAMHEADER32; /*********************************************************************** * Callbacks 2 */ typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32A)( HACMDRIVERID32 hadid, PACMFILTERDETAILS32A pafd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32W)( HACMDRIVERID32 hadid, PACMFILTERDETAILS32W pafd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL16 (CALLBACK *ACMFILTERENUMCB16)( HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32A)( HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32A paftd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32W)( HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32W paftd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL16 (CALLBACK *ACMFILTERTAGENUMCB16)( HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32A)( HACMDRIVERID32 hadid, PACMFORMATDETAILS32A pafd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32W)( HACMDRIVERID32 hadid, PACMFORMATDETAILS32W pafd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL16 (CALLBACK *ACMFORMATENUMCB16)( HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32A)( HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32A paftd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32W)( HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32W paftd, DWORD dwInstance, DWORD fdwSupport ); typedef BOOL16 (CALLBACK *ACMFORMATTAGENUMCB16)( HACMDRIVERID16 hadid, LPACMFORMATTAGDETAILS16 paftd, DWORD dwInstance, DWORD fdwSupport ); /*********************************************************************** * Functions - Win16 */ DWORD WINAPI acmGetVersion16( ); MMRESULT16 WINAPI acmMetrics16( HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric ); MMRESULT16 WINAPI acmDriverEnum16( ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT16 WINAPI acmDriverDetails16( HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails ); MMRESULT16 WINAPI acmDriverAdd16( LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd ); MMRESULT16 WINAPI acmDriverRemove16( HACMDRIVERID16 hadid, DWORD fdwRemove ); MMRESULT16 WINAPI acmDriverOpen16( LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen ); MMRESULT16 WINAPI acmDriverClose16( HACMDRIVER16 had, DWORD fdwClose ); LRESULT WINAPI acmDriverMessage16( HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2 ); MMRESULT16 WINAPI acmDriverID16( HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID ); MMRESULT16 WINAPI acmDriverPriority16( HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority ); MMRESULT16 WINAPI acmFormatTagDetails16( HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails ); MMRESULT16 WINAPI acmFormatTagEnum16( HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT16 WINAPI acmFormatChoose16( LPACMFORMATCHOOSE16 pafmtc ); MMRESULT16 WINAPI acmFormatDetails16( HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails ); MMRESULT16 WINAPI acmFormatEnum16( HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT16 WINAPI acmFormatSuggest16( HACMDRIVER16 had, LPWAVEFORMATEX16 pwfxSrc, LPWAVEFORMATEX16 pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest ); MMRESULT16 WINAPI acmFilterTagDetails16( HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails ); MMRESULT16 WINAPI acmFilterTagEnum16( HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT16 WINAPI acmFilterChoose16( LPACMFILTERCHOOSE16 pafltrc ); MMRESULT16 WINAPI acmFilterDetails16( HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails ); MMRESULT16 WINAPI acmFilterEnum16( HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT16 WINAPI acmStreamOpen16( LPHACMSTREAM16 phas, HACMDRIVER16 had, LPWAVEFORMATEX16 pwfxSrc, LPWAVEFORMATEX16 pwfxDst, LPWAVEFILTER16 pwfltr, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen ); MMRESULT16 WINAPI acmStreamClose16( HACMSTREAM16 has, DWORD fdwClose ); MMRESULT16 WINAPI acmStreamSize16( HACMSTREAM16 has, DWORD cbInput, LPDWORD pdwOutputBytes, DWORD fdwSize ); MMRESULT16 WINAPI acmStreamConvert16( HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert ); MMRESULT16 WINAPI acmStreamReset16( HACMSTREAM16 has, DWORD fdwReset ); MMRESULT16 WINAPI acmStreamPrepareHeader16( HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare ); MMRESULT16 WINAPI acmStreamUnprepareHeader16( HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare ); /*********************************************************************** * Functions - Win32 */ MMRESULT32 WINAPI acmDriverAdd32A( PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd ); MMRESULT32 WINAPI acmDriverAdd32W( PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd ); MMRESULT32 WINAPI acmDriverClose32( HACMDRIVER32 had, DWORD fdwClose ); MMRESULT32 WINAPI acmDriverDetails32A( HACMDRIVERID32 hadid, PACMDRIVERDETAILS32A padd, DWORD fdwDetails ); MMRESULT32 WINAPI acmDriverDetails32W( HACMDRIVERID32 hadid, PACMDRIVERDETAILS32W padd, DWORD fdwDetails ); MMRESULT32 WINAPI acmDriverEnum32( ACMDRIVERENUMCB32 fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT32 WINAPI acmDriverID32( HACMOBJ32 hao, PHACMDRIVERID32 phadid, DWORD fdwDriverID ); LRESULT WINAPI acmDriverMessage32( HACMDRIVER32 had, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2 ); MMRESULT32 WINAPI acmDriverOpen32( PHACMDRIVER32 phad, HACMDRIVERID32 hadid, DWORD fdwOpen ); MMRESULT32 WINAPI acmDriverPriority32( HACMDRIVERID32 hadid, DWORD dwPriority, DWORD fdwPriority ); MMRESULT32 WINAPI acmDriverRemove32( HACMDRIVERID32 hadid, DWORD fdwRemove ); MMRESULT32 WINAPI acmFilterChoose32A( PACMFILTERCHOOSE32A pafltrc ); MMRESULT32 WINAPI acmFilterChoose32W( PACMFILTERCHOOSE32W pafltrc ); MMRESULT32 WINAPI acmFilterDetails32A( HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, DWORD fdwDetails ); MMRESULT32 WINAPI acmFilterDetails32W( HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, DWORD fdwDetails ); MMRESULT32 WINAPI acmFilterEnum32A( HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, ACMFILTERENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT32 WINAPI acmFilterEnum32W( HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, ACMFILTERENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT32 WINAPI acmFilterTagDetails32A( HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd, DWORD fdwDetails ); MMRESULT32 WINAPI acmFilterTagDetails32W( HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd, DWORD fdwDetails ); MMRESULT32 WINAPI acmFilterTagEnum32A( HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd, ACMFILTERTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT32 WINAPI acmFilterTagEnum32W( HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd, ACMFILTERTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT32 WINAPI acmFormatChoose32A( PACMFORMATCHOOSE32A pafmtc ); MMRESULT32 WINAPI acmFormatChoose32W( PACMFORMATCHOOSE32W pafmtc ); MMRESULT32 WINAPI acmFormatDetails32A( HACMDRIVER32 had, PACMFORMATDETAILS32A pafd, DWORD fdwDetails ); MMRESULT32 WINAPI acmFormatDetails32W( HACMDRIVER32 had, PACMFORMATDETAILS32W pafd, DWORD fdwDetails ); MMRESULT32 WINAPI acmFormatEnum32A( HACMDRIVER32 had, PACMFORMATDETAILS32A pafd, ACMFORMATENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT32 WINAPI acmFormatEnum32W( HACMDRIVER32 had, PACMFORMATDETAILS32W pafd, ACMFORMATENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT32 WINAPI acmFormatSuggest32( HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc, PWAVEFORMATEX32 pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest ); MMRESULT32 WINAPI acmFormatTagDetails32A( HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd, DWORD fdwDetails ); MMRESULT32 WINAPI acmFormatTagDetails32W( HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd, DWORD fdwDetails ); MMRESULT32 WINAPI acmFormatTagEnum32A( HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd, ACMFORMATTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum ); MMRESULT32 WINAPI acmFormatTagEnum32W( HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd, ACMFORMATTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum ); DWORD WINAPI acmGetVersion32( ); MMRESULT32 WINAPI acmMetrics32( HACMOBJ32 hao, UINT32 uMetric, LPVOID pMetric ); MMRESULT32 WINAPI acmStreamClose32( HACMSTREAM32 has, DWORD fdwClose ); MMRESULT32 WINAPI acmStreamConvert32( HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwConvert ); MMRESULT32 WINAPI acmStreamMessage32( HACMSTREAM32 has, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2 ); MMRESULT32 WINAPI acmStreamOpen32( PHACMSTREAM32 phas, HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc, PWAVEFORMATEX32 pwfxDst, PWAVEFILTER32 pwfltr, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen ); MMRESULT32 WINAPI acmStreamPrepareHeader32( HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwPrepare ); MMRESULT32 WINAPI acmStreamReset32( HACMSTREAM32 has, DWORD fdwReset ); MMRESULT32 WINAPI acmStreamSize32( HACMSTREAM32 has, DWORD cbInput, LPDWORD pdwOutputBytes, DWORD fdwSize ); MMRESULT32 WINAPI acmStreamUnprepareHeader32( HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwUnprepare ); /*********************************************************************** * Wine specific - Win32 */ typedef struct _WINE_ACMBUILTINDRIVER32 { LPSTR pszDriverAlias; DRIVERPROC32 pfnDriverProc; } WINE_ACMBUILTINDRIVER32, *PWINE_ACMBUILTINDRIVER32; typedef struct _WINE_ACMLOCALDRIVER32 { DRIVERPROC32 pfnDriverProc; } WINE_ACMLOCALDRIVER32, *PWINE_ACMLOCALDRIVER32; typedef struct _WINE_ACMDRIVERID32 *PWINE_ACMDRIVERID32; typedef struct _WINE_ACMOBJ32 { PWINE_ACMDRIVERID32 pACMDriverID; } WINE_ACMOBJ32, *PWINE_ACMOBJ32; typedef struct _WINE_ACMDRIVER32 { WINE_ACMOBJ32 obj; HDRVR32 hDrvr; } WINE_ACMDRIVER32, *PWINE_ACMDRIVER32; typedef struct _WINE_ACMSTREAM32 { WINE_ACMOBJ32 obj; /* FIME: More fields needed */ } WINE_ACMSTREAM32, *PWINE_ACMSTREAM32; typedef struct _WINE_ACMDRIVERID32 { LPSTR pszDriverAlias; LPSTR pszFileName; PWINE_ACMLOCALDRIVER32 pACMLocalDriver; BOOL32 bEnabled; PWINE_ACMDRIVER32 pACMDriver; /* NULL if not open */ PWINE_ACMDRIVERID32 pNextACMDriverID; PWINE_ACMDRIVERID32 pPreviousACMDriverID; } WINE_ACMDRIVERID32; /* From builtin.c */ extern WINE_ACMBUILTINDRIVER32 MSACM_BuiltinDrivers32[]; /* From interal.c */ extern HANDLE32 MSACM_hHeap32; extern PWINE_ACMDRIVERID32 MSACM_pFirstACMDriverID32; extern PWINE_ACMDRIVERID32 MSACM_pLastACMDriverID32; PWINE_ACMDRIVERID32 MSACM_RegisterDriver32( LPSTR pszDriverAlias, LPSTR pszFileName, PWINE_ACMLOCALDRIVER32 pLocalDriver); void MSACM_RegisterAllDrivers32(); PWINE_ACMDRIVERID32 MSACM_UnregisterDriver32(PWINE_ACMDRIVERID32 p); void MSACM_UnregisterAllDrivers32(); PWINE_ACMDRIVERID32 MSACM_GetDriverID32(HACMDRIVERID32 hDriverID); PWINE_ACMDRIVER32 MSACM_GetDriver32(HACMDRIVER32 hDriver); PWINE_ACMOBJ32 MSACM_GetObj32(HACMOBJ32 hObj); HDRVR32 MSACM_OpenDriverProc32(DRIVERPROC32 pfnDriverProc); #endif /* __WINE_MSACM_H */