From: Nikolay Sivov Subject: Re: [PATCH 05/10] mf: Get max depth of branches in input topology in _Load(). Message-Id: <53856e67-1bc7-17e3-2af9-1721bf1c1d97@codeweavers.com> Date: Mon, 22 Jun 2020 14:44:20 +0300 In-Reply-To: <20200615014158.6836-5-sdelreal@codeweavers.com> References: <20200615014158.6836-1-sdelreal@codeweavers.com> <20200615014158.6836-5-sdelreal@codeweavers.com> On 6/15/20 4:41 AM, Sergio Gómez Del Real wrote: > +static int topology_loader_get_branch_depth(IMFTopologyNode *node, int level) > +{ > + IMFTopologyNode *current_node; > + MF_TOPOLOGY_TYPE node_type; > + static int max_level = 0; > + > + if (level > max_level) > + max_level = level; > + > + IMFTopologyNode_GetNodeType(node, &node_type); > + if (node_type == MF_TOPOLOGY_SOURCESTREAM_NODE || node_type == MF_TOPOLOGY_TRANSFORM_NODE) > + { > + int stream = 0; > + DWORD input_stream; > + > + while (SUCCEEDED(IMFTopologyNode_GetOutput(node, stream++, ¤t_node, &input_stream))) > + topology_loader_get_branch_depth(current_node, level + 1); > + } > + > + return max_level; > +} I don't understand the purpose of this. Could you elaborate? I see it's used in 6/10, but why can't we iterate until output node is reached? P.S. regardless of the above, static variable should not be used for this.