diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-08-19 21:33:09 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-08-19 21:33:47 +0300 |
commit | 551e7b97f31fc5a0bd7c545b4cd8258d18da512a (patch) | |
tree | 3f35c10e89975193f4384a22bfb00f40d16c6356 /tests | |
parent | 6a884bf08d21921af5907249a72c9ea26e4fa8ea (diff) | |
download | gstreamer-plugins-bad-551e7b97f31fc5a0bd7c545b4cd8258d18da512a.tar.gz |
dashdemux: Handle encoding specified in the <xml> element when dumping nodes
Previous patch did not handle the case where an encoding (e.g. UTF-8) is
specified in the <xml ?> element. Added an extra test for with and without
encoding.
https://bugzilla.gnome.org/show_bug.cgi?id=753813
Diffstat (limited to 'tests')
-rw-r--r-- | tests/check/elements/dash_mpd.c | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c index bbf27aa98..a076d3d14 100644 --- a/tests/check/elements/dash_mpd.c +++ b/tests/check/elements/dash_mpd.c @@ -1281,7 +1281,7 @@ GST_START_TEST (dash_mpdparser_contentProtection_no_value) GstRepresentationBaseType *representationBase; GstDescriptorType *contentProtection; const gchar *xml = - "<?xml version=\"1.0\"?>" + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\"" " profiles=\"urn:mpeg:dash:profile:isoff-main:2011\">" " <Period>" @@ -1310,7 +1310,6 @@ GST_START_TEST (dash_mpdparser_contentProtection_no_value) assert_equals_string (contentProtection->schemeIdUri, "urn:uuid:5e629af5-38da-4063-8977-97ffbd9902d4"); fail_if (contentProtection->value == NULL); - g_print ("%s\n", contentProtection->value); /* We can't do a simple compare of value (which should be an XML dump of the ContentProtection element), because the whitespace formatting from xmlDump might differ between versions of libxml */ @@ -1332,6 +1331,50 @@ GST_START_TEST (dash_mpdparser_contentProtection_no_value) GST_END_TEST; /* + * Test parsing ContentProtection element that has no value attribute + * nor an XML encoding + */ +GST_START_TEST (dash_mpdparser_contentProtection_no_value_no_encoding) +{ + GstPeriodNode *periodNode; + GstAdaptationSetNode *adaptationSet; + GstRepresentationBaseType *representationBase; + GstDescriptorType *contentProtection; + const gchar *xml = + "<?xml version=\"1.0\"?>" + "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\"" + " profiles=\"urn:mpeg:dash:profile:isoff-main:2011\">" + " <Period>" + " <AdaptationSet>" + " <ContentProtection schemeIdUri=\"urn:mpeg:dash:mp4protection:2011\" value=\"cenc\"/>" + " <ContentProtection xmlns:mas=\"urn:marlin:mas:1-0:services:schemas:mpd\" schemeIdUri=\"urn:uuid:5e629af5-38da-4063-8977-97ffbd9902d4\">" + " <mas:MarlinContentIds>" + " <mas:MarlinContentId>urn:marlin:kid:02020202020202020202020202020202</mas:MarlinContentId>" + " </mas:MarlinContentIds>" + " </ContentProtection>" "</AdaptationSet></Period></MPD>"; + + gboolean ret; + GstMpdClient *mpdclient = gst_mpd_client_new (); + + ret = gst_mpd_parse (mpdclient, xml, (gint) strlen (xml)); + assert_equals_int (ret, TRUE); + + periodNode = (GstPeriodNode *) mpdclient->mpd_node->Periods->data; + adaptationSet = (GstAdaptationSetNode *) periodNode->AdaptationSets->data; + representationBase = adaptationSet->RepresentationBase; + assert_equals_int (g_list_length (representationBase->ContentProtection), 2); + contentProtection = + (GstDescriptorType *) g_list_nth (representationBase->ContentProtection, + 1)->data; + assert_equals_string (contentProtection->schemeIdUri, + "urn:uuid:5e629af5-38da-4063-8977-97ffbd9902d4"); + fail_if (contentProtection->value == NULL); + gst_mpd_client_free (mpdclient); +} + +GST_END_TEST; + +/* * Test parsing Period AdaptationSet Accessibility attributes * */ @@ -4406,6 +4449,8 @@ dash_suite (void) dash_mpdparser_period_adaptationSet_representationBase_contentProtection); tcase_add_test (tc_simpleMPD, dash_mpdparser_contentProtection_no_value); tcase_add_test (tc_simpleMPD, + dash_mpdparser_contentProtection_no_value_no_encoding); + tcase_add_test (tc_simpleMPD, dash_mpdparser_period_adaptationSet_accessibility); tcase_add_test (tc_simpleMPD, dash_mpdparser_period_adaptationSet_role); tcase_add_test (tc_simpleMPD, dash_mpdparser_period_adaptationSet_rating); |