mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 00:36:51 +00:00
baseparse: When initializing DTS from PTS, remember that we did so
If we don't store the value in prev_dts, we would over and over again initialize the DTS from the last known upstream PTS. If upstream only provides PTS every now and then, then this causes DTS to be rather static. For example in adaptive streaming scenarios this means that all buffers in a fragment will have exactly the same DTS while the PTS is properly updated. As our queues are now preferring to do buffer fill level calculations on DTS, this is causing huge problems there. See https://bugzilla.gnome.org/show_bug.cgi?id=691481#c27 where this part of the code was introduced. https://bugzilla.gnome.org/show_bug.cgi?id=765096
This commit is contained in:
parent
428de28c9b
commit
895332e056
1 changed files with 1 additions and 1 deletions
|
@ -3180,7 +3180,7 @@ gst_base_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
|
||||||
!GST_CLOCK_TIME_IS_VALID (dts) &&
|
!GST_CLOCK_TIME_IS_VALID (dts) &&
|
||||||
!GST_CLOCK_TIME_IS_VALID (parse->priv->prev_dts) &&
|
!GST_CLOCK_TIME_IS_VALID (parse->priv->prev_dts) &&
|
||||||
GST_CLOCK_TIME_IS_VALID (pts))
|
GST_CLOCK_TIME_IS_VALID (pts))
|
||||||
parse->priv->next_dts = pts;
|
parse->priv->prev_dts = parse->priv->next_dts = pts;
|
||||||
|
|
||||||
/* always pass all available data */
|
/* always pass all available data */
|
||||||
tmpbuf = gst_adapter_get_buffer (parse->priv->adapter, av);
|
tmpbuf = gst_adapter_get_buffer (parse->priv->adapter, av);
|
||||||
|
|
Loading…
Reference in a new issue