[PATCH 2/4] evr/presenter: Set sample size attributes when configuring mixer output.
Nikolay Sivov
nsivov at codeweavers.com
Mon Apr 19 08:03:07 CDT 2021
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/evr/presenter.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/dlls/evr/presenter.c b/dlls/evr/presenter.c
index 29317fb87b4..1cf2ef1ad56 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;
}
--
2.30.2
More information about the wine-devel
mailing list