Rebase against 908c837b17ac1c285ef32e98f53df730c3770295.

This commit is contained in:
Alistair Leslie-Hughes
2020-11-04 09:47:25 +11:00
parent 6ad4bdecd2
commit 786cac8be4
11 changed files with 7 additions and 462 deletions

View File

@@ -1,39 +0,0 @@
From d62c72b607a0afed782df3b1c0bdba6eec5a538e Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 16 Oct 2020 16:53:29 -0500
Subject: [PATCH] mfmediaengine: Provide the partial topology to the media
session.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
dlls/mfmediaengine/main.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index d93e2b2f38c..d1261e3cd73 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -418,7 +418,10 @@ static HRESULT media_engine_create_topology(struct media_engine *engine, IMFMedi
{
sd_video = sd;
IMFStreamDescriptor_AddRef(sd_video);
+ /* TODO: reintroduce this once we set up video stream nodes */
+#if 0
IMFPresentationDescriptor_SelectStream(pd, i);
+#endif
}
IMFMediaTypeHandler_Release(type_handler);
@@ -480,6 +483,9 @@ static HRESULT media_engine_create_topology(struct media_engine *engine, IMFMedi
if (audio_src)
IMFTopologyNode_Release(audio_src);
}
+
+ if (SUCCEEDED(hr))
+ hr = IMFMediaSession_SetTopology(engine->session, MFSESSION_SETTOPOLOGY_IMMEDIATE, topology);
}
if (topology)
--
2.28.0

View File

@@ -1,33 +0,0 @@
From afcfca53cc7f15bf0f49463d46b865ba254b70d2 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 16 Oct 2020 16:54:57 -0500
Subject: [PATCH] mfmediaengine: Issue MF_MEDIA_ENGINE_EVENT_CANPLAY upon
MF_TOPOSTATUS_READY.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
dlls/mfmediaengine/main.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index d1261e3cd73..bc89b2f702a 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -295,6 +295,14 @@ static HRESULT WINAPI media_engine_session_events_Invoke(IMFAsyncCallback *iface
IMFMediaEngineNotify_EventNotify(engine->callback, event_type == MEBufferingStarted ?
MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED : MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED, 0, 0);
break;
+ case MESessionTopologyStatus:
+ {
+ UINT32 topo_status = 0;
+ IMFMediaEvent_GetUINT32(event, &MF_EVENT_TOPOLOGY_STATUS, &topo_status);
+ if (topo_status == MF_TOPOSTATUS_READY)
+ IMFMediaEngineNotify_EventNotify(engine->callback, MF_MEDIA_ENGINE_EVENT_CANPLAY, 0, 0);
+ break;
+ }
}
failed:
--
2.28.0

View File

@@ -1,29 +0,0 @@
From 63f092c3ef53718cdeaf1564ac3793cc65891109 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 16 Oct 2020 16:57:21 -0500
Subject: [PATCH] mfmediaengine: Issue MF_MEDIA_ENGINE_EVENT_PLAYING upon
MESessionStarted.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
dlls/mfmediaengine/main.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index bc89b2f702a..ed57aec7eb1 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -303,6 +303,10 @@ static HRESULT WINAPI media_engine_session_events_Invoke(IMFAsyncCallback *iface
IMFMediaEngineNotify_EventNotify(engine->callback, MF_MEDIA_ENGINE_EVENT_CANPLAY, 0, 0);
break;
}
+ case MESessionStarted:
+
+ IMFMediaEngineNotify_EventNotify(engine->callback, MF_MEDIA_ENGINE_EVENT_PLAYING, 0, 0);
+ break;
}
failed:
--
2.28.0

View File

@@ -1,29 +0,0 @@
From d2b277c0588a44e56fa260de34d61f1ca0d16a9d Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 16 Oct 2020 16:58:20 -0500
Subject: [PATCH] mfmediaengine: Issue MF_MEDIA_ENGINE_EVENT_ENDED upon
MESessionEnded.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
dlls/mfmediaengine/main.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index ed57aec7eb1..fe9aa81121f 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -307,6 +307,10 @@ static HRESULT WINAPI media_engine_session_events_Invoke(IMFAsyncCallback *iface
IMFMediaEngineNotify_EventNotify(engine->callback, MF_MEDIA_ENGINE_EVENT_PLAYING, 0, 0);
break;
+ case MESessionEnded:
+
+ IMFMediaEngineNotify_EventNotify(engine->callback, MF_MEDIA_ENGINE_EVENT_ENDED, 0, 0);
+ break;
}
failed:
--
2.28.0

View File

@@ -1,4 +1,4 @@
From 33d71bfb289c8f2273ab2bafbf60e95098e7705f Mon Sep 17 00:00:00 2001
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.
@@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index fe9aa81121f..44e298bf5ef 100644
index e126a925b67..974e11296e9 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -84,6 +84,7 @@ struct media_engine
@@ -91,6 +91,7 @@ struct media_engine
double default_playback_rate;
double volume;
double duration;
@@ -20,7 +20,7 @@ index fe9aa81121f..44e298bf5ef 100644
MF_MEDIA_ENGINE_ERR error_code;
HRESULT extended_code;
MF_MEDIA_ENGINE_READY ready_state;
@@ -432,12 +433,26 @@ static HRESULT media_engine_create_topology(struct media_engine *engine, IMFMedi
@@ -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))
{
@@ -29,10 +29,7 @@ index fe9aa81121f..44e298bf5ef 100644
+
sd_video = sd;
IMFStreamDescriptor_AddRef(sd_video);
/* TODO: reintroduce this once we set up video stream nodes */
#if 0
IMFPresentationDescriptor_SelectStream(pd, i);
#endif
+
+ engine->vid_width = 0;
+ engine->vid_height = 0;
@@ -47,7 +44,7 @@ index fe9aa81121f..44e298bf5ef 100644
}
IMFMediaTypeHandler_Release(type_handler);
@@ -1136,9 +1151,20 @@ static BOOL WINAPI media_engine_HasAudio(IMFMediaEngine *iface)
@@ -1230,9 +1245,20 @@ static BOOL WINAPI media_engine_HasAudio(IMFMediaEngine *iface)
static HRESULT WINAPI media_engine_GetNativeVideoSize(IMFMediaEngine *iface, DWORD *cx, DWORD *cy)
{