mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-08 18:39:54 +00:00
f4ba43b15d
When syncing by running time, multiqueue will throttle unlinked streams based on a global "high-time" and the pending "next_time" of a stream. The idea is that we don't want unlinked streams to be "behind" the global running time of linked streams, so that if/when they get linked (like when switching tracks) decoding/playback can resume from the same position as the other streams. The problem is that it assumes elements downstream will have a more or less equal buffering/latency ... which isn't the case for streams of different type. Video decoders tend to have higher latency (and therefore consume more from upstream to output a given decoded frame) compared to audio ones, resulting in the computed "high_time" being at the position of the video stream, much further than the audio streams. This means the unlinked audio streams end up being quite a bit after the linked audio streams, resulting in gaps when switching streams. In order to mitigate this issue, this patch adds a new "group-id" pad property which allows users to "group" streams together. Calculating the high-time will now be done not only globally, but also per group. This ensures that within a given group unlinked streams will be throttled by that group's high-time instead. This fixes gaps when switching downstream elements (like switching audio tracks). |
||
---|---|---|
.. | ||
.gitignore | ||
gstcapsfilter.c | ||
gstcapsfilter.h | ||
gstconcat.c | ||
gstconcat.h | ||
gstdownloadbuffer.c | ||
gstdownloadbuffer.h | ||
gstelements.c | ||
gstelements_private.c | ||
gstelements_private.h | ||
gstfakesink.c | ||
gstfakesink.h | ||
gstfakesrc.c | ||
gstfakesrc.h | ||
gstfdsink.c | ||
gstfdsink.h | ||
gstfdsrc.c | ||
gstfdsrc.h | ||
gstfilesink.c | ||
gstfilesink.h | ||
gstfilesrc.c | ||
gstfilesrc.h | ||
gstfunnel.c | ||
gstfunnel.h | ||
gstidentity.c | ||
gstidentity.h | ||
gstinputselector.c | ||
gstinputselector.h | ||
gstmultiqueue.c | ||
gstmultiqueue.h | ||
gstoutputselector.c | ||
gstoutputselector.h | ||
gstqueue.c | ||
gstqueue.h | ||
gstqueue2.c | ||
gstqueue2.h | ||
gstsparsefile.c | ||
gstsparsefile.h | ||
gststreamiddemux.c | ||
gststreamiddemux.h | ||
gsttee.c | ||
gsttee.h | ||
gsttypefindelement.c | ||
gsttypefindelement.h | ||
gstvalve.c | ||
gstvalve.h | ||
Makefile.am |