[PATCH 6/9] mf: Pass start and flush messages to transform nodes.
Nikolay Sivov
nsivov at codeweavers.com
Fri Mar 13 07:34:35 CDT 2020
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
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);
--
2.25.1
More information about the wine-devel
mailing list