Nikolay Sivov (@nsivov) commented about dlls/mfmediaengine/main.c:
for (i = 0; video_effects && i < engine->effects.video_effects_count; ++i)
{
IMFTopology_AddNode(topology, video_effects[i]);
if (i > 0)
IMFTopologyNode_ConnectOutput(video_effects[i - 1], 0, video_effects[i], 0);
}
if (video_effects)
{
IMFTopologyNode_ConnectOutput(video_src, 0, video_effects[0], 0);
IMFTopologyNode_ConnectOutput(video_effects[engine->effects.video_effects_count - 1], 0, grabber_node, 0);
}
else
IMFTopologyNode_ConnectOutput(video_src, 0, grabber_node, 0); }
You could create effect nodes one by one inside this loop. No need to check for video_effects != NULL.