Rebase against b793799d3d5facb765d97041669da4bc159b860b.

This commit is contained in:
Alistair Leslie-Hughes 2020-11-05 11:02:49 +11:00
parent 786cac8be4
commit 4130b2a71c
3 changed files with 8 additions and 82 deletions

View File

@ -1,72 +0,0 @@
From f2c8482489046a0623ef3d011ac7373209eef09a Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 16 Oct 2020 16:59:32 -0500
Subject: [PATCH] mfmediaengine: Implement GetNativeVideoSize.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
dlls/mfmediaengine/main.c | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index e126a925b67..974e11296e9 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -91,6 +91,7 @@ struct media_engine
double default_playback_rate;
double volume;
double duration;
+ DWORD vid_width, vid_height;
MF_MEDIA_ENGINE_ERR error_code;
HRESULT extended_code;
MF_MEDIA_ENGINE_READY ready_state;
@@ -496,9 +497,23 @@ static HRESULT media_engine_create_topology(struct media_engine *engine, IMFMedi
}
else if (IsEqualGUID(&major, &MFMediaType_Video) && !sd_video && !(engine->flags & MF_MEDIA_ENGINE_AUDIOONLY))
{
+ IMFMediaType *video_type;
+ UINT64 frame_size;
+
sd_video = sd;
IMFStreamDescriptor_AddRef(sd_video);
IMFPresentationDescriptor_SelectStream(pd, i);
+
+ engine->vid_width = 0;
+ engine->vid_height = 0;
+ if (SUCCEEDED(IMFMediaTypeHandler_GetCurrentMediaType(type_handler, &video_type)))
+ {
+ if (SUCCEEDED(IMFMediaType_GetUINT64(video_type, &MF_MT_FRAME_SIZE, &frame_size)))
+ {
+ engine->vid_width = frame_size >> 32;
+ engine->vid_height = frame_size;
+ }
+ }
}
IMFMediaTypeHandler_Release(type_handler);
@@ -1230,9 +1245,20 @@ static BOOL WINAPI media_engine_HasAudio(IMFMediaEngine *iface)
static HRESULT WINAPI media_engine_GetNativeVideoSize(IMFMediaEngine *iface, DWORD *cx, DWORD *cy)
{
- FIXME("(%p, %p, %p): stub.\n", iface, cx, cy);
+ struct media_engine *engine = impl_from_IMFMediaEngine(iface);
- return E_NOTIMPL;
+ TRACE("(%p, %p, %p)\n", iface, cx, cy);
+
+ if (!(engine->flags & FLAGS_ENGINE_HAS_VIDEO))
+ return E_INVALIDARG;
+
+ if (!engine->vid_width || !engine->vid_height)
+ return E_FAIL;
+
+ *cx = engine->vid_width;
+ *cy = engine->vid_height;
+
+ return S_OK;
}
static HRESULT WINAPI media_engine_GetVideoAspectRatio(IMFMediaEngine *iface, DWORD *cx, DWORD *cy)
--
2.28.0

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "908c837b17ac1c285ef32e98f53df730c3770295"
echo "b793799d3d5facb765d97041669da4bc159b860b"
}
# Show version information
@ -2820,13 +2820,12 @@ fi
# |
# | Modified files:
# | * dlls/mf/Makefile.in, dlls/mf/handler.c, dlls/mf/handler.h, dlls/mf/main.c, dlls/mf/session.c, dlls/mf/tests/mf.c,
# | dlls/mf/topology.c, dlls/mfmediaengine/main.c, dlls/mfplat/tests/mfplat.c, dlls/mfplat/tests/test.mp4,
# | dlls/mfreadwrite/reader.c, dlls/mfreadwrite/tests/mfplat.c, dlls/mfreadwrite/tests/resource.rc,
# | dlls/mfreadwrite/tests/test.mp4, dlls/winegstreamer/Makefile.in, dlls/winegstreamer/audioconvert.c,
# | dlls/winegstreamer/colorconvert.c, dlls/winegstreamer/gst_cbs.c, dlls/winegstreamer/gst_cbs.h,
# | dlls/winegstreamer/gst_private.h, dlls/winegstreamer/main.c, dlls/winegstreamer/media_source.c,
# | dlls/winegstreamer/mf_decode.c, dlls/winegstreamer/mfplat.c, dlls/winegstreamer/winegstreamer_classes.idl,
# | include/mfidl.idl, tools/make_makefiles, tools/makedep.c
# | dlls/mf/topology.c, dlls/mfplat/tests/mfplat.c, dlls/mfplat/tests/test.mp4, dlls/mfreadwrite/reader.c,
# | dlls/mfreadwrite/tests/mfplat.c, dlls/mfreadwrite/tests/resource.rc, dlls/mfreadwrite/tests/test.mp4,
# | dlls/winegstreamer/Makefile.in, dlls/winegstreamer/audioconvert.c, dlls/winegstreamer/colorconvert.c,
# | dlls/winegstreamer/gst_cbs.c, dlls/winegstreamer/gst_cbs.h, dlls/winegstreamer/gst_private.h, dlls/winegstreamer/main.c,
# | dlls/winegstreamer/media_source.c, dlls/winegstreamer/mf_decode.c, dlls/winegstreamer/mfplat.c,
# | dlls/winegstreamer/winegstreamer_classes.idl, include/mfidl.idl, tools/make_makefiles, tools/makedep.c
# |
if test "$enable_mfplat_streaming_support" -eq 1; then
patch_apply mfplat-streaming-support/0005-mf-Unconditionally-deliver-NULL-EOS-samples.patch
@ -2873,7 +2872,6 @@ if test "$enable_mfplat_streaming_support" -eq 1; then
patch_apply mfplat-streaming-support/0052-winegstreamer-Implement-audio-conversion-MFT.patch
patch_apply mfplat-streaming-support/0053-HACK-Shutdown-media-sinks-on-session-shutdown.patch
patch_apply mfplat-streaming-support/0054-HACK-Flush-decoder-when-changing-times.patch
patch_apply mfplat-streaming-support/0055-mfmediaengine-Implement-GetNativeVideoSize.patch
patch_apply mfplat-streaming-support/0060-winegstreamer-Support-eAVEncH264VProfile_Constrained.patch
fi

View File

@ -1 +1 @@
908c837b17ac1c285ef32e98f53df730c3770295
b793799d3d5facb765d97041669da4bc159b860b