Nikolay Sivov : mf/topoloader: Set MF_TOPONODE_MEDIASTART for all source nodes.

Alexandre Julliard julliard at winehq.org
Tue Dec 1 15:40:34 CST 2020


Module: wine
Branch: master
Commit: deda3f8172efc8b4ab19367680f383d9d65b121e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=deda3f8172efc8b4ab19367680f383d9d65b121e

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Dec  1 15:16:28 2020 +0300

mf/topoloader: Set MF_TOPONODE_MEDIASTART for all source nodes.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mf/tests/mf.c | 8 ++++++++
 dlls/mf/topology.c | 8 +++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index c36a76d83bb..b2cb45668cb 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -2136,6 +2136,7 @@ static void test_topology_loader_evr(void)
     IMFTopoLoader *loader;
     IMFMediaSink *sink;
     WORD node_count;
+    UINT64 value64;
     HWND window;
     HRESULT hr;
 
@@ -2232,6 +2233,13 @@ todo_wine
             ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
             ok(!value, "Unexpected stream id %u.\n", value);
         }
+        else if (node_type == MF_TOPOLOGY_SOURCESTREAM_NODE)
+        {
+            value64 = 1;
+            hr = IMFTopologyNode_GetUINT64(node, &MF_TOPONODE_MEDIASTART, &value64);
+            ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+            ok(!value64, "Unexpected value.\n");
+        }
     }
 
     IMFTopology_Release(full_topology);
diff --git a/dlls/mf/topology.c b/dlls/mf/topology.c
index 6f73bb859cd..825b9d538f3 100644
--- a/dlls/mf/topology.c
+++ b/dlls/mf/topology.c
@@ -2380,10 +2380,16 @@ static void topology_loader_resolve_complete(struct topoloader_context *context)
 
             if (node_type == MF_TOPOLOGY_OUTPUT_NODE)
             {
-                /* Make sure MF_TOPONODE_STREAMID is set for all outputs. */
+                /* Set MF_TOPONODE_STREAMID for all outputs. */
                 if (FAILED(IMFTopologyNode_GetItem(node, &MF_TOPONODE_STREAMID, NULL)))
                     IMFTopologyNode_SetUINT32(node, &MF_TOPONODE_STREAMID, 0);
             }
+            else if (node_type == MF_TOPOLOGY_SOURCESTREAM_NODE)
+            {
+                /* Set MF_TOPONODE_MEDIASTART for all sources. */
+                if (FAILED(IMFTopologyNode_GetItem(node, &MF_TOPONODE_MEDIASTART, NULL)))
+                    IMFTopologyNode_SetUINT64(node, &MF_TOPONODE_MEDIASTART, 0);
+            }
 
             IMFTopologyNode_Release(node);
         }




More information about the wine-cvs mailing list