From 80a73ead06fc46955736164a73f4af9edb91a1bc Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 22 Nov 2015 10:27:33 +0000 Subject: [PATCH] [MSACM32] Sync with Wine Staging 1.7.55. CORE-10536 svn path=/trunk/; revision=70018 --- reactos/dll/win32/msacm32/format.c | 3 +++ reactos/dll/win32/msacm32/pcmconverter.c | 21 +++++++++++++-------- reactos/media/doc/README.WINE | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/reactos/dll/win32/msacm32/format.c b/reactos/dll/win32/msacm32/format.c index cefdded34b6..14bec09fca2 100644 --- a/reactos/dll/win32/msacm32/format.c +++ b/reactos/dll/win32/msacm32/format.c @@ -660,6 +660,9 @@ MMRESULT WINAPI acmFormatSuggest(HACMDRIVER had, PWAVEFORMATEX pwfxSrc, TRACE("(%p, %p, %p, %d, %d)\n", had, pwfxSrc, pwfxDst, cbwfxDst, fdwSuggest); + if (!pwfxSrc || !pwfxDst) + return MMSYSERR_INVALPARAM; + if (fdwSuggest & ~(ACM_FORMATSUGGESTF_NCHANNELS|ACM_FORMATSUGGESTF_NSAMPLESPERSEC| ACM_FORMATSUGGESTF_WBITSPERSAMPLE|ACM_FORMATSUGGESTF_WFORMATTAG)) return MMSYSERR_INVALFLAG; diff --git a/reactos/dll/win32/msacm32/pcmconverter.c b/reactos/dll/win32/msacm32/pcmconverter.c index cdbf8af25f4..49143f98e0f 100644 --- a/reactos/dll/win32/msacm32/pcmconverter.c +++ b/reactos/dll/win32/msacm32/pcmconverter.c @@ -820,28 +820,33 @@ static LRESULT PCM_FormatSuggest(PACMDRVFORMATSUGGEST adfs) /* some tests ... */ if (adfs->cbwfxSrc < sizeof(PCMWAVEFORMAT) || - adfs->cbwfxDst < sizeof(PCMWAVEFORMAT) || - PCM_GetFormatIndex(adfs->pwfxSrc) == 0xFFFFFFFF) { + adfs->cbwfxDst < sizeof(PCMWAVEFORMAT) || + PCM_GetFormatIndex(adfs->pwfxSrc) == 0xFFFFFFFF) { WARN("not possible\n"); return ACMERR_NOTPOSSIBLE; } /* is no suggestion for destination, then copy source value */ if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_NCHANNELS)) { - adfs->pwfxDst->nChannels = adfs->pwfxSrc->nChannels; + adfs->pwfxDst->nChannels = adfs->pwfxSrc->nChannels; } if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC)) { - adfs->pwfxDst->nSamplesPerSec = adfs->pwfxSrc->nSamplesPerSec; + adfs->pwfxDst->nSamplesPerSec = adfs->pwfxSrc->nSamplesPerSec; } if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE)) { - adfs->pwfxDst->wBitsPerSample = adfs->pwfxSrc->wBitsPerSample; + adfs->pwfxDst->wBitsPerSample = adfs->pwfxSrc->wBitsPerSample; } if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG)) { - if (adfs->pwfxSrc->wFormatTag != WAVE_FORMAT_PCM) { - WARN("not possible\n"); + if (adfs->pwfxSrc->wFormatTag != WAVE_FORMAT_PCM) { + WARN("source format 0x%x not supported\n", adfs->pwfxSrc->wFormatTag); + return ACMERR_NOTPOSSIBLE; + } + adfs->pwfxDst->wFormatTag = adfs->pwfxSrc->wFormatTag; + } else { + if (adfs->pwfxDst->wFormatTag != WAVE_FORMAT_PCM) { + WARN("destination format 0x%x not supported\n", adfs->pwfxDst->wFormatTag); return ACMERR_NOTPOSSIBLE; } - adfs->pwfxDst->wFormatTag = adfs->pwfxSrc->wFormatTag; } /* check if result is ok */ if (PCM_GetFormatIndex(adfs->pwfxDst) == 0xFFFFFFFF) { diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 5a85a11e3e2..eb76eee0cf2 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -103,7 +103,7 @@ reactos/dll/win32/mlang # Synced to WineStaging-1.7.47 reactos/dll/win32/mmdevapi # Synced to WineStaging-1.7.47 reactos/dll/win32/mpr # Synced to WineStaging-1.7.55 reactos/dll/win32/mprapi # Synced to WineStaging-1.7.47 -reactos/dll/win32/msacm32 # Synced to WineStaging-1.7.47 +reactos/dll/win32/msacm32 # Synced to WineStaging-1.7.55 reactos/dll/win32/msacm32/msacm32.drv # Synced to WineStaging-1.7.47 reactos/dll/win32/msadp32.acm # Synced to WineStaging-1.7.47 reactos/dll/win32/mscat32 # Synced to WineStaging-1.7.47