Is there something unusual about this situation? What kind of format is the original file?
I've been testing with videos from YouTube. They're HLS files (H.264/AAC). So they are streamed from the internet, which likely slows things down. I've attached the pipeline.
Note that downloading, demuxing and decoding all take place in the media source.
Ah, yes, that would be unusual. The current code is built around the assumption that as long as control is in the parser it will never actually *sleep*—either it's actively demuxing, or it's currently in the downstream chain function. If that's not the case, then yeah, we have to explicitly unblock the get_buffer function like this.
on Windows it wouldn't be a separate thread and wouldn't be interruptible
It's possible Windows solves this a different way. Maybe I can write a test to confirm.
Maybe, but as long as the demuxer component is running in pull mode, it's going to be necessary to do something like this.