From: Brendan McGrath bmcgrath@codeweavers.com
--- dlls/mfplat/mediatype.c | 7 +++++++ dlls/mfplat/tests/mfplat.c | 10 ---------- 2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c index 916ab77408d..feab99e3d8f 100644 --- a/dlls/mfplat/mediatype.c +++ b/dlls/mfplat/mediatype.c @@ -4415,6 +4415,13 @@ HRESULT WINAPI MFInitMediaTypeFromAMMediaType(IMFMediaType *media_type, const AM else if (IsEqualGUID(&am_type->formattype, &FORMAT_WaveFormatEx) && am_type->cbFormat >= sizeof(WAVEFORMATEX)) hr = MFInitMediaTypeFromWaveFormatEx(media_type, (WAVEFORMATEX *)am_type->pbFormat, am_type->cbFormat); + else if (IsEqualGUID(&am_type->formattype, &GUID_NULL)) + { + mediatype_set_guid(media_type, &MF_MT_MAJOR_TYPE, &MFMediaType_Audio, &hr); + mediatype_set_guid(media_type, &MF_MT_SUBTYPE, &am_type->subtype, &hr); + mediatype_set_guid(media_type, &MF_MT_AM_FORMAT_TYPE, &GUID_NULL, &hr); + mediatype_set_uint32(media_type, &MF_MT_ALL_SAMPLES_INDEPENDENT, 1, &hr); + } else { FIXME("Unsupported format type %s / size %ld.\n", debugstr_guid(&am_type->formattype), am_type->cbFormat); diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index 1564aa47349..e88760077ae 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -12740,33 +12740,23 @@ static void test_MFInitMediaTypeFromAMMediaType(void) mt.subtype = *audio_types[i];
hr = MFInitMediaTypeFromAMMediaType(media_type, &mt); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
hr = IMFMediaType_GetCount(media_type, &value32); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(value32 == 4, "Unexpected value %#x.\n", value32);
hr = IMFMediaType_GetGUID(media_type, &MF_MT_MAJOR_TYPE, &guid); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(IsEqualGUID(&guid, &MFMediaType_Audio), "Unexpected guid %s.\n", debugstr_guid(&guid)); hr = IMFMediaType_GetGUID(media_type, &MF_MT_SUBTYPE, &guid); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(IsEqualGUID(&guid, audio_types[i]), "Unexpected guid %s.\n", debugstr_guid(&guid)); hr = IMFMediaType_GetUINT32(media_type, &MF_MT_ALL_SAMPLES_INDEPENDENT, &value32); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(value32 == 1, "Unexpected value %#x.\n", value32); hr = IMFMediaType_GetGUID(media_type, &MF_MT_AM_FORMAT_TYPE, &guid); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(IsEqualGUID(&guid, &GUID_NULL), "Unexpected guid %s.\n", debugstr_guid(&guid)); }