How is wg_transform more complicated than wg_parser? There's no thread involved [*], no race condition or deadlock possible, no mutex and no condition variable (meaning no crash on pthread_exit) necessary.
Actually, no, I'm sorry, my earlier statement was incorrect. I do find the transform to be distinctly more complicated, but that's pretty much all because of zero-copy, not because of synchronicity.
Anyway, I don't want to belabor this point, it's not really fruitful to argue which component is more complicated, especially since that's going to be tainted by individual familiarity. I'd rather just understand why we're arranging the demuxer differently.
Actually, for that matter, the more I think about what decodebin does, the more I'd also like to understand why we want to replace it? It's not a trivial stack of code, and we need most of it. As far as I'm aware there are two things we need: deterministic stream order, and faster resolution. But IIRC the resolution delay is from prerolling, which we can do lazily if necessary. If the only thing we need is deterministic stream order, *and* that doesn't block the vast majority of applications, can we just get that into GStreamer instead?