Nikolay Sivov : mf: Pass start and flush messages to transform nodes.
Alexandre Julliard
julliard at winehq.org
Fri Mar 13 15:24:44 CDT 2020
Module: wine
Branch: master
Commit: c6f0124e840b98fa9b4d6ebe84780b3e21faea04
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c6f0124e840b98fa9b4d6ebe84780b3e21faea04
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Fri Mar 13 15:34:35 2020 +0300
mf: Pass start and flush messages to transform nodes.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mf/session.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/dlls/mf/session.c b/dlls/mf/session.c
index e1e7753a1c..64988579f4 100644
--- a/dlls/mf/session.c
+++ b/dlls/mf/session.c
@@ -1827,6 +1827,12 @@ static HRESULT session_start_clock(struct media_session *session)
struct topo_node *node;
HRESULT hr;
+ LIST_FOR_EACH_ENTRY(node, &session->presentation.nodes, struct topo_node, entry)
+ {
+ if (node->type == MF_TOPOLOGY_TRANSFORM_NODE)
+ IMFTransform_ProcessMessage(node->object.transform, MFT_MESSAGE_NOTIFY_START_OF_STREAM, 0);
+ }
+
if (!(session->presentation.flags & SESSION_FLAG_SINKS_SUBSCRIBED))
{
LIST_FOR_EACH_ENTRY(sink, &session->presentation.sinks, struct media_sink, entry)
@@ -1968,8 +1974,17 @@ static void session_set_source_object_state(struct media_session *session, IUnkn
LIST_FOR_EACH_ENTRY(node, &session->presentation.nodes, struct topo_node, entry)
{
- if (node->type == MF_TOPOLOGY_OUTPUT_NODE)
- IMFStreamSink_Flush(node->object.sink_stream);
+ switch (node->type)
+ {
+ case MF_TOPOLOGY_OUTPUT_NODE:
+ IMFStreamSink_Flush(node->object.sink_stream);
+ break;
+ case MF_TOPOLOGY_TRANSFORM_NODE:
+ IMFTransform_ProcessMessage(node->object.transform, MFT_MESSAGE_COMMAND_FLUSH, 0);
+ break;
+ default:
+ ;
+ }
}
session_set_caps(session, session->caps & ~MFSESSIONCAP_PAUSE);
More information about the wine-cvs
mailing list