This fixes failure to play the prologue video in Planet of the Apes: Last Frontier, which unpauses by calling Start() with a location. The exact state leading to this issue does not occur in the Start() tests, and it's not clear how to reproduce it reliably.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7466
On Sat Mar 1 21:59:13 2025 +0000, Brendan McGrath wrote:
> I took a look at the linux-32 results, but I missed the mf failures (I
> thought they were all ddraw). Why would linux-32 fail but not linux-64?
> Anyway, it's the same test failing twice:
> ```
> $ xmllint --xpath 'testsuites/testsuite/testcase[failure and
> @classname="mf:transform"]/@name' winetest.xml
> name="mf:transform transform.c:2587 Test failed: aacdec:
> "MF_MT_USER_DATA": SetInputType returned 0."
> name="mf:transform transform.c:2587 Test failed: aacdec:
> "MF_MT_USER_DATA": SetInputType returned 0."
> ```
> The test checks that a call to `SetInputType` on the AAC decoder returns
> an error when `MF_MT_USER_DATA` is missing. It does so by relying on the
> return value of `MFCreateWaveFormatExFromMFMediaType`. So it's dependent
> on what was the broken behavior. I suspect it should also be checking
> `cbSize`. I'll add tests to confirm as much and then fix.
> Note, I have confirmed that we now have the correct behavior for
> `MFCreateWaveFormatExFromMFMediaType` by adding (locally) the following
> two tests:
> ```
> @@ -5958,6 +5958,8 @@ static void test_MFCreateWaveFormatExFromMFMediaType(void)
> { &MFAudioFormat_Float, WAVE_FORMAT_IEEE_FLOAT,
> sizeof(WAVEFORMATEX), 0, },
> { &MFAudioFormat_MP3, WAVE_FORMAT_MPEGLAYER3,
> sizeof(WAVEFORMATEX), 0, },
> { &DUMMY_GUID3, WAVE_FORMAT_EXTENSIBLE,
> sizeof(WAVEFORMATEXTENSIBLE), 22, },
> + { &MFAudioFormat_AAC, WAVE_FORMAT_MPEG_HEAAC,
> sizeof(WAVEFORMATEX), 0, },
> + { &MFAudioFormat_RAW_AAC, WAVE_FORMAT_RAW_AAC1,
> sizeof(WAVEFORMATEX), 0, },
> ```
> Test bot passes:
> https://testbot.winehq.org/JobDetails.pl?Key=151559
> Well Windows did, Debian crashed.
I've raised MR !7465 to fix the failing test. I also add new tests that seem to indicate we are still missing some validation in the aac decoder around `MF_MT_USER_DATA`. For example, in one of the tests, I send a value of 44.1KHz in `MF_MT_AUDIO_SAMPLES_PER_SECOND`, but a value of 48KHz in `MF_MT_USER_DATA`. Windows returns `MF_E_INVALIDMEDIATYPE`, but we return `S_OK`. So this test is currently marked as todo.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7417#note_96490
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v2: windowscodecs: Implement GetPreferredVendorGUID().
windowscodecs/metadata: Implement GetClassID().
windowscodecs/tests: Add some tests for metadata handler GetClassID().
windowscodecs/metadata: Replicate original stream position when creating writer instances from readers.
windowscodecs/metadata: Restore original stream position on GetStream().
windowscodecs/tests: Add some tests for stream position handling when nested readers are used.
windowscodecs: Implement CreateQueryWriterFromReader().
windowscodecs/metadata: Do not decorate 'wstr' items with a type name in returned queries.
windowscodecs/tests: Add some more tests for query enumeration.
windowscodecs: Implement query strings enumerator.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7407
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v3: d2d1: Update DC target surface with current HDC contents on BeginDraw().
d2d1/tests: Add some tests for device context handling in the DC target.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7443