From: Rémi Bernon rbernon@codeweavers.com
--- dlls/mfplat/mediatype.c | 23 +++++++++++++++++++++++ dlls/mfplat/mfplat.spec | 2 +- include/mfapi.h | 2 ++ 3 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c index 9c4b9877e02..90ae0bb8a21 100644 --- a/dlls/mfplat/mediatype.c +++ b/dlls/mfplat/mediatype.c @@ -4334,3 +4334,26 @@ HRESULT WINAPI MFInitMediaTypeFromAMMediaType(IMFMediaType *media_type, const AM
return hr; } + +/*********************************************************************** + * MFCreateMediaTypeFromRepresentation (mfplat.@) + */ +HRESULT WINAPI MFCreateMediaTypeFromRepresentation(GUID guid_representation, void *representation, + IMFMediaType **media_type) +{ + HRESULT hr; + + if (FAILED(hr = MFCreateMediaType(media_type))) + return hr; + + if (IsEqualGUID(&guid_representation, &AM_MEDIA_TYPE_REPRESENTATION)) + hr = MFInitMediaTypeFromAMMediaType(*media_type, representation); + + if (FAILED(hr)) + { + IMFMediaType_Release(*media_type); + *media_type = NULL; + } + + return hr; +} diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec index d8a6eb5ce83..57db3cdf9f6 100644 --- a/dlls/mfplat/mfplat.spec +++ b/dlls/mfplat/mfplat.spec @@ -59,7 +59,7 @@ @ stub MFCreateMediaBufferWrapper @ stdcall MFCreateMediaEvent(long ptr long ptr ptr) @ stdcall MFCreateMediaType(ptr) -@ stub MFCreateMediaTypeFromRepresentation +@ stdcall MFCreateMediaTypeFromRepresentation(int128 ptr ptr) @ stdcall MFCreateMemoryBuffer(long ptr) @ stub MFCreateMemoryStream @ stdcall MFCreatePathFromURL(wstr ptr) diff --git a/include/mfapi.h b/include/mfapi.h index f986edd0d5a..0a9f7c6f415 100644 --- a/include/mfapi.h +++ b/include/mfapi.h @@ -549,6 +549,8 @@ HRESULT WINAPI MFCreateMediaEvent(MediaEventType type, REFGUID extended_type, HR HRESULT WINAPI MFCreateMediaType(IMFMediaType **type); HRESULT WINAPI MFCreateAMMediaTypeFromMFMediaType(IMFMediaType *media_type, GUID format_type, AM_MEDIA_TYPE **am_type); HRESULT WINAPI MFCreateMFVideoFormatFromMFMediaType(IMFMediaType *media_type, MFVIDEOFORMAT **video_format, UINT32 *size); +HRESULT WINAPI MFCreateMediaTypeFromRepresentation(GUID guid_representation, void *representation, + IMFMediaType **media_type); HRESULT WINAPI MFCreateSample(IMFSample **sample); HRESULT WINAPI MFCreateTempFile(MF_FILE_ACCESSMODE accessmode, MF_FILE_OPENMODE openmode, MF_FILE_FLAGS flags, IMFByteStream **bytestream);