Nikolay Sivov : evr/presenter: Set sample size attributes when configuring mixer output.

Alexandre Julliard julliard at winehq.org
Mon Apr 19 15:38:10 CDT 2021


Module: wine
Branch: master
Commit: 9973081f707a7b27633a7fcd57319d8b27aa1b9e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9973081f707a7b27633a7fcd57319d8b27aa1b9e

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Apr 19 16:03:07 2021 +0300

evr/presenter: Set sample size attributes when configuring mixer output.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/evr/presenter.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/dlls/evr/presenter.c b/dlls/evr/presenter.c
index 42c4c81d9d3..c86dccc7b44 100644
--- a/dlls/evr/presenter.c
+++ b/dlls/evr/presenter.c
@@ -312,6 +312,9 @@ static HRESULT video_presenter_set_media_type(struct video_presenter *presenter,
 static HRESULT video_presenter_configure_output_type(struct video_presenter *presenter, const MFVideoArea *aperture,
         IMFMediaType *media_type)
 {
+    unsigned int size;
+    GUID subtype;
+    LONG stride;
     HRESULT hr;
 
     hr = IMFMediaType_SetUINT64(media_type, &MF_MT_FRAME_SIZE, (UINT64)aperture->Area.cx << 32 | aperture->Area.cy);
@@ -320,6 +323,20 @@ static HRESULT video_presenter_configure_output_type(struct video_presenter *pre
     if (SUCCEEDED(hr))
         hr = IMFMediaType_SetBlob(media_type, &MF_MT_MINIMUM_DISPLAY_APERTURE, (UINT8 *)aperture, sizeof(*aperture));
 
+    if (SUCCEEDED(hr))
+        hr = IMFMediaType_GetGUID(media_type, &MF_MT_SUBTYPE, &subtype);
+
+    if (SUCCEEDED(hr))
+    {
+        hr = MFGetStrideForBitmapInfoHeader(subtype.Data1, aperture->Area.cx, &stride);
+        if (SUCCEEDED(hr))
+            hr = MFGetPlaneSize(subtype.Data1, aperture->Area.cx, aperture->Area.cy, &size);
+        if (SUCCEEDED(hr))
+            hr = IMFMediaType_SetUINT32(media_type, &MF_MT_DEFAULT_STRIDE, stride);
+        if (SUCCEEDED(hr))
+            hr = IMFMediaType_SetUINT32(media_type, &MF_MT_SAMPLE_SIZE, stride);
+    }
+
     return hr;
 }
 




More information about the wine-cvs mailing list