basesrc: Only set DTS to segment.start on the first buffer if subclass did not provide PTS

Otherwise we're going to set a rather arbitrary DTS of segment.start (usually
0) for live sources, which confuses synchronization if the source started
capturing at a later time. And it's especially wrong for raw media, for which
we should not set any DTS at all.

https://bugzilla.gnome.org/show_bug.cgi?id=747731
This commit is contained in:
Sebastian Dröge 2015-04-12 13:13:32 +02:00
parent 6409420474
commit 7d3d4503a1

View file

@ -2244,7 +2244,7 @@ gst_base_src_do_sync (GstBaseSrc * basesrc, GstBuffer * buffer)
if (!GST_CLOCK_TIME_IS_VALID (dts)) {
if (do_timestamp) {
dts = running_time;
} else {
} else if (!GST_CLOCK_TIME_IS_VALID (pts)) {
if (GST_CLOCK_TIME_IS_VALID (basesrc->segment.start)) {
dts = basesrc->segment.start;
} else {