From d27b5367d9c9febb179aed0adf8b1cdf5b4f6434 Mon Sep 17 00:00:00 2001 From: WeiChungChang Date: Mon, 14 Mar 2016 11:16:58 +0800 Subject: tests: dash: Create DASH MPD's segment inheritance check flow https://bugzilla.gnome.org/show_bug.cgi?id=763454 --- tests/check/elements/dash_mpd.c | 80 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c index d074862e2..ab8865362 100644 --- a/tests/check/elements/dash_mpd.c +++ b/tests/check/elements/dash_mpd.c @@ -799,6 +799,84 @@ GST_START_TEST (dash_mpdparser_period_segmentList_segmentURL) GST_END_TEST; +/* + * Test the inheritance from Period node to Representation node of SegmentTemplate attributes + * + */ +GST_START_TEST (dash_mpdparser_inherit_segmentTemplate_from_period) +{ + GstPeriodNode *periodNode; + GstAdaptationSetNode *adaptationSet; + GstRepresentationNode *representation; + + GstSegmentTemplateNode *segmentTemplate = NULL; + GstMultSegmentBaseType *multSegBaseType; + GstSegmentBaseType *segBaseType; + GstSegmentTimelineNode *segmentTimeline; + GstSNode *sNode; + + const gchar *xml = + "" + "" + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " "; + + GstMpdClient *mpdclient = gst_mpd_client_new (); + + gst_mpd_parse (mpdclient, xml, (gint) strlen (xml)); + + periodNode = (GstPeriodNode *) mpdclient->mpd_node->Periods->data; + adaptationSet = (GstAdaptationSetNode *) periodNode->AdaptationSets->data; + representation = (GstRepresentationNode *) + adaptationSet->Representations->data; + + if (representation->SegmentTemplate != NULL) { + segmentTemplate = representation->SegmentTemplate; + } else if (adaptationSet->SegmentTemplate != NULL) { + segmentTemplate = adaptationSet->SegmentTemplate; + } else if (periodNode->SegmentTemplate != NULL) { + segmentTemplate = periodNode->SegmentTemplate; + } + + multSegBaseType = segmentTemplate->MultSegBaseType; + segBaseType = multSegBaseType->SegBaseType; + segmentTimeline = (GstSegmentTimelineNode *) multSegBaseType->SegmentTimeline; + sNode = (GstSNode *) g_queue_peek_head (&segmentTimeline->S); + + /*for this test case, we should insure that the segmentTemplate's media & initialization which should be inherited from period node should not be NULL*/ + assert_equals_string (segmentTemplate->media, "TestMedia"); + assert_equals_string (segmentTemplate->initialization, "TestInitialization"); + assert_equals_uint64 (segBaseType->timescale, 100); + + assert_equals_uint64 (sNode->t, 1); + assert_equals_uint64 (sNode->d, 2); + assert_equals_uint64 (sNode->r, 3); + + gst_mpd_client_free (mpdclient); +} + +GST_END_TEST; + + /* * Test parsing Period SegmentTemplate attributes * @@ -5732,6 +5810,8 @@ dash_suite (void) dash_mpdparser_period_adaptationSet_segmentTemplate); tcase_add_test (tc_simpleMPD, dash_mpdparser_period_adaptationSet_segmentTemplate_inherit); + tcase_add_test (tc_simpleMPD, + dash_mpdparser_inherit_segmentTemplate_from_period); tcase_add_test (tc_simpleMPD, dash_mpdparser_period_adaptationSet_representation); tcase_add_test (tc_simpleMPD, -- cgit v1.2.3