diff --git a/ext/dash/gstdashdemux.c b/ext/dash/gstdashdemux.c index 7267ae08b7..0be653d4d7 100644 --- a/ext/dash/gstdashdemux.c +++ b/ext/dash/gstdashdemux.c @@ -1506,20 +1506,21 @@ gst_dash_demux_stream_get_fragment_waiting_time (GstAdaptiveDemuxStream * { GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (stream->demux); GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream; - GstDateTime *seg_end_time; + GstDateTime *segmentAvailability; GstActiveStream *active_stream = dashstream->active_stream; - seg_end_time = - gst_mpd_client_get_next_segment_availability_end_time (dashdemux->client, - active_stream); + segmentAvailability = + gst_mpd_client_get_next_segment_availability_start_time + (dashdemux->client, active_stream); - if (seg_end_time) { + if (segmentAvailability) { gint64 diff; GstDateTime *cur_time; cur_time = gst_date_time_new_now_utc (); - diff = gst_mpd_client_calculate_time_difference (cur_time, seg_end_time); - gst_date_time_unref (seg_end_time); + diff = gst_mpd_client_calculate_time_difference (cur_time, + segmentAvailability); + gst_date_time_unref (segmentAvailability); gst_date_time_unref (cur_time); /* subtract the server's clock drift, so that if the server's time is behind our idea of UTC, we need to sleep for longer diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c index 21c00cb585..df96c57f34 100644 --- a/ext/dash/gstmpdparser.c +++ b/ext/dash/gstmpdparser.c @@ -5794,7 +5794,7 @@ gst_mpdparser_get_list_and_nb_of_audio_language (GstMpdClient * client, GstDateTime * -gst_mpd_client_get_next_segment_availability_end_time (GstMpdClient * client, +gst_mpd_client_get_next_segment_availability_start_time (GstMpdClient * client, GstActiveStream * stream) { GstDateTime *availability_start_time, *rv; diff --git a/ext/dash/gstmpdparser.h b/ext/dash/gstmpdparser.h index 91f91809d6..1b303aaabd 100644 --- a/ext/dash/gstmpdparser.h +++ b/ext/dash/gstmpdparser.h @@ -579,7 +579,7 @@ GList * gst_mpd_client_get_adaptation_sets (GstMpdClient * client); gboolean gst_mpd_client_has_next_segment (GstMpdClient * client, GstActiveStream * stream, gboolean forward); GstFlowReturn gst_mpd_client_advance_segment (GstMpdClient * client, GstActiveStream * stream, gboolean forward); void gst_mpd_client_seek_to_first_segment (GstMpdClient * client); -GstDateTime *gst_mpd_client_get_next_segment_availability_end_time (GstMpdClient * client, GstActiveStream * stream); +GstDateTime *gst_mpd_client_get_next_segment_availability_start_time (GstMpdClient * client, GstActiveStream * stream); /* Get audio/video stream parameters (caps, width, height, rate, number of channels) */ GstCaps * gst_mpd_client_get_stream_caps (GstActiveStream * stream); diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c index 9733867490..348b65cf8e 100644 --- a/tests/check/elements/dash_mpd.c +++ b/tests/check/elements/dash_mpd.c @@ -3888,7 +3888,7 @@ GST_START_TEST (dash_mpdparser_segments) gboolean hasNextSegment; GstActiveStream *activeStream; GstFlowReturn flow; - GstDateTime *segmentEndTime; + GstDateTime *segmentAvailability; GstDateTime *gst_time; GDateTime *g_time; @@ -3985,19 +3985,22 @@ GST_START_TEST (dash_mpdparser_segments) /* each segment has a duration of 0 hours, 0 min 45 seconds * segment index is 1. - * End time is at the end of segment 1, so 2 * segment_duration = 2 * 45s + * Start time is at the beginning of segment 1, so 1 * segment_duration = 1 * 45s + * Availability start time is at the end of the segment, so we add duration (45s) * We also add period start time (10s) + * So, availability start time for segment 1 is: 10 (period start) + + * 45 (segment start) + 45 (duration) = 1'40s */ - segmentEndTime = - gst_mpd_client_get_next_segment_availability_end_time (mpdclient, + segmentAvailability = + gst_mpd_client_get_next_segment_availability_start_time (mpdclient, activeStream); - assert_equals_int (gst_date_time_get_year (segmentEndTime), 2015); - assert_equals_int (gst_date_time_get_month (segmentEndTime), 3); - assert_equals_int (gst_date_time_get_day (segmentEndTime), 24); - assert_equals_int (gst_date_time_get_hour (segmentEndTime), 0); - assert_equals_int (gst_date_time_get_minute (segmentEndTime), 1); - assert_equals_int (gst_date_time_get_second (segmentEndTime), 40); - gst_date_time_unref (segmentEndTime); + assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015); + assert_equals_int (gst_date_time_get_month (segmentAvailability), 3); + assert_equals_int (gst_date_time_get_day (segmentAvailability), 24); + assert_equals_int (gst_date_time_get_hour (segmentAvailability), 0); + assert_equals_int (gst_date_time_get_minute (segmentAvailability), 1); + assert_equals_int (gst_date_time_get_second (segmentAvailability), 40); + gst_date_time_unref (segmentAvailability); /* seek to time */ gst_time = gst_date_time_new_from_iso8601_string ("2015-03-24T0:0:20Z"); @@ -4600,7 +4603,7 @@ GST_START_TEST (dash_mpdparser_segment_timeline) * start time of 15s */ segmentAvailability = - gst_mpd_client_get_next_segment_availability_end_time (mpdclient, + gst_mpd_client_get_next_segment_availability_start_time (mpdclient, activeStream); fail_unless (segmentAvailability != NULL); assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015);