mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 02:31:03 +00:00
dashdemux: Only set timestamp to the first buffer of fragments
Setting it to the other parts of the fragment is slightly wrong and misleading as it isn't accurate enough.
This commit is contained in:
parent
f09dd7e7a5
commit
173c353716
1 changed files with 18 additions and 18 deletions
|
@ -1899,6 +1899,24 @@ _src_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
|
||||||
GST_TIME_ARGS (stream->current_fragment.timestamp));
|
GST_TIME_ARGS (stream->current_fragment.timestamp));
|
||||||
|
|
||||||
GST_BUFFER_PTS (buffer) = stream->current_fragment.timestamp;
|
GST_BUFFER_PTS (buffer) = stream->current_fragment.timestamp;
|
||||||
|
|
||||||
|
if (stream->pending_segment) {
|
||||||
|
if (demux->timestamp_offset == -1)
|
||||||
|
demux->timestamp_offset = GST_BUFFER_PTS (buffer);
|
||||||
|
else
|
||||||
|
demux->timestamp_offset =
|
||||||
|
MIN (GST_BUFFER_PTS (buffer), demux->timestamp_offset);
|
||||||
|
|
||||||
|
/* And send a newsegment */
|
||||||
|
gst_pad_push_event (stream->pad, stream->pending_segment);
|
||||||
|
stream->pending_segment = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* make timestamp start from 0 by subtracting the offset */
|
||||||
|
GST_BUFFER_PTS (buffer) -= demux->timestamp_offset;
|
||||||
|
|
||||||
|
stream->position = demux->segment.position = GST_BUFFER_PTS (buffer);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
GST_BUFFER_PTS (buffer) = GST_CLOCK_TIME_NONE;
|
GST_BUFFER_PTS (buffer) = GST_CLOCK_TIME_NONE;
|
||||||
}
|
}
|
||||||
|
@ -1910,29 +1928,11 @@ _src_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
|
||||||
GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DISCONT);
|
GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DISCONT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GST_BUFFER_DURATION (buffer) = GST_CLOCK_TIME_NONE;
|
GST_BUFFER_DURATION (buffer) = GST_CLOCK_TIME_NONE;
|
||||||
GST_BUFFER_DTS (buffer) = GST_CLOCK_TIME_NONE;
|
GST_BUFFER_DTS (buffer) = GST_CLOCK_TIME_NONE;
|
||||||
GST_BUFFER_OFFSET (buffer) =
|
GST_BUFFER_OFFSET (buffer) =
|
||||||
gst_mpd_client_get_segment_index (stream->active_stream) - 1;
|
gst_mpd_client_get_segment_index (stream->active_stream) - 1;
|
||||||
|
|
||||||
if (stream->pending_segment) {
|
|
||||||
if (demux->timestamp_offset == -1)
|
|
||||||
demux->timestamp_offset = GST_BUFFER_PTS (buffer);
|
|
||||||
else
|
|
||||||
demux->timestamp_offset =
|
|
||||||
MIN (GST_BUFFER_PTS (buffer), demux->timestamp_offset);
|
|
||||||
|
|
||||||
/* And send a newsegment */
|
|
||||||
gst_pad_push_event (stream->pad, stream->pending_segment);
|
|
||||||
stream->pending_segment = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* make timestamp start from 0 by subtracting the offset */
|
|
||||||
GST_BUFFER_PTS (buffer) -= demux->timestamp_offset;
|
|
||||||
|
|
||||||
stream->position = demux->segment.position = GST_BUFFER_PTS (buffer);
|
|
||||||
|
|
||||||
/* accumulate time and size to get this chunk */
|
/* accumulate time and size to get this chunk */
|
||||||
stream->download_total_time +=
|
stream->download_total_time +=
|
||||||
g_get_monotonic_time () - stream->download_start_time;
|
g_get_monotonic_time () - stream->download_start_time;
|
||||||
|
|
Loading…
Reference in a new issue