[PATCH] msacm32: Make ACM driver details match native more closely
Andrew Eikum
aeikum at codeweavers.com
Tue May 26 15:09:31 CDT 2015
---
This should fix Bug 8653.
dlls/imaadp32.acm/imaadp32.c | 4 ++--
dlls/msacm32/pcmconverter.c | 6 +++---
dlls/msacm32/tests/msacm.c | 24 ++++++++++++++++++++++++
dlls/msadp32.acm/msadp32.c | 4 ++--
dlls/msg711.acm/msg711.c | 6 +++---
dlls/msgsm32.acm/msgsm32.c | 4 ++--
dlls/winemp3.acm/mpegl3.c | 6 +++---
include/mmreg.h | 12 ++++++++++++
8 files changed, 51 insertions(+), 15 deletions(-)
diff --git a/dlls/imaadp32.acm/imaadp32.c b/dlls/imaadp32.acm/imaadp32.c
index 19c2ae2..c5c65f6 100644
--- a/dlls/imaadp32.acm/imaadp32.c
+++ b/dlls/imaadp32.acm/imaadp32.c
@@ -507,8 +507,8 @@ static LRESULT ADPCM_DriverDetails(PACMDRIVERDETAILSW add)
{
add->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
add->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
- add->wMid = 0x1;
- add->wPid = 0x22;
+ add->wMid = MM_MICROSOFT;
+ add->wPid = MM_MSFT_ACM_IMAADPCM;
add->vdwACM = 0x3320000;
add->vdwDriver = 0x04000000;
add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
diff --git a/dlls/msacm32/pcmconverter.c b/dlls/msacm32/pcmconverter.c
index 9bfed20..cf92d93 100644
--- a/dlls/msacm32/pcmconverter.c
+++ b/dlls/msacm32/pcmconverter.c
@@ -723,15 +723,15 @@ static LRESULT PCM_DriverDetails(PACMDRIVERDETAILSW add)
add->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
add->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
- add->wMid = 0xFF;
- add->wPid = 0x00;
+ add->wMid = MM_MICROSOFT;
+ add->wPid = MM_MSFT_ACM_PCM;
add->vdwACM = 0x01000000;
add->vdwDriver = 0x01000000;
add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CONVERTER;
add->cFormatTags = 1;
add->cFilterTags = 0;
add->hicon = NULL;
- MultiByteToWideChar( CP_ACP, 0, "WINE-PCM", -1,
+ MultiByteToWideChar( CP_ACP, 0, "MS-PCM", -1,
add->szShortName, sizeof(add->szShortName)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Wine PCM converter", -1,
add->szLongName, sizeof(add->szLongName)/sizeof(WCHAR) );
diff --git a/dlls/msacm32/tests/msacm.c b/dlls/msacm32/tests/msacm.c
index c36bdbf..747c5fe 100644
--- a/dlls/msacm32/tests/msacm.c
+++ b/dlls/msacm32/tests/msacm.c
@@ -127,8 +127,30 @@ static BOOL CALLBACK DriverEnumProc(HACMDRIVERID hadid,
TODO: should it be *exactly* sizeof(dd), as tested here?
*/
if (rc == MMSYSERR_NOERROR) {
+ struct {
+ const char *shortname;
+ const WORD mid;
+ const WORD pid;
+ } *iter, expected_ids[] = {
+ { "Microsoft IMA ADPCM", MM_MICROSOFT, MM_MSFT_ACM_IMAADPCM },
+ { "MS-ADPCM", MM_MICROSOFT, MM_MSFT_ACM_MSADPCM },
+ { "Microsoft CCITT G.711", MM_MICROSOFT, MM_MSFT_ACM_G711},
+ { "MPEG Layer-3 Codec", MM_FRAUNHOFER_IIS, MM_FHGIIS_MPEGLAYER3_DECODE },
+ { "MS-PCM", MM_MICROSOFT, MM_MSFT_ACM_PCM },
+ { 0 }
+ };
+
ok(dd.cbStruct == sizeof(dd),
"acmDriverDetailsA(): cbStruct = %08x\n", dd.cbStruct);
+
+ for (iter = expected_ids; iter->shortname; ++iter) {
+ if (dd.szShortName && !strcmp(iter->shortname, dd.szShortName)) {
+ ok(iter->mid == dd.wMid && iter->pid == dd.wPid,
+ "Got wrong manufacturer (0x%x vs 0x%x) or product (0x%x vs 0x%x)\n",
+ dd.wMid, iter->mid,
+ dd.wPid, iter->pid);
+ }
+ }
}
if (rc == MMSYSERR_NOERROR && winetest_interactive) {
@@ -139,6 +161,8 @@ static BOOL CALLBACK DriverEnumProc(HACMDRIVERID hadid,
trace(" Features: %s\n", dd.szFeatures);
trace(" Supports %u formats\n", dd.cFormatTags);
trace(" Supports %u filter formats\n", dd.cFilterTags);
+ trace(" Mid: 0x%x\n", dd.wMid);
+ trace(" Pid: 0x%x\n", dd.wPid);
}
/* try bad pointer */
diff --git a/dlls/msadp32.acm/msadp32.c b/dlls/msadp32.acm/msadp32.c
index 59f71b5..83d1b46 100644
--- a/dlls/msadp32.acm/msadp32.c
+++ b/dlls/msadp32.acm/msadp32.c
@@ -372,8 +372,8 @@ static LRESULT ADPCM_DriverDetails(PACMDRIVERDETAILSW add)
{
add->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
add->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
- add->wMid = 0xFF;
- add->wPid = 0x00;
+ add->wMid = MM_MICROSOFT;
+ add->wPid = MM_MSFT_ACM_MSADPCM;
add->vdwACM = 0x01000000;
add->vdwDriver = 0x01000000;
add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
diff --git a/dlls/msg711.acm/msg711.c b/dlls/msg711.acm/msg711.c
index f6f2ae6..e74d329 100644
--- a/dlls/msg711.acm/msg711.c
+++ b/dlls/msg711.acm/msg711.c
@@ -653,15 +653,15 @@ static LRESULT G711_DriverDetails(PACMDRIVERDETAILSW add)
{
add->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
add->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
- add->wMid = 0xFF;
- add->wPid = 0x00;
+ add->wMid = MM_MICROSOFT;
+ add->wPid = MM_MSFT_ACM_G711;
add->vdwACM = 0x01000000;
add->vdwDriver = 0x01000000;
add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
add->cFormatTags = 3; /* PCM, G711 A-LAW & MU-LAW */
add->cFilterTags = 0;
add->hicon = NULL;
- MultiByteToWideChar( CP_ACP, 0, "WINE-G711", -1,
+ MultiByteToWideChar( CP_ACP, 0, "Microsoft CCITT G.711", -1,
add->szShortName, sizeof(add->szShortName)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Wine G711 converter", -1,
add->szLongName, sizeof(add->szLongName)/sizeof(WCHAR) );
diff --git a/dlls/msgsm32.acm/msgsm32.c b/dlls/msgsm32.acm/msgsm32.c
index c32c656..cce1303 100644
--- a/dlls/msgsm32.acm/msgsm32.c
+++ b/dlls/msgsm32.acm/msgsm32.c
@@ -117,14 +117,14 @@ static LRESULT GSM_DriverDetails(PACMDRIVERDETAILSW add)
add->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
/* Details found from probing native msgsm32.acm */
add->wMid = MM_MICROSOFT;
- add->wPid = 36;
+ add->wPid = MM_MSFT_ACM_GSM610;
add->vdwACM = 0x3320000;
add->vdwDriver = 0x4000000;
add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
add->cFormatTags = 2;
add->cFilterTags = 0;
add->hicon = NULL;
- MultiByteToWideChar( CP_ACP, 0, "Wine GSM 6.10", -1,
+ MultiByteToWideChar( CP_ACP, 0, "Microsoft GSM 6.10", -1,
add->szShortName, sizeof(add->szShortName)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Wine GSM 6.10 libgsm codec", -1,
add->szLongName, sizeof(add->szLongName)/sizeof(WCHAR) );
diff --git a/dlls/winemp3.acm/mpegl3.c b/dlls/winemp3.acm/mpegl3.c
index 57193b3..37993b4 100644
--- a/dlls/winemp3.acm/mpegl3.c
+++ b/dlls/winemp3.acm/mpegl3.c
@@ -658,15 +658,15 @@ static LRESULT MPEG3_DriverDetails(PACMDRIVERDETAILSW add)
{
add->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
add->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
- add->wMid = 0xFF;
- add->wPid = 0x00;
+ add->wMid = MM_FRAUNHOFER_IIS;
+ add->wPid = MM_FHGIIS_MPEGLAYER3_DECODE;
add->vdwACM = 0x01000000;
add->vdwDriver = 0x01000000;
add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
add->cFormatTags = 3; /* PCM, MPEG3 */
add->cFilterTags = 0;
add->hicon = NULL;
- MultiByteToWideChar( CP_ACP, 0, "WINE-MPEG3", -1,
+ MultiByteToWideChar( CP_ACP, 0, "MPEG Layer-3 Codec", -1,
add->szShortName, sizeof(add->szShortName)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Wine MPEG3 decoder", -1,
add->szLongName, sizeof(add->szLongName)/sizeof(WCHAR) );
diff --git a/include/mmreg.h b/include/mmreg.h
index 64a3991..08517a8 100644
--- a/include/mmreg.h
+++ b/include/mmreg.h
@@ -115,6 +115,18 @@ typedef struct _WAVEFORMATEX {
#define WAVE_FORMAT_OLISBC 0x1003 /* Ing C. Olivetti & C., S.p.A. */
#define WAVE_FORMAT_OLIOPR 0x1004 /* Ing C. Olivetti & C., S.p.A. */
+#ifndef MM_MICROSOFT
+#define MM_MICROSOFT 0x01
+#endif
+#define MM_MSFT_ACM_MSADPCM 0x21
+#define MM_MSFT_ACM_IMAADPCM 0x22
+#define MM_MSFT_ACM_GSM610 0x24
+#define MM_MSFT_ACM_G711 0x25
+#define MM_MSFT_ACM_PCM 0x26
+
+#define MM_FRAUNHOFER_IIS 0xAC
+#define MM_FHGIIS_MPEGLAYER3_DECODE 0x09
+
#if !defined(WAVE_FORMAT_EXTENSIBLE)
#define WAVE_FORMAT_EXTENSIBLE 0xFFFE /* Microsoft */
#endif
--
2.4.1
More information about the wine-patches
mailing list