From: Brendan McGrath bmcgrath@codeweavers.com
--- dlls/mfplat/mediatype.c | 6 ++++-- dlls/mfplat/tests/mfplat.c | 3 --- 2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c index feab99e3d8f..0ee29b7a5e3 100644 --- a/dlls/mfplat/mediatype.c +++ b/dlls/mfplat/mediatype.c @@ -2989,7 +2989,7 @@ HRESULT WINAPI MFCreateWaveFormatExFromMFMediaType(IMFMediaType *mediatype, WAVE { UINT32 extra_size = 0, user_size; WAVEFORMATEX *format; - GUID major, subtype, basetype = MFAudioFormat_Base; + GUID major, subtype, basetype = MFAudioFormat_Base, formattype; void *user_data; HRESULT hr;
@@ -3006,7 +3006,9 @@ HRESULT WINAPI MFCreateWaveFormatExFromMFMediaType(IMFMediaType *mediatype, WAVE
if (FAILED(hr = IMFMediaType_GetBlobSize(mediatype, &MF_MT_USER_DATA, &user_size))) { - if (!IsEqualGUID(&subtype, &MFAudioFormat_PCM) && !IsEqualGUID(&subtype, &MFAudioFormat_Float)) + if (SUCCEEDED(IMFMediaType_GetGUID(mediatype, &MF_MT_AM_FORMAT_TYPE, &formattype)) && + !IsEqualGUID(&formattype, &GUID_NULL) && + !IsEqualGUID(&subtype, &MFAudioFormat_PCM) && !IsEqualGUID(&subtype, &MFAudioFormat_Float)) return hr; user_size = 0; } diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index db85577fb2c..1dbaddbfdcd 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -5961,7 +5961,6 @@ static void test_MFCreateWaveFormatExFromMFMediaType(void) ok(hr == S_OK, "Failed to set attribute, hr %#lx.\n", hr);
hr = MFCreateWaveFormatExFromMFMediaType(mediatype, &format, &size, MFWaveFormatExConvertFlag_Normal); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); CoTaskMemFree(format);
@@ -5969,7 +5968,6 @@ static void test_MFCreateWaveFormatExFromMFMediaType(void) ok(hr == S_OK, "Failed to set attribute, hr %#lx.\n", hr);
hr = MFCreateWaveFormatExFromMFMediaType(mediatype, &format, &size, MFWaveFormatExConvertFlag_Normal); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); CoTaskMemFree(format);
@@ -5977,7 +5975,6 @@ static void test_MFCreateWaveFormatExFromMFMediaType(void) ok(hr == S_OK, "Failed to set attribute, hr %#lx.\n", hr);
hr = MFCreateWaveFormatExFromMFMediaType(mediatype, &format, &size, MFWaveFormatExConvertFlag_Normal); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); CoTaskMemFree(format);