Eh, sorry, my question was based on a misreading—these aren't coming from our demuxer.
I'm not sure we can tell what native does exactly here but IMO, and especially as we're doing this only if we have a parser, this should instead use the parser in a standalone way to split the data into individual packets with the correct boundaries. This could probably be done in push_data, then every parsed buffer would be queued instead of the input data itself.
Why is that better?