Hi Andrew,<div><br></div><div>There is no bug associated with this, but it brings in a valid fix with tests from staging repo.</div><div>There are a few patches like this in staging repo.</div><div><br></div><div>---</div><div>Vijay<br><br>On Tuesday, April 2, 2019, Andrew Eikum <<a href="mailto:aeikum@codeweavers.com">aeikum@codeweavers.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Just curious, do you know what this fixes? I wasn't able to find any<br>
information in the wine-staging repo, nor anything relevant on the<br>
Wine bug tracker.<br>
<br>
Andrew<br>
<br>
On Mon, Apr 01, 2019 at 01:37:31AM +0200, Vijay Kiran Kamuju wrote:<br>
> Add comments on a test which crashes on XP, Vista<br>
> Modify broken test for Win 8<br>
> <br>
> From: Michael Müller <<a href="mailto:michael@fds-team.de">michael@fds-team.de</a>><br>
> <br>
> Signed-off-by: Vijay Kiran Kamuju <<a href="mailto:infyquest@gmail.com">infyquest@gmail.com</a>><br>
> ---<br>
> dlls/l3codeca.acm/mpegl3.c | 15 ++++++-<br>
> dlls/msacm32/tests/msacm.c | 83 ++++++++++++++++++++++++++++++<wbr>++++++++<br>
> 2 files changed, 97 insertions(+), 1 deletion(-)<br>
> <br>
> diff --git a/dlls/l3codeca.acm/mpegl3.c b/dlls/l3codeca.acm/mpegl3.c<br>
> index 8ad6ae83dc..2e929371ae 100644<br>
> --- a/dlls/l3codeca.acm/mpegl3.c<br>
> +++ b/dlls/l3codeca.acm/mpegl3.c<br>
> @@ -212,6 +212,7 @@ static void MPEG3_Reset(<wbr>PACMDRVSTREAMINSTANCE adsi, AcmMpeg3Data* aad)<br>
> */<br>
> static LRESULT MPEG3_StreamOpen(<wbr>PACMDRVSTREAMINSTANCE adsi)<br>
> {<br>
> + LRESULT error = MMSYSERR_NOTSUPPORTED;<br>
> AcmMpeg3Data* aad;<br>
> int err;<br>
> <br>
> @@ -235,6 +236,18 @@ static LRESULT MPEG3_StreamOpen(<wbr>PACMDRVSTREAMINSTANCE adsi)<br>
> adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEG) &&<br>
> adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)<br>
> {<br>
> + if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3)<br>
> + {<br>
> + MPEGLAYER3WAVEFORMAT *formatmp3 = (MPEGLAYER3WAVEFORMAT *)adsi->pwfxSrc;<br>
> +<br>
> + if (adsi->pwfxSrc->cbSize < MPEGLAYER3_WFX_EXTRA_BYTES ||<br>
> + formatmp3->wID != MPEGLAYER3_ID_MPEG)<br>
> + {<br>
> + error = ACMERR_NOTPOSSIBLE;<br>
> + goto theEnd;<br>
> + }<br>
> + }<br>
> +<br>
> /* resampling or mono <=> stereo not available<br>
> * MPEG3 algo only define 16 bit per sample output<br>
> */<br>
> @@ -270,7 +283,7 @@ static LRESULT MPEG3_StreamOpen(<wbr>PACMDRVSTREAMINSTANCE adsi)<br>
> theEnd:<br>
> HeapFree(GetProcessHeap(), 0, aad);<br>
> adsi->dwDriver = 0L;<br>
> - return MMSYSERR_NOTSUPPORTED;<br>
> + return error;<br>
> }<br>
> <br>
> /*****************************<wbr>******************************<wbr>************<br>
> diff --git a/dlls/msacm32/tests/msacm.c b/dlls/msacm32/tests/msacm.c<br>
> index 180639fa54..a6b17e8441 100644<br>
> --- a/dlls/msacm32/tests/msacm.c<br>
> +++ b/dlls/msacm32/tests/msacm.c<br>
> @@ -1276,6 +1276,88 @@ static void test_acmFormatChoose(void)<br>
> HeapFree(GetProcessHeap(), 0, pwfx);<br>
> }<br>
> <br>
> +static void test_mp3(void)<br>
> +{<br>
> + MPEGLAYER3WAVEFORMAT src;<br>
> + WAVEFORMATEX dst;<br>
> + HACMSTREAM has;<br>
> + DWORD output;<br>
> + MMRESULT mr;<br>
> +<br>
> + src.wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3;<br>
> + src.wfx.nSamplesPerSec = 11025;<br>
> + src.wfx.wBitsPerSample = 0;<br>
> + src.wfx.nChannels = 1;<br>
> + src.wfx.nBlockAlign = 576;<br>
> + src.wfx.nAvgBytesPerSec = 2000;<br>
> +<br>
> + src.wID = MPEGLAYER3_ID_MPEG;<br>
> + src.fdwFlags = 0;<br>
> + src.nBlockSize = 576;<br>
> + src.nFramesPerBlock = 1;<br>
> + src.nCodecDelay = 0;<br>
> +<br>
> + dst.cbSize = 0;<br>
> + dst.wFormatTag = WAVE_FORMAT_PCM;<br>
> + dst.nSamplesPerSec = 11025;<br>
> + dst.wBitsPerSample = 16;<br>
> + dst.nChannels = 1;<br>
> + dst.nBlockAlign = dst.wBitsPerSample * dst.nChannels / 8;<br>
> + dst.nAvgBytesPerSec = dst.nSamplesPerSec * dst.nBlockAlign;<br>
> +<br>
> + src.wfx.cbSize = 0;<br>
> +<br>
> + mr = acmStreamOpen(&has, NULL, (WAVEFORMATEX*)&src, &dst, NULL, 0, 0, 0);<br>
> + ok(mr == ACMERR_NOTPOSSIBLE, "expected error ACMERR_NOTPOSSIBLE, got 0x%x\n", mr);<br>
> + if (mr == MMSYSERR_NOERROR) acmStreamClose(has, 0);<br>
> +<br>
> + src.wfx.cbSize = MPEGLAYER3_WFX_EXTRA_BYTES;<br>
> + src.wID = 0;<br>
> +<br>
> + mr = acmStreamOpen(&has, NULL, (WAVEFORMATEX*)&src, &dst, NULL, 0, 0, 0);<br>
> + ok(mr == ACMERR_NOTPOSSIBLE, "expected error ACMERR_NOTPOSSIBLE, got 0x%x\n", mr);<br>
> + if (mr == MMSYSERR_NOERROR) acmStreamClose(has, 0);<br>
> +<br>
> + src.wID = MPEGLAYER3_ID_MPEG;<br>
> + src.nBlockSize = 0;<br>
> +<br>
> + mr = acmStreamOpen(&has, NULL, (WAVEFORMATEX*)&src, &dst, NULL, 0, 0, 0);<br>
> + ok(mr == MMSYSERR_NOERROR || broken(mr == ACMERR_NOTPOSSIBLE) /* Win 2008 */, <br>
> + "failed with error 0x%x\n", mr);<br>
> + if (mr == MMSYSERR_NOERROR)<br>
> + {<br>
> + mr = acmStreamClose(has, 0);<br>
> + ok(mr == MMSYSERR_NOERROR, "failed with error 0x%x\n", mr);<br>
> + }<br>
> + src.nBlockSize = 576;<br>
> + src.wfx.nAvgBytesPerSec = 0;<br>
> +<br>
> + mr = acmStreamOpen(&has, NULL, (WAVEFORMATEX*)&src, &dst, NULL, 0, 0, 0);<br>
> + ok(mr == MMSYSERR_NOERROR || broken(mr == ACMERR_NOTPOSSIBLE) /* Win 2008 */,<br>
> + "failed with error 0x%x\n", mr);<br>
> + if (mr == MMSYSERR_NOERROR)<br>
> + {<br>
> + /* causes a division by zero exception in XP, Vista,<br>
> + but throws ACMERR_NOTPOSSIBLE on others */<br>
> + if (0) acmStreamSize(has, 4000, &output, ACM_STREAMSIZEF_SOURCE);<br>
> + mr = acmStreamClose(has, 0);<br>
> + ok(mr == MMSYSERR_NOERROR, "failed with error 0x%x\n", mr);<br>
> + }<br>
> +<br>
> + src.wfx.nAvgBytesPerSec = 2000;<br>
> +<br>
> + mr = acmStreamOpen(&has, NULL, (WAVEFORMATEX*)&src, &dst, NULL, 0, 0, 0);<br>
> + ok(mr == MMSYSERR_NOERROR || broken(mr == ACMERR_NOTPOSSIBLE) /* Win 2008 */,<br>
> + "failed with error 0x%x\n", mr);<br>
> + if (mr == MMSYSERR_NOERROR)<br>
> + {<br>
> + mr = acmStreamSize(has, 4000, &output, ACM_STREAMSIZEF_SOURCE);<br>
> + ok(mr == MMSYSERR_NOERROR, "failed with error 0x%x\n", mr);<br>
> + mr = acmStreamClose(has, 0);<br>
> + ok(mr == MMSYSERR_NOERROR, "failed with error 0x%x\n", mr);<br>
> + }<br>
> +}<br>
> +<br>
> static struct<br>
> {<br>
> struct<br>
> @@ -1446,6 +1528,7 @@ START_TEST(msacm)<br>
> test_acmFormatSuggest();<br>
> test_acmFormatTagDetails();<br>
> test_acmFormatChoose();<br>
> + test_mp3();<br>
> /* Test acmDriverAdd in the end as it may conflict<br>
> * with other tests due to codec lookup order */<br>
> test_acmDriverAdd();<br>
> -- <br>
> 2.21.0<br>
> <br>
> <br>
> <br>
</blockquote></div>