mpdparser: tests: added unit test for getting segment availability when segment timeline is used

https://bugzilla.gnome.org/show_bug.cgi?id=757655
This commit is contained in:
Florin Apostol 2015-11-19 15:30:34 +00:00 committed by Thiago Santos
parent 13f66a68ed
commit 25c89b12d6

View file

@ -4528,6 +4528,7 @@ GST_START_TEST (dash_mpdparser_segment_timeline)
GstClockTime expectedDuration;
GstClockTime expectedTimestamp;
GstFlowReturn flow;
GstDateTime *segmentAvailability;
const gchar *xml =
"<?xml version=\"1.0\"?>"
@ -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);
}