dashdemux: Subtract the period start time from the presentation offset
authorSebastian Dröge <sebastian@centricular.com>
Thu, 25 Jun 2015 21:24:50 +0000 (23:24 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 25 Jun 2015 21:36:10 +0000 (23:36 +0200)
We're interested in the offset between the period start timestamp and the
actual media timestamp so that we can properly correct for it. The absolute
presentation offset to timestamp 0 is useless as the only thing we really
care about is the offset between the current fragment timestamp and the
media timestamp.

ext/dash/gstmpdparser.c

index d5f9956..e7420ec 100644 (file)
@@ -3761,13 +3761,17 @@ gst_mpd_parser_get_stream_presentation_offset (GstMpdClient * client,
     guint stream_idx)
 {
   GstActiveStream *stream = NULL;
+  GstStreamPeriod *stream_period = gst_mpdparser_get_stream_period (client);
 
   g_return_val_if_fail (client != NULL, FALSE);
   g_return_val_if_fail (client->active_streams != NULL, FALSE);
   stream = g_list_nth_data (client->active_streams, stream_idx);
   g_return_val_if_fail (stream != NULL, FALSE);
 
-  return stream->presentationTimeOffset;
+  if (stream->presentationTimeOffset > stream_period->start)
+    return stream->presentationTimeOffset - stream_period->start;
+  else
+    return 0;
 }
 
 gboolean