On Mon Apr 27 09:35:08 2026 +0000, Rémi Bernon wrote:
Fwiw I'm still wrapping my head around the remaining patches. Some notes gathered about native behavior:
1) Connects up to down first, one stream at a time, by skipping optional nodes, creates decoders and converters as needed. If this fails, optional nodes connection aren't attempted, even if they would connect the graph. 2) Insertion of optional nodes happens one after each other, up to down, and if optional chain works as a whole but doesn't individually all the optional nodes are skipped. 3) Optional node is connected by iterating over each of its output stream, connecting the stream directly to the downstream node before attempting to insert extra optional nodes. 4) If one optional node connection fails, it is skipped and extra optional nodes down the main stream may be attempted, but other streams from the skipped node, and their nodes are also skipped. This seems fairly broken though. 5) If optional connection fails, original branch is often connected again before attempting other optional nodes. If one optional node connection succeeds, its successful output type is kept, and maybe restored if the next optional node fails to connect. 6) If optional node type matches source but a converter has been added, the connection is attempted with the converter anyway, even if connection with the source node would work directly. 7) If connection between optional and upstream converter fails, more types are attempted from the converter only if optional allows converter, and optional node is skipped otherwise. If there is already a converter it is reused, inserted otherwise if allowed. 8) If connection between up and down is direct, but optional requires a converter, they are inserted iff the optional node method allows them, both upstream and downstream. The downstream node connection method doesn't matter for this. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10645#note_137739