Does this fix any known application that 5988 does not?
Also:
* In an attempt to simplify the code, this removes the ability to output uncompressed samples—which spans about 70 self-contained lines of code in pad_added()—and replaces it with a whole separate transform per frontend. Why is this an improvement?
* This removes pull-mode support, which breaks seeking or playback in many demuxers, including demuxers for formats that Windows natively supports.
* Since the plan is to both push and read data from the same thread, how do we make sure we've pushed enough data (to get a sample) without pushing too much (such that pushing blocks due to overflow)?
The answer I've been given is "we always assume that the GStreamer demuxer acts synchronously". This is not guaranteed and may easily be broken by future library changes. The same assumption has already been broken in the transform.
Simplicity cannot come at the cost of removing vital code.
* Setting aside the above: removing pull mode is done with the express goal of removing the PE-side read thread.
However, removing the read thread can be done without removing support for pull mode, simply by calling wg_parser_get_next_read_offset() from the same thread before pushing.