[PATCH] mfplat: Implement GetVideoFormat().

Nikolay Sivov nsivov at codeweavers.com
Tue Jun 23 06:29:05 CDT 2020


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/mfplat/mediatype.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c
index 66722a84b6f..843c09c5e09 100644
--- a/dlls/mfplat/mediatype.c
+++ b/dlls/mfplat/mediatype.c
@@ -38,6 +38,7 @@ struct media_type
     struct attributes attributes;
     IMFMediaType IMFMediaType_iface;
     IMFVideoMediaType IMFVideoMediaType_iface;
+    MFVIDEOFORMAT *video_format;
 };
 
 struct stream_desc
@@ -648,6 +649,7 @@ static ULONG WINAPI video_mediatype_Release(IMFVideoMediaType *iface)
     if (!refcount)
     {
         clear_attributes_object(&media_type->attributes);
+        CoTaskMemFree(media_type->video_format);
         heap_free(media_type);
     }
 
@@ -971,9 +973,17 @@ static HRESULT WINAPI video_mediatype_FreeRepresentation(IMFVideoMediaType *ifac
 
 static const MFVIDEOFORMAT * WINAPI video_mediatype_GetVideoFormat(IMFVideoMediaType *iface)
 {
-    FIXME("%p.\n", iface);
+    struct media_type *media_type = impl_from_IMFVideoMediaType(iface);
+    unsigned int size;
+    HRESULT hr;
+
+    TRACE("%p.\n", iface);
+
+    CoTaskMemFree(media_type->video_format);
+    if (FAILED(hr = MFCreateMFVideoFormatFromMFMediaType((IMFMediaType *)iface, &media_type->video_format, &size)))
+        WARN("Failed to create format description, hr %#x.\n", hr);
 
-    return NULL;
+    return media_type->video_format;
 }
 
 static HRESULT WINAPI video_mediatype_GetVideoRepresentation(IMFVideoMediaType *iface, GUID representation,
-- 
2.27.0




More information about the wine-devel mailing list