--- /dev/null
+/*author: Adrian Sandor\r
+ written for MinGW*/\r
+#ifndef _MSACM_H\r
+#define _MSACM_H\r
+\r
+#if __GNUC__ >= 3\r
+#pragma GCC system_header\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+typedef HANDLE HACMDRIVERID, HACMDRIVER, *LPHACMDRIVER; /*they're handles, right?*/\r
+\r
+/*found through experimentation*/\r
+#define ACMDRIVERDETAILS_SHORTNAME_CHARS 32\r
+#define ACMDRIVERDETAILS_LONGNAME_CHARS 128\r
+#define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80\r
+#define ACMDRIVERDETAILS_LICENSING_CHARS 128\r
+\r
+/*I don't know the right values for these macros*/\r
+#define ACMFORMATDETAILS_FORMAT_CHARS 256\r
+#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 256\r
+#define ACMDRIVERDETAILS_FEATURES_CHARS 256\r
+\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatdetails_str.asp*/\r
+typedef struct {\r
+ DWORD cbStruct;\r
+ DWORD dwFormatIndex;\r
+ DWORD dwFormatTag;\r
+ DWORD fdwSupport;\r
+ LPWAVEFORMATEX pwfx;\r
+ DWORD cbwfx;\r
+ char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];\r
+} ACMFORMATDETAILSA, *LPACMFORMATDETAILSA;\r
+typedef struct {\r
+ DWORD cbStruct;\r
+ DWORD dwFormatIndex;\r
+ DWORD dwFormatTag;\r
+ DWORD fdwSupport;\r
+ LPWAVEFORMATEX pwfx;\r
+ DWORD cbwfx;\r
+ WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];\r
+} ACMFORMATDETAILSW, *LPACMFORMATDETAILSW;\r
+\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagdetails_str.asp*/\r
+typedef struct {\r
+ DWORD cbStruct;\r
+ DWORD dwFormatTagIndex;\r
+ DWORD dwFormatTag;\r
+ DWORD cbFormatSize;\r
+ DWORD fdwSupport;\r
+ DWORD cStandardFormats;\r
+ char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];\r
+} ACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;\r
+typedef struct {\r
+ DWORD cbStruct;\r
+ DWORD dwFormatTagIndex;\r
+ DWORD dwFormatTag;\r
+ DWORD cbFormatSize;\r
+ DWORD fdwSupport;\r
+ DWORD cStandardFormats;\r
+ WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];\r
+} ACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;\r
+\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails_str.asp*/\r
+typedef struct {\r
+ DWORD cbStruct;\r
+ FOURCC fccType;\r
+ FOURCC fccComp;\r
+ WORD wMid;\r
+ WORD wPid;\r
+ DWORD vdwACM;\r
+ DWORD vdwDriver;\r
+ DWORD fdwSupport;\r
+ DWORD cFormatTags;\r
+ DWORD cFilterTags;\r
+ HICON hicon;\r
+ char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];\r
+ char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];\r
+ char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];\r
+ char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];\r
+ char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];\r
+} ACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;\r
+typedef struct {\r
+ DWORD cbStruct;\r
+ FOURCC fccType;\r
+ FOURCC fccComp;\r
+ WORD wMid;\r
+ WORD wPid;\r
+ DWORD vdwACM;\r
+ DWORD vdwDriver;\r
+ DWORD fdwSupport;\r
+ DWORD cFormatTags;\r
+ DWORD cFilterTags;\r
+ HICON hicon;\r
+ WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];\r
+ WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];\r
+ WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];\r
+ WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];\r
+ WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];\r
+} ACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;\r
+\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenumcallback.asp*/\r
+typedef BOOL (CALLBACK *ACMFORMATENUMCBA) (\r
+ HACMDRIVERID hadid,\r
+ LPACMFORMATDETAILSA pafd,\r
+ DWORD_PTR dwInstance,\r
+ DWORD fdwSupport\r
+);\r
+typedef BOOL (CALLBACK *ACMFORMATENUMCBW) (\r
+ HACMDRIVERID hadid,\r
+ LPACMFORMATDETAILSW pafd,\r
+ DWORD_PTR dwInstance,\r
+ DWORD fdwSupport\r
+);\r
+\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenumcallback.asp*/\r
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA) (\r
+ HACMDRIVERID hadid,\r
+ LPACMFORMATTAGDETAILSA paftd,\r
+ DWORD_PTR dwInstance,\r
+ DWORD fdwSupport\r
+);\r
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW) (\r
+ HACMDRIVERID hadid,\r
+ LPACMFORMATTAGDETAILSW paftd,\r
+ DWORD_PTR dwInstance,\r
+ DWORD fdwSupport\r
+);\r
+\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenumcallback.asp*/\r
+typedef BOOL (CALLBACK *ACMDRIVERENUMCB) (\r
+ HACMDRIVERID hadid,\r
+ DWORD_PTR dwInstance,\r
+ DWORD fdwSupport\r
+);\r
+\r
+/*and now the functions...*/\r
+\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriveropen.asp*/\r
+MMRESULT WINAPI acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen);\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenum.asp*/\r
+MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenum.asp*/\r
+MMRESULT WINAPI acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);\r
+MMRESULT WINAPI acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverclose.asp*/\r
+MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose);\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails.asp*/\r
+MMRESULT WINAPI acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, DWORD fdwDetails);\r
+MMRESULT WINAPI acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, DWORD fdwDetails);\r
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenum.asp*/\r
+MMRESULT WINAPI acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);\r
+MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);\r
+\r
+#ifdef UNICODE\r
+\r
+typedef ACMFORMATDETAILSW ACMFORMATDETAILS, *LPACMFORMATDETAILS;\r
+typedef ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;\r
+typedef ACMDRIVERDETAILSW ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;\r
+typedef ACMFORMATENUMCBW ACMFORMATENUMCB;\r
+typedef ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB;\r
+#define acmFormatEnum acmFormatEnumW\r
+#define acmDriverDetails acmDriverDetailsW\r
+#define acmFormatTagEnum acmFormatTagEnumW\r
+\r
+#else /*ifdef UNICODE*/\r
+\r
+typedef ACMFORMATDETAILSA ACMFORMATDETAILS, *LPACMFORMATDETAILS;\r
+typedef ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;\r
+typedef ACMDRIVERDETAILSA ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;\r
+typedef ACMFORMATENUMCBA ACMFORMATENUMCB;\r
+typedef ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB;\r
+#define acmFormatEnum acmFormatEnumA\r
+#define acmDriverDetails acmDriverDetailsA\r
+#define acmFormatTagEnum acmFormatTagEnumA\r
+\r
+#endif /*ifdef UNICODE*/\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r