diff --git a/dlls/msacm32/tests/msacm.c b/dlls/msacm32/tests/msacm.c index 88ad330c2aa..0defb334e01 100644 --- a/dlls/msacm32/tests/msacm.c +++ b/dlls/msacm32/tests/msacm.c @@ -127,15 +127,16 @@ static BOOL CALLBACK DriverEnumProc(HACMDRIVERID hadid, TODO: should it be *exactly* sizeof(dd), as tested here? */ if (rc == MMSYSERR_NOERROR) { - struct { + static const struct { const char *shortname; - const WORD mid; - const WORD pid; + WORD mid; + WORD pid; + WORD pid_alt; } *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 }, + { "MPEG Layer-3 Codec", MM_FRAUNHOFER_IIS, MM_FHGIIS_MPEGLAYER3_DECODE, MM_FHGIIS_MPEGLAYER3_PROFESSIONAL }, { "MS-PCM", MM_MICROSOFT, MM_MSFT_ACM_PCM }, { 0 } }; @@ -145,7 +146,14 @@ static BOOL CALLBACK DriverEnumProc(HACMDRIVERID hadid, for (iter = expected_ids; iter->shortname; ++iter) { if (dd.szShortName && !strcmp(iter->shortname, dd.szShortName)) { - ok(iter->mid == dd.wMid && iter->pid == dd.wPid, + /* try alternative product id on mismatch */ + if (iter->pid_alt && iter->pid != dd.wPid) + ok(iter->mid == dd.wMid && iter->pid_alt == 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_alt); + else + 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); diff --git a/include/mmreg.h b/include/mmreg.h index e0b1dd09c27..2ee2b00aeb0 100644 --- a/include/mmreg.h +++ b/include/mmreg.h @@ -129,6 +129,7 @@ typedef struct _WAVEFORMATEX { #define MM_FRAUNHOFER_IIS 0xAC #define MM_FHGIIS_MPEGLAYER3_DECODE 0x09 +#define MM_FHGIIS_MPEGLAYER3_PROFESSIONAL 0x0d #if !defined(WAVE_FORMAT_EXTENSIBLE) #define WAVE_FORMAT_EXTENSIBLE 0xFFFE /* Microsoft */