AFAIW, playbin3 urisousebin uses queue2 to implement network buffering.
In most network streaming cases, queue2 and its upstream, has no buffer
The file encoded bitrate and network real-time download bitrate may be very
Therefore, according to the max-size-bytes to control the buffering,it seems
there will always
be various problems.
For example 4K files,if the max-size-bytes is smaller, frequently buffering,
and relatively low bitrate files play well.
On the contrary, if the max-size-bytes is set to a higher value , low
bitrate file will take a long time to wait
My doubt is, is it possible that GStreamer framework to provide a mechanism
for Queue2 to query buffer timestamp information from
downstream(demuxer,parser? ) for a convenient and accurate calculation of
The details may be more complicated, but this indeed be necessary.
Vinod Kesti wrote
> Did try with buffer-duration of palybin ??
> set buffer-size=0 and playaround with buffer-duration
Yes, I did try it, like HLS, just to estimate the time,Using the tag
information in m3u8, ts seg. Duration/seg. Size, calculate the average
bitrate, and then roughly estimate max_size_time, other such as ts over
http(push mode) scenario, Max -size-time is always 0(meaning invalid).That
completely dependent on upstream.
Maybe stupid, I was thinking,The BUFFERING MESSAGE is only sent to the
upper layer before, can we try this:
* BUFFERING MESSAGE simultaneously send to upstream (source, APP) and
* Once queue2 receive a buffer or buffer list,then query received buffer's
timestamp from downstream (demuxer, parser);
* Queue2 saves the value of the query in step 2, and it is more accurate to
know how much time has been cached in the pipeline.