The pipeline I attached above is from Proton, the Wine pipeline is a little different:
[0.00.02.072525578-wg_parser_caps.dot](/uploads/ff3ce471d93dfe7ec0335655617dddfd/0.00.02.072525578-wg_parser_caps.dot)
The main difference is where the HLS file comes from. On Wine, the HLS comes from an `IMFByteStream` (which wraps an `IStream` created with `URLOpenBlockingStreamW`). This byte stream is then processed by a `decodebin` element.
On Proton, the URL is passed directly to a `urldecodebin` element, so no `IMFByteStream` is used. Instead the `urldecodebin` uses a `souphttpsrc` element to directly fetch the HLS file.
The HLS is a simple ASCII file though. It contains the list of TS files for the actual video. So on both Wine and Proton, the actual TS files are downloaded by a `souphttpsrc` element within the `hlsdemux` element.
as long as the demuxer component is running in pull mode, it's going to be necessary to do something like this.
So I suspect that even though the demuxer components on this occasion are running in push mode, because the TS is not being pushed by our `src` pad (within `wg_parser`), then our only option is likely to unblock before calling `wg_parser_stream_get_buffer`. Let me know if you agree.