[PATCH 08/10] mf: Introduce topology_loader_connect_transform() to handle connections of transform nodes in _Load().
Sergio Gómez Del Real
sdelreal at codeweavers.com
Sun Jun 14 20:41:56 CDT 2020
Signed-off-by: Sergio Gómez Del Real <sdelreal at codeweavers.com>
---
dlls/mf/topology.c | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/dlls/mf/topology.c b/dlls/mf/topology.c
index e38035ddd2..bb8b9de267 100644
--- a/dlls/mf/topology.c
+++ b/dlls/mf/topology.c
@@ -2108,6 +2108,34 @@ out:
return hr;
}
+static HRESULT topology_loader_connect_transform(struct topoloader_context *context, IMFTopologyNode *transform_node, unsigned int output_index,
+ IMFTopologyNode *downstream_node, unsigned int input_index)
+{
+ UINT32 method = MF_CONNECT_ALLOW_DECODER;
+ IMFTransform *transform;
+ IMFMediaType *mediatype;
+ HRESULT hr;
+ int i;
+
+ IMFTopologyNode_GetObject(transform_node, (IUnknown **)&transform);
+
+ IMFTopologyNode_GetUINT32(downstream_node, &MF_TOPONODE_CONNECT_METHOD, &method);
+
+ i = 0;
+ while (SUCCEEDED(hr = IMFTransform_GetOutputAvailableType(transform, output_index, i++, &mediatype)))
+ {
+ hr = S_OK;
+
+ IMFMediaType_Release(mediatype);
+
+ if (SUCCEEDED(hr))
+ break;
+ }
+
+ IMFTransform_Release(transform);
+ return hr;
+}
+
static HRESULT topology_loader_resolve_nodes(struct topoloader_context *context)
{
IMFTopologyNode *node, *downstream_node, *orig_node, *orig_downstream_node;
@@ -2137,7 +2165,7 @@ static HRESULT topology_loader_resolve_nodes(struct topoloader_context *context)
hr = topology_loader_connect_source(context, node, downstream_node, input_index);
break;
case MF_TOPOLOGY_TRANSFORM_NODE:
- hr = S_OK;
+ hr = topology_loader_connect_transform(context, node, i, downstream_node, input_index);
break;
case MF_TOPOLOGY_TEE_NODE:
FIXME("Tee node unsupported.\n");
--
2.17.1
More information about the wine-devel
mailing list