From 5149b192c9591ca66b984674e39614806471856c Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 14 Oct 2017 10:21:44 +0200 Subject: [PATCH] Rebase against cf5616ffbb39df7ad3ac0a41e55777ab6c1abab9. --- patches/patchinstall.sh | 25 +-- ...eck-input-format-in-MPEG3_StreamOpen.patch | 10 +- ...cm-Disallow-operations-encoding-to-M.patch | 149 ------------------ .../winemp3.acm-Revert_MPEG_Encode/definition | 1 - 4 files changed, 8 insertions(+), 177 deletions(-) delete mode 100644 patches/winemp3.acm-Revert_MPEG_Encode/0001-Revert-winemp3.acm-Disallow-operations-encoding-to-M.patch delete mode 100644 patches/winemp3.acm-Revert_MPEG_Encode/definition diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 831af736..b3b45ba1 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "4b028bb09cb9563e111fedab0f4c3663dc278d0a" + echo "cf5616ffbb39df7ad3ac0a41e55777ab6c1abab9" } # Show version information @@ -481,7 +481,6 @@ patch_enable_all () enable_winedevice_Fix_Relocation="$1" enable_winemenubuilder_Desktop_Icon_Path="$1" enable_winemp3_acm_MPEG3_StreamOpen="$1" - enable_winemp3_acm_Revert_MPEG_Encode="$1" enable_wineps_drv_PostScript_Fixes="$1" enable_winepulse_PulseAudio_Support="$1" enable_winex11_CandidateWindowPos="$1" @@ -1727,9 +1726,6 @@ patch_enable () winemp3.acm-MPEG3_StreamOpen) enable_winemp3_acm_MPEG3_StreamOpen="$2" ;; - winemp3.acm-Revert_MPEG_Encode) - enable_winemp3_acm_Revert_MPEG_Encode="$2" - ;; wineps.drv-PostScript_Fixes) enable_wineps_drv_PostScript_Fixes="$2" ;; @@ -10208,27 +10204,12 @@ fi # Patchset winemp3.acm-MPEG3_StreamOpen # | # | Modified files: -# | * dlls/msacm32/tests/msacm.c, dlls/winemp3.acm/mpegl3.c +# | * dlls/l3codeca.acm/mpegl3.c, dlls/msacm32/tests/msacm.c # | if test "$enable_winemp3_acm_MPEG3_StreamOpen" -eq 1; then patch_apply winemp3.acm-MPEG3_StreamOpen/0001-winemp3.acm-Check-input-format-in-MPEG3_StreamOpen.patch ( - printf '%s\n' '+ { "Michael Müller", "winemp3.acm: Check input format in MPEG3_StreamOpen.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset winemp3.acm-Revert_MPEG_Encode -# | -# | This patchset fixes the following Wine bugs: -# | * [#43236] Revert patch which broke in-game audio in multiple games -# | -# | Modified files: -# | * dlls/winemp3.acm/mpegl3.c -# | -if test "$enable_winemp3_acm_Revert_MPEG_Encode" -eq 1; then - patch_apply winemp3.acm-Revert_MPEG_Encode/0001-Revert-winemp3.acm-Disallow-operations-encoding-to-M.patch - ( - printf '%s\n' '+ { "Sebastian Lackner", "Revert \"winemp3.acm: Disallow operations encoding to MPEG.\".", 1 },'; + printf '%s\n' '+ { "Michael Müller", "l3codeca.acm: Check input format in MPEG3_StreamOpen.", 1 },'; ) >> "$patchlist" fi diff --git a/patches/winemp3.acm-MPEG3_StreamOpen/0001-winemp3.acm-Check-input-format-in-MPEG3_StreamOpen.patch b/patches/winemp3.acm-MPEG3_StreamOpen/0001-winemp3.acm-Check-input-format-in-MPEG3_StreamOpen.patch index 3cf9cc42..ec733088 100644 --- a/patches/winemp3.acm-MPEG3_StreamOpen/0001-winemp3.acm-Check-input-format-in-MPEG3_StreamOpen.patch +++ b/patches/winemp3.acm-MPEG3_StreamOpen/0001-winemp3.acm-Check-input-format-in-MPEG3_StreamOpen.patch @@ -1,11 +1,11 @@ From 021f484e633dc4cebb04e011fab3a6f2ee8e2336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sun, 21 Aug 2016 02:36:47 +0200 -Subject: winemp3.acm: Check input format in MPEG3_StreamOpen. +Subject: l3codeca.acm: Check input format in MPEG3_StreamOpen. --- dlls/msacm32/tests/msacm.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++ - dlls/winemp3.acm/mpegl3.c | 15 +++++++++- + dlls/l3codeca.acm/mpegl3.c | 15 +++++++++- 2 files changed, 85 insertions(+), 1 deletion(-) diff --git a/dlls/msacm32/tests/msacm.c b/dlls/msacm32/tests/msacm.c @@ -97,10 +97,10 @@ index 959ec7f0c06..ea98934c198 100644 /* Test acmDriverAdd in the end as it may conflict * with other tests due to codec lookup order */ test_acmDriverAdd(); -diff --git a/dlls/winemp3.acm/mpegl3.c b/dlls/winemp3.acm/mpegl3.c +diff --git a/dlls/l3codeca.acm/mpegl3.c b/dlls/l3codeca.acm/mpegl3.c index 0e419bd66dc..b28519f835a 100644 ---- a/dlls/winemp3.acm/mpegl3.c -+++ b/dlls/winemp3.acm/mpegl3.c +--- a/dlls/l3codeca.acm/mpegl3.c ++++ b/dlls/l3codeca.acm/mpegl3.c @@ -215,6 +215,7 @@ static void MPEG3_Reset(PACMDRVSTREAMINSTANCE adsi, AcmMpeg3Data* aad) */ static LRESULT MPEG3_StreamOpen(PACMDRVSTREAMINSTANCE adsi) diff --git a/patches/winemp3.acm-Revert_MPEG_Encode/0001-Revert-winemp3.acm-Disallow-operations-encoding-to-M.patch b/patches/winemp3.acm-Revert_MPEG_Encode/0001-Revert-winemp3.acm-Disallow-operations-encoding-to-M.patch deleted file mode 100644 index 939b16d9..00000000 --- a/patches/winemp3.acm-Revert_MPEG_Encode/0001-Revert-winemp3.acm-Disallow-operations-encoding-to-M.patch +++ /dev/null @@ -1,149 +0,0 @@ -From 0b9117d270da2ff2e658cb2b9eea5b4824c1d458 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sun, 9 Jul 2017 16:08:42 +0200 -Subject: Revert "winemp3.acm: Disallow operations encoding to MPEG." - -This reverts commit ae34a0f5407ffac492e9bfb5ce5b4267183ea4c5. ---- - dlls/winemp3.acm/mpegl3.c | 80 +++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 63 insertions(+), 17 deletions(-) - -diff --git a/dlls/winemp3.acm/mpegl3.c b/dlls/winemp3.acm/mpegl3.c -index b28519f835a..b5ba4c6d834 100644 ---- a/dlls/winemp3.acm/mpegl3.c -+++ b/dlls/winemp3.acm/mpegl3.c -@@ -271,13 +271,10 @@ static LRESULT MPEG3_StreamOpen(PACMDRVSTREAMINSTANCE adsi) - mpg123_param(aad->mh, MPG123_ADD_FLAGS, MPG123_IGNORE_INFOFRAME, 0); - #endif - } -+ /* no encoding yet - else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM && -- (adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3 || -- adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEG)) -- { -- WARN("Encoding to MPEG is not supported\n"); -- goto theEnd; -- } -+ adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3) -+ */ - else goto theEnd; - MPEG3_Reset(adsi, aad); - -@@ -752,19 +749,54 @@ static LRESULT MPEG3_FormatTagDetails(PACMFORMATTAGDETAILSW aftd, DWORD dwQuery) - case 1: - aftd->dwFormatTag = WAVE_FORMAT_MPEGLAYER3; - aftd->cbFormatSize = sizeof(MPEGLAYER3WAVEFORMAT); -- aftd->cStandardFormats = 0; -+ aftd->cStandardFormats = NUM_MPEG3_FORMATS; - lstrcpyW(aftd->szFormatTag, szMpeg3); - break; - case 2: - aftd->dwFormatTag = WAVE_FORMAT_MPEG; - aftd->cbFormatSize = sizeof(MPEG1WAVEFORMAT); -- aftd->cStandardFormats = 0; -+ aftd->cStandardFormats = NUM_MPEG3_FORMATS; - lstrcpyW(aftd->szFormatTag, szMpeg); - break; - } - return MMSYSERR_NOERROR; - } - -+static void fill_in_mp3(unsigned cbwfx, WAVEFORMATEX* wfx, unsigned bit_rate) -+{ -+ MPEGLAYER3WAVEFORMAT* mp3wfx = (MPEGLAYER3WAVEFORMAT*)wfx; -+ -+ wfx->nAvgBytesPerSec = bit_rate / 8; -+ if (cbwfx >= sizeof(WAVEFORMATEX)) -+ wfx->cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); -+ if (cbwfx >= sizeof(MPEGLAYER3WAVEFORMAT)) -+ { -+ mp3wfx->wID = MPEGLAYER3_ID_MPEG; -+ mp3wfx->fdwFlags = MPEGLAYER3_FLAG_PADDING_OFF; -+ mp3wfx->nBlockSize = (bit_rate * 144) / wfx->nSamplesPerSec; -+ mp3wfx->nFramesPerBlock = 1; -+ mp3wfx->nCodecDelay = 0x0571; -+ } -+} -+ -+static void fill_in_mpeg(unsigned cbwfx, WAVEFORMATEX* wfx, unsigned bit_rate) -+{ -+ MPEG1WAVEFORMAT* mp3wfx = (MPEG1WAVEFORMAT*)wfx; -+ -+ wfx->nAvgBytesPerSec = bit_rate / 8; -+ if (cbwfx >= sizeof(WAVEFORMATEX)) -+ wfx->cbSize = sizeof(MPEG1WAVEFORMAT) - sizeof(WAVEFORMATEX); -+ if (cbwfx >= sizeof(MPEG1WAVEFORMAT)) -+ { -+ mp3wfx->fwHeadLayer = ACM_MPEG_LAYER3; -+ mp3wfx->dwHeadBitrate = wfx->nAvgBytesPerSec * 8; -+ mp3wfx->fwHeadMode = ACM_MPEG_JOINTSTEREO; -+ mp3wfx->fwHeadModeExt = 0xf; -+ mp3wfx->wHeadEmphasis = 1; -+ mp3wfx->fwHeadFlags = ACM_MPEG_ID_MPEG1; -+ } -+} -+ - /*********************************************************************** - * MPEG3_FormatDetails - * -@@ -795,8 +827,16 @@ static LRESULT MPEG3_FormatDetails(PACMFORMATDETAILSW afd, DWORD dwQuery) - break; - case WAVE_FORMAT_MPEGLAYER3: - case WAVE_FORMAT_MPEG: -- WARN("Encoding to MPEG is not supported\n"); -- return ACMERR_NOTPOSSIBLE; -+ if (afd->dwFormatIndex >= NUM_MPEG3_FORMATS) return ACMERR_NOTPOSSIBLE; -+ afd->pwfx->nChannels = MPEG3_Formats[afd->dwFormatIndex].nChannels; -+ afd->pwfx->nSamplesPerSec = MPEG3_Formats[afd->dwFormatIndex].rate; -+ afd->pwfx->wBitsPerSample = MPEG3_Formats[afd->dwFormatIndex].nBits; -+ afd->pwfx->nBlockAlign = 1; -+ if (afd->dwFormatTag == WAVE_FORMAT_MPEGLAYER3) -+ fill_in_mp3(afd->cbwfx, afd->pwfx, 192000); -+ else -+ fill_in_mpeg(afd->cbwfx, afd->pwfx, 192000); -+ break; - default: - WARN("Unsupported tag %08x\n", afd->dwFormatTag); - return MMSYSERR_INVALPARAM; -@@ -829,15 +869,18 @@ static LRESULT MPEG3_FormatSuggest(PACMDRVFORMATSUGGEST adfs) - adfs->pwfxDst->nChannels = adfs->pwfxSrc->nChannels; - if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC)) - adfs->pwfxDst->nSamplesPerSec = adfs->pwfxSrc->nSamplesPerSec; -+ - if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE)) -- adfs->pwfxDst->wBitsPerSample = 16; -+ { -+ if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM) -+ adfs->pwfxDst->wBitsPerSample = 4; -+ else -+ adfs->pwfxDst->wBitsPerSample = 16; -+ } - if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG)) - { - if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM) -- { -- WARN("Encoding to MPEG is not supported\n"); -- return ACMERR_NOTPOSSIBLE; -- } -+ adfs->pwfxDst->wFormatTag = WAVE_FORMAT_MPEGLAYER3; - else - adfs->pwfxDst->wFormatTag = WAVE_FORMAT_PCM; - } -@@ -853,9 +896,12 @@ static LRESULT MPEG3_FormatSuggest(PACMDRVFORMATSUGGEST adfs) - adfs->pwfxDst->nAvgBytesPerSec = adfs->pwfxDst->nSamplesPerSec * adfs->pwfxDst->nBlockAlign; - break; - case WAVE_FORMAT_MPEG: -+ adfs->pwfxDst->nBlockAlign = 1; -+ fill_in_mpeg(adfs->cbwfxDst, adfs->pwfxDst, 192000); -+ break; - case WAVE_FORMAT_MPEGLAYER3: -- WARN("Encoding to MPEG is not supported\n"); -- return ACMERR_NOTPOSSIBLE; -+ adfs->pwfxDst->nBlockAlign = 1; -+ fill_in_mp3(adfs->cbwfxDst, adfs->pwfxDst, 192000); - break; - default: - FIXME("\n"); --- -2.13.1 - diff --git a/patches/winemp3.acm-Revert_MPEG_Encode/definition b/patches/winemp3.acm-Revert_MPEG_Encode/definition deleted file mode 100644 index 25e5f464..00000000 --- a/patches/winemp3.acm-Revert_MPEG_Encode/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [43236] Revert patch which broke in-game audio in multiple games