From 25c89b12d6decc9599d1a90b4a9a59685b41b7cd Mon Sep 17 00:00:00 2001 From: Florin Apostol Date: Thu, 19 Nov 2015 15:30:34 +0000 Subject: [PATCH] mpdparser: tests: added unit test for getting segment availability when segment timeline is used https://bugzilla.gnome.org/show_bug.cgi?id=757655 --- tests/check/elements/dash_mpd.c | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c index ba96b92..9733867 100644 --- a/tests/check/elements/dash_mpd.c +++ b/tests/check/elements/dash_mpd.c @@ -4528,6 +4528,7 @@ GST_START_TEST (dash_mpdparser_segment_timeline) GstClockTime expectedDuration; GstClockTime expectedTimestamp; GstFlowReturn flow; + GstDateTime *segmentAvailability; const gchar *xml = "" @@ -4594,6 +4595,22 @@ GST_START_TEST (dash_mpdparser_segment_timeline) assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND); gst_media_fragment_info_clear (&fragment); + /* first segment starts at 3s and has a duration of 2s. + * We also add period start time (10s) so we expect a segment availability + * start time of 15s + */ + segmentAvailability = + gst_mpd_client_get_next_segment_availability_end_time (mpdclient, + activeStream); + fail_unless (segmentAvailability != NULL); + 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), 0); + assert_equals_int (gst_date_time_get_second (segmentAvailability), 15); + gst_date_time_unref (segmentAvailability); + /* advance to next segment */ flow = gst_mpd_client_advance_segment (mpdclient, activeStream, TRUE); assert_equals_int (flow, GST_FLOW_OK); @@ -4612,6 +4629,24 @@ GST_START_TEST (dash_mpdparser_segment_timeline) assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND); gst_media_fragment_info_clear (&fragment); + /* first segment starts at 3s and has a duration of 2s. + * Second segment starts when the first ends (5s) and has a duration of 2s, + * so it ends at 7s. + * We also add period start time (10s) so we expect a segment availability + * start time of 17s + */ + segmentAvailability = + 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); + 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), 0); + assert_equals_int (gst_date_time_get_second (segmentAvailability), 17); + gst_date_time_unref (segmentAvailability); + /* advance to next segment */ flow = gst_mpd_client_advance_segment (mpdclient, activeStream, TRUE); assert_equals_int (flow, GST_FLOW_OK); @@ -4629,6 +4664,22 @@ GST_START_TEST (dash_mpdparser_segment_timeline) assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND); gst_media_fragment_info_clear (&fragment); + /* Third segment starts at 10s and has a duration of 3s so it ends at 13s. + * We also add period start time (10s) so we expect a segment availability + * start time of 23s + */ + segmentAvailability = + 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); + 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), 0); + assert_equals_int (gst_date_time_get_second (segmentAvailability), 23); + gst_date_time_unref (segmentAvailability); + gst_mpd_client_free (mpdclient); } -- 2.7.4