summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-08-19 21:33:09 +0300
committerSebastian Dröge <sebastian@centricular.com>2015-08-19 21:33:47 +0300
commit551e7b97f31fc5a0bd7c545b4cd8258d18da512a (patch)
tree3f35c10e89975193f4384a22bfb00f40d16c6356 /tests
parent6a884bf08d21921af5907249a72c9ea26e4fa8ea (diff)
downloadgstreamer-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.c49
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);