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>