mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
dash: handle 0 duration in gst_xml_helper_set_prop_duration
Add dash_mpdparser_check_mpd_client_set_period_to_0 unit test to demonstrate it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8114>
This commit is contained in:
parent
f7d6822589
commit
2a19805f7d
2 changed files with 51 additions and 0 deletions
|
@ -1203,6 +1203,8 @@ gst_xml_helper_set_prop_duration (xmlNode * node, const gchar * name,
|
||||||
GST_LOG ("duration %" G_GUINT64_FORMAT " -> %s", value, text);
|
GST_LOG ("duration %" G_GUINT64_FORMAT " -> %s", value, text);
|
||||||
xmlSetProp (node, (xmlChar *) name, (xmlChar *) text);
|
xmlSetProp (node, (xmlChar *) name, (xmlChar *) text);
|
||||||
g_free (text);
|
g_free (text);
|
||||||
|
} else {
|
||||||
|
xmlSetProp (node, (xmlChar *) name, (xmlChar *) "PT0S");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6520,6 +6520,53 @@ GST_START_TEST (dash_mpdparser_check_mpd_client_set_methods)
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
||||||
|
GST_START_TEST (dash_mpdparser_check_mpd_client_set_period_to_0)
|
||||||
|
{
|
||||||
|
GstMPDClient *mpdclient = NULL;
|
||||||
|
GstMPDPeriodNode *period;
|
||||||
|
gchar *period_id;
|
||||||
|
gchar *new_xml;
|
||||||
|
gint new_xml_size;
|
||||||
|
const gchar *xml = "<?xml version=\"1.0\"?>\n"
|
||||||
|
"<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\" profiles=\"urn:mpeg:dash:profile:isoff-main:2011\" "
|
||||||
|
"schemaLocation=\"TestSchemaLocation\" xmlns:xsi=\"TestNamespaceXSI\" xmlns:ext=\"TestNamespaceEXT\" "
|
||||||
|
"id=\"testId\" type=\"static\" minBufferTime=\"P0Y0M0DT0H0M2.0S\">"
|
||||||
|
"<BaseURL serviceLocation=\"TestServiceLocation\" byteRange=\"TestByteRange\">TestBaseURL</BaseURL>"
|
||||||
|
"<Period id=\"TestId\" start=\"PT0S\" duration=\"P0Y0M0DT0H0M40.0S\" bitstreamSwitching=\"true\"/></MPD>\n";
|
||||||
|
|
||||||
|
mpdclient = gst_mpd_client_new ();
|
||||||
|
gst_mpd_client_set_root_node (mpdclient,
|
||||||
|
"default-namespace", "urn:mpeg:dash:schema:mpd:2011",
|
||||||
|
"profiles", "urn:mpeg:dash:profile:isoff-main:2011",
|
||||||
|
"schema-location", "TestSchemaLocation",
|
||||||
|
"namespace-xsi", "TestNamespaceXSI",
|
||||||
|
"namespace-ext", "TestNamespaceEXT", "id", "testId", NULL);
|
||||||
|
gst_mpd_client_add_baseurl_node (mpdclient,
|
||||||
|
"url", "TestBaseURL",
|
||||||
|
"service-location", "TestServiceLocation",
|
||||||
|
"byte-range", "TestByteRange", NULL);
|
||||||
|
period_id = gst_mpd_client_set_period_node (mpdclient, (gchar *) "TestId", "start", (guint64) 0, // ms
|
||||||
|
"duration", (guint64) 40000, "bitstream-switching", 1, NULL);
|
||||||
|
|
||||||
|
/* Period */
|
||||||
|
period = (GstMPDPeriodNode *) mpdclient->mpd_root_node->Periods->data;
|
||||||
|
|
||||||
|
assert_equals_string (period_id, "TestId");
|
||||||
|
assert_equals_string (period->id, "TestId");
|
||||||
|
assert_equals_int64 (period->start, 0);
|
||||||
|
assert_equals_int64 (period->duration, 40000);
|
||||||
|
assert_equals_int (period->bitstreamSwitching, 1);
|
||||||
|
|
||||||
|
/* XML content */
|
||||||
|
gst_mpd_client_get_xml_content (mpdclient, &new_xml, &new_xml_size);
|
||||||
|
assert_equals_string (xml, new_xml);
|
||||||
|
g_free (new_xml);
|
||||||
|
|
||||||
|
gst_mpd_client_free (mpdclient);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* create a test suite containing all dash testcases
|
* create a test suite containing all dash testcases
|
||||||
*/
|
*/
|
||||||
|
@ -6544,6 +6591,8 @@ dash_suite (void)
|
||||||
|
|
||||||
/* test mpd client set methods */
|
/* test mpd client set methods */
|
||||||
tcase_add_test (tc_simpleMPD, dash_mpdparser_check_mpd_client_set_methods);
|
tcase_add_test (tc_simpleMPD, dash_mpdparser_check_mpd_client_set_methods);
|
||||||
|
tcase_add_test (tc_simpleMPD,
|
||||||
|
dash_mpdparser_check_mpd_client_set_period_to_0);
|
||||||
|
|
||||||
/* tests parsing attributes from each element type */
|
/* tests parsing attributes from each element type */
|
||||||
tcase_add_test (tc_simpleMPD, dash_mpdparser_mpd);
|
tcase_add_test (tc_simpleMPD, dash_mpdparser_mpd);
|
||||||
|
|
Loading…
Reference in a new issue