mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
dash: fixing build warnings
Also running through gst-indent
This commit is contained in:
parent
6acf2fba8f
commit
a1447a8ede
4 changed files with 121 additions and 104 deletions
|
@ -452,7 +452,7 @@ gst_dash_demux_change_state (GstElement * element, GstStateChange transition)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
gst_dash_demux_clear_queue (GstDashDemux * demux)
|
||||
{
|
||||
while (!g_queue_is_empty (demux->queue)) {
|
||||
|
@ -546,7 +546,8 @@ gst_dash_demux_src_event (GstPad * pad, GstEvent * event)
|
|||
chunk = list->data;
|
||||
current_pos = chunk->start_time;
|
||||
//current_sequence = chunk->number;
|
||||
GST_WARNING_OBJECT (demux, "%i <= %i (%i)", current_pos, target_pos, chunk->duration);
|
||||
GST_WARNING_OBJECT (demux, "%i <= %i (%i)", current_pos, target_pos,
|
||||
chunk->duration);
|
||||
if (current_pos <= target_pos
|
||||
&& target_pos < current_pos + chunk->duration) {
|
||||
break;
|
||||
|
@ -645,9 +646,9 @@ gst_dash_demux_setup_all_streams (GstDashDemux * demux)
|
|||
|
||||
for (i = 0; i < nb_audio; i++) {
|
||||
lang = (gchar *) g_list_nth_data (listLang, i);
|
||||
GST_INFO ("nb adaptation set: %i", gst_mpdparser_get_nb_adaptationSet (demux->client));
|
||||
if (!gst_mpd_client_setup_streaming (demux->client, GST_STREAM_AUDIO,
|
||||
lang))
|
||||
GST_INFO ("nb adaptation set: %i",
|
||||
gst_mpdparser_get_nb_adaptationSet (demux->client));
|
||||
if (!gst_mpd_client_setup_streaming (demux->client, GST_STREAM_AUDIO, lang))
|
||||
GST_INFO_OBJECT (demux, "No audio adaptation set found");
|
||||
|
||||
if (gst_mpdparser_get_nb_adaptationSet (demux->client) > nb_audio)
|
||||
|
@ -792,8 +793,8 @@ gst_dash_demux_src_query (GstPad * pad, GstQuery * query)
|
|||
gint64 stop = -1;
|
||||
|
||||
gst_query_parse_seeking (query, &fmt, NULL, &start, &end);
|
||||
GST_DEBUG_OBJECT (dashdemux, "Received GST_QUERY_SEEKING with format %d - %i %i",
|
||||
fmt, start, end);
|
||||
GST_DEBUG_OBJECT (dashdemux,
|
||||
"Received GST_QUERY_SEEKING with format %d - %i %i", fmt, start, end);
|
||||
if (fmt == GST_FORMAT_TIME) {
|
||||
GstClockTime duration;
|
||||
|
||||
|
@ -923,20 +924,21 @@ static gboolean
|
|||
needs_pad_switch (GstDashDemux * demux, GList * fragment)
|
||||
{
|
||||
|
||||
GstCaps *srccaps = NULL;
|
||||
gboolean switch_pad = FALSE;
|
||||
guint i = 0;
|
||||
|
||||
while (i < g_list_length (fragment)) {
|
||||
GstFragment *newFragment = g_list_nth_data (fragment, i);
|
||||
if (newFragment == NULL) {
|
||||
continue;
|
||||
}
|
||||
GstCaps *srccaps = NULL;
|
||||
demux->output_caps[i] = gst_fragment_get_caps (newFragment);
|
||||
if (G_LIKELY (demux->srcpad[i]))
|
||||
srccaps = gst_pad_get_negotiated_caps (demux->srcpad[i]);
|
||||
if (G_UNLIKELY (!srccaps
|
||||
|| (!gst_caps_is_equal_fixed (demux->output_caps[i], srccaps)))
|
||||
|| demux->need_segment) {
|
||||
|| demux->need_segment) {
|
||||
switch_pad = TRUE;
|
||||
}
|
||||
if (G_LIKELY (srccaps))
|
||||
|
@ -974,6 +976,8 @@ gst_dash_demux_stream_loop (GstDashDemux * demux)
|
|||
GstBufferList *buffer_list;
|
||||
guint nb_adaptation_set = 0;
|
||||
GstActiveStream *stream;
|
||||
gboolean switch_pad;
|
||||
guint i = 0;
|
||||
|
||||
/* Wait until the next scheduled push downstream */
|
||||
if (g_cond_timed_wait (GST_TASK_GET_COND (demux->stream_task),
|
||||
|
@ -994,7 +998,8 @@ gst_dash_demux_stream_loop (GstDashDemux * demux)
|
|||
demux->min_buffering_time) {
|
||||
/* Warn we are below our threshold: this will eventually pause
|
||||
* the pipeline */
|
||||
GST_WARNING ("Below the threshold: this will eventually pause the pipeline");
|
||||
GST_WARNING
|
||||
("Below the threshold: this will eventually pause the pipeline");
|
||||
gst_element_post_message (GST_ELEMENT (demux),
|
||||
gst_message_new_buffering (GST_OBJECT (demux),
|
||||
100 * gst_dash_demux_get_buffering_ratio (demux)));
|
||||
|
@ -1003,13 +1008,12 @@ gst_dash_demux_stream_loop (GstDashDemux * demux)
|
|||
listfragment = g_queue_pop_head (demux->queue);
|
||||
nb_adaptation_set = g_list_length (listfragment);
|
||||
/* Figure out if we need to create/switch pads */
|
||||
gboolean switch_pad = needs_pad_switch (demux, listfragment);
|
||||
switch_pad = needs_pad_switch (demux, listfragment);
|
||||
if (switch_pad) {
|
||||
GST_WARNING ("Switching pads");
|
||||
switch_pads (demux, nb_adaptation_set);
|
||||
demux->need_segment = TRUE;
|
||||
}
|
||||
guint i = 0;
|
||||
for (i = 0; i < nb_adaptation_set; i++) {
|
||||
GstFragment *fragment = g_list_nth_data (listfragment, i);
|
||||
stream = gst_mpdparser_get_active_stream_by_index (demux->client, i);
|
||||
|
@ -1023,7 +1027,8 @@ gst_dash_demux_stream_loop (GstDashDemux * demux)
|
|||
start, GST_CLOCK_TIME_NONE, start));
|
||||
}
|
||||
|
||||
GST_DEBUG_OBJECT (demux, "Pushing fragment #%d (stream %i)", fragment->index, i);
|
||||
GST_DEBUG_OBJECT (demux, "Pushing fragment #%d (stream %i)",
|
||||
fragment->index, i);
|
||||
buffer_list = gst_fragment_get_buffer_list (fragment);
|
||||
g_object_unref (fragment);
|
||||
ret = gst_pad_push_list (demux->srcpad[i], buffer_list);
|
||||
|
@ -1039,7 +1044,7 @@ gst_dash_demux_stream_loop (GstDashDemux * demux)
|
|||
g_get_current_time (&demux->next_push);
|
||||
g_time_val_add (&demux->next_push,
|
||||
(gst_mpd_client_get_next_fragment_duration (demux->client) -
|
||||
demux->last_position_shift) / GST_SECOND * G_USEC_PER_SEC);
|
||||
demux->last_position_shift) / GST_SECOND * G_USEC_PER_SEC);
|
||||
GST_DEBUG_OBJECT (demux, "Next push scheduled at %s",
|
||||
g_time_val_to_iso8601 (&demux->next_push));
|
||||
demux->last_position_shift = 0;
|
||||
|
@ -1056,7 +1061,6 @@ quit:
|
|||
end_of_manifest:
|
||||
{
|
||||
GST_INFO_OBJECT (demux, "Reached end of manifest, sending EOS");
|
||||
guint i = 0;
|
||||
for (i = 0; i < gst_mpdparser_get_nb_active_stream (demux->client); i++) {
|
||||
gst_pad_push_event (demux->srcpad[i], gst_event_new_eos ());
|
||||
}
|
||||
|
@ -1086,11 +1090,12 @@ pause_streaming:
|
|||
static void
|
||||
gst_dash_demux_reset (GstDashDemux * demux, gboolean dispose)
|
||||
{
|
||||
guint i = 0;
|
||||
|
||||
demux->end_of_period = FALSE;
|
||||
demux->end_of_manifest = FALSE;
|
||||
demux->cancelled = FALSE;
|
||||
|
||||
guint i = 0;
|
||||
for (i = 0; i < MAX_LANGUAGES; i++)
|
||||
if (demux->input_caps[i]) {
|
||||
gst_caps_unref (demux->input_caps[i]);
|
||||
|
@ -1211,6 +1216,7 @@ gst_dash_demux_merge_buffer_list (GstFragment * fragment)
|
|||
void
|
||||
gst_dash_demux_download_loop (GstDashDemux * demux)
|
||||
{
|
||||
GstClockTime target_buffering_time;
|
||||
GstClock *clock = gst_element_get_clock (GST_ELEMENT (demux));
|
||||
gint64 update_period = demux->client->mpd_node->minimumUpdatePeriod;
|
||||
|
||||
|
@ -1302,7 +1308,7 @@ gst_dash_demux_download_loop (GstDashDemux * demux)
|
|||
* by the duration of a fragment, but SHOULD NOT exceed maximum
|
||||
* buffering time */
|
||||
GST_DEBUG_OBJECT (demux, "download loop %i", demux->end_of_manifest);
|
||||
GstClockTime target_buffering_time =
|
||||
target_buffering_time =
|
||||
demux->min_buffering_time +
|
||||
gst_mpd_client_get_next_fragment_duration (demux->client);
|
||||
if (demux->max_buffering_time > target_buffering_time)
|
||||
|
@ -1512,6 +1518,7 @@ static GstFragment *
|
|||
gst_dash_demux_prepend_header (GstDashDemux * demux,
|
||||
GstFragment * frag, GstFragment * header)
|
||||
{
|
||||
GstBufferList *list;
|
||||
GstFragment *res = gst_fragment_new ();
|
||||
res->name = g_strdup (frag->name);
|
||||
res->download_start_time = frag->download_start_time;
|
||||
|
@ -1521,7 +1528,6 @@ gst_dash_demux_prepend_header (GstDashDemux * demux,
|
|||
res->index = frag->index;
|
||||
res->discontinuous = frag->discontinuous;
|
||||
|
||||
GstBufferList *list;
|
||||
list = gst_fragment_get_buffer_list (header);
|
||||
gst_buffer_list_foreach (list, gst_dash_demux_add_buffer_cb, res);
|
||||
gst_buffer_list_unref (list);
|
||||
|
@ -1678,16 +1684,19 @@ gst_dash_demux_get_next_fragment_set (GstDashDemux * demux)
|
|||
GTimeVal start;
|
||||
GstClockTime diff;
|
||||
guint64 size_buffer = 0;
|
||||
gboolean need_header;
|
||||
guint stream_idx = 0;
|
||||
|
||||
g_get_current_time (&start);
|
||||
/* Figure out if we will need to switch pads, thus requiring a new
|
||||
* header to initialize the new decoding chain
|
||||
* FIXME: redundant with needs_pad_switch */
|
||||
gboolean need_header = need_add_header (demux);
|
||||
guint stream_idx = 0;
|
||||
need_header = need_add_header (demux);
|
||||
fragment_set = NULL;
|
||||
/* Get the fragment corresponding to each stream index */
|
||||
while (stream_idx < gst_mpdparser_get_nb_active_stream (demux->client)) {
|
||||
GstCaps *caps;
|
||||
|
||||
if (!gst_mpd_client_get_next_fragment (demux->client,
|
||||
stream_idx, &discont, &next_fragment_uri, &duration, ×tamp)) {
|
||||
GST_INFO_OBJECT (demux, "This Period doesn't contain more fragments");
|
||||
|
@ -1715,7 +1724,7 @@ gst_dash_demux_get_next_fragment_set (GstDashDemux * demux)
|
|||
|
||||
download->index = gst_mpd_client_get_segment_index (stream) - 1;
|
||||
|
||||
GstCaps *caps = gst_dash_demux_get_input_caps (demux, stream);
|
||||
caps = gst_dash_demux_get_input_caps (demux, stream);
|
||||
|
||||
if (need_header) {
|
||||
/* Store the new input caps for that stream */
|
||||
|
|
|
@ -24,7 +24,11 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define GLIB_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
#include <string.h>
|
||||
#include <libxml/parser.h>
|
||||
#include <libxml/tree.h>
|
||||
#include "gstfragmented.h"
|
||||
#include "gstmpdparser.h"
|
||||
|
||||
|
@ -109,7 +113,7 @@ static gint convert_to_millisecs (gint decimals, gint pos);
|
|||
static int strncmp_ext (const char *s1, const char *s2);
|
||||
static GstStreamPeriod *gst_mpdparser_get_stream_period (GstMpdClient * client);
|
||||
static gchar *gst_mpdparser_parse_baseURL (GstMpdClient * client,
|
||||
GstActiveStream *stream);
|
||||
GstActiveStream * stream);
|
||||
static gchar *gst_mpdparser_get_segmentURL_for_range (gchar * url,
|
||||
GstRange * range);
|
||||
static gchar *gst_mpdparser_get_mediaURL (GstActiveStream * stream,
|
||||
|
@ -128,13 +132,13 @@ static void gst_mpd_client_set_segment_index (GstActiveStream * stream,
|
|||
|
||||
/* Adaptation Set */
|
||||
static GstAdaptationSetNode
|
||||
*gst_mpdparser_get_first_adapt_set_with_mimeType (GList * AdaptationSets,
|
||||
* gst_mpdparser_get_first_adapt_set_with_mimeType (GList * AdaptationSets,
|
||||
const gchar * mimeType);
|
||||
static GstAdaptationSetNode
|
||||
*gst_mpdparser_get_adapt_set_with_mimeType_and_idx (GList * AdaptationSets,
|
||||
* gst_mpdparser_get_adapt_set_with_mimeType_and_idx (GList * AdaptationSets,
|
||||
const gchar * mimeType, gint idx);
|
||||
static GstAdaptationSetNode
|
||||
*gst_mpdparser_get_first_adapt_set_with_mimeType_and_lang (GList *
|
||||
* gst_mpdparser_get_first_adapt_set_with_mimeType_and_lang (GList *
|
||||
AdaptationSets, const gchar * mimeType, const gchar * lang);
|
||||
|
||||
/* Representation */
|
||||
|
@ -144,7 +148,7 @@ static GstRepresentationNode *gst_mpdparser_get_lowest_representation (GList *
|
|||
static GstRepresentationNode *gst_mpdparser_get_highest_representation (GList *
|
||||
Representations);
|
||||
static GstRepresentationNode
|
||||
*gst_mpdparser_get_representation_with_max_bandwidth (GList *
|
||||
* gst_mpdparser_get_representation_with_max_bandwidth (GList *
|
||||
Representations, gint max_bandwidth);
|
||||
#endif
|
||||
static GstSegmentBaseType *gst_mpdparser_get_segment_base (GstPeriodNode *
|
||||
|
@ -409,13 +413,13 @@ gst_mpdparser_get_xml_prop_range (xmlNode * a_node, const gchar * property)
|
|||
}
|
||||
/* read first_byte_pos */
|
||||
if (pos != 0) {
|
||||
if (sscanf (str, "%llu", &first_byte_pos) != 1) {
|
||||
if (sscanf (str, "%" G_GUINT64_FORMAT, &first_byte_pos) != 1) {
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
/* read last_byte_pos */
|
||||
if (pos < (len - 1)) {
|
||||
if (sscanf (str + pos + 1, "%llu", &last_byte_pos) != 1) {
|
||||
if (sscanf (str + pos + 1, "%" G_GUINT64_FORMAT, &last_byte_pos) != 1) {
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
@ -955,17 +959,17 @@ gst_mpdparser_parse_content_component_node (GList ** list, xmlNode * a_node)
|
|||
for (cur_node = a_node->children; cur_node; cur_node = cur_node->next) {
|
||||
if (cur_node->type == XML_ELEMENT_NODE) {
|
||||
if (xmlStrcmp (cur_node->name, (xmlChar *) "Accessibility") == 0) {
|
||||
gst_mpdparser_parse_descriptor_type_node (&new_content_component->
|
||||
Accessibility, cur_node);
|
||||
gst_mpdparser_parse_descriptor_type_node
|
||||
(&new_content_component->Accessibility, cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name, (xmlChar *) "Role") == 0) {
|
||||
gst_mpdparser_parse_descriptor_type_node (&new_content_component->Role,
|
||||
cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name, (xmlChar *) "Rating") == 0) {
|
||||
gst_mpdparser_parse_descriptor_type_node (&new_content_component->
|
||||
Rating, cur_node);
|
||||
gst_mpdparser_parse_descriptor_type_node
|
||||
(&new_content_component->Rating, cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name, (xmlChar *) "Viewpoint") == 0) {
|
||||
gst_mpdparser_parse_descriptor_type_node (&new_content_component->
|
||||
Viewpoint, cur_node);
|
||||
gst_mpdparser_parse_descriptor_type_node
|
||||
(&new_content_component->Viewpoint, cur_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1161,12 +1165,12 @@ gst_mpdparser_parse_mult_seg_base_type_ext (GstMultSegmentBaseType ** pointer,
|
|||
for (cur_node = a_node->children; cur_node; cur_node = cur_node->next) {
|
||||
if (cur_node->type == XML_ELEMENT_NODE) {
|
||||
if (xmlStrcmp (cur_node->name, (xmlChar *) "SegmentTimeline") == 0) {
|
||||
gst_mpdparser_parse_segment_timeline_node (&mult_seg_base_type->
|
||||
SegmentTimeline, cur_node);
|
||||
gst_mpdparser_parse_segment_timeline_node
|
||||
(&mult_seg_base_type->SegmentTimeline, cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name,
|
||||
(xmlChar *) "BitstreamSwitching") == 0) {
|
||||
gst_mpdparser_parse_url_type_node (&mult_seg_base_type->
|
||||
BitstreamSwitching, cur_node);
|
||||
gst_mpdparser_parse_url_type_node
|
||||
(&mult_seg_base_type->BitstreamSwitching, cur_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1187,8 +1191,8 @@ gst_mpdparser_parse_segment_list_node (GstSegmentListNode ** pointer,
|
|||
}
|
||||
|
||||
GST_LOG ("extension of SegmentList node:");
|
||||
gst_mpdparser_parse_mult_seg_base_type_ext (&new_segment_list->
|
||||
MultSegBaseType, a_node);
|
||||
gst_mpdparser_parse_mult_seg_base_type_ext
|
||||
(&new_segment_list->MultSegBaseType, a_node);
|
||||
|
||||
/* explore children nodes */
|
||||
for (cur_node = a_node->children; cur_node; cur_node = cur_node->next) {
|
||||
|
@ -1248,16 +1252,16 @@ gst_mpdparser_parse_representation_base_type (GstRepresentationBaseType **
|
|||
for (cur_node = a_node->children; cur_node; cur_node = cur_node->next) {
|
||||
if (cur_node->type == XML_ELEMENT_NODE) {
|
||||
if (xmlStrcmp (cur_node->name, (xmlChar *) "FramePacking") == 0) {
|
||||
gst_mpdparser_parse_descriptor_type_node (&representation_base->
|
||||
FramePacking, cur_node);
|
||||
gst_mpdparser_parse_descriptor_type_node
|
||||
(&representation_base->FramePacking, cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name,
|
||||
(xmlChar *) "AudioChannelConfiguration") == 0) {
|
||||
gst_mpdparser_parse_descriptor_type_node (&representation_base->
|
||||
AudioChannelConfiguration, cur_node);
|
||||
gst_mpdparser_parse_descriptor_type_node
|
||||
(&representation_base->AudioChannelConfiguration, cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name,
|
||||
(xmlChar *) "ContentProtection") == 0) {
|
||||
gst_mpdparser_parse_descriptor_type_node (&representation_base->
|
||||
ContentProtection, cur_node);
|
||||
gst_mpdparser_parse_descriptor_type_node
|
||||
(&representation_base->ContentProtection, cur_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1289,8 +1293,8 @@ gst_mpdparser_parse_representation_node (GList ** list, xmlNode * a_node)
|
|||
"mediaStreamStructureId");
|
||||
|
||||
/* RepresentationBase extension */
|
||||
gst_mpdparser_parse_representation_base_type (&new_representation->
|
||||
RepresentationBase, a_node);
|
||||
gst_mpdparser_parse_representation_base_type
|
||||
(&new_representation->RepresentationBase, a_node);
|
||||
|
||||
/* explore children nodes */
|
||||
for (cur_node = a_node->children; cur_node; cur_node = cur_node->next) {
|
||||
|
@ -1299,8 +1303,8 @@ gst_mpdparser_parse_representation_node (GList ** list, xmlNode * a_node)
|
|||
gst_mpdparser_parse_seg_base_type_ext (&new_representation->SegmentBase,
|
||||
cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name, (xmlChar *) "SegmentTemplate") == 0) {
|
||||
gst_mpdparser_parse_segment_template_node (&new_representation->
|
||||
SegmentTemplate, cur_node);
|
||||
gst_mpdparser_parse_segment_template_node
|
||||
(&new_representation->SegmentTemplate, cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name, (xmlChar *) "SegmentList") == 0) {
|
||||
gst_mpdparser_parse_segment_list_node (&new_representation->SegmentList,
|
||||
cur_node);
|
||||
|
@ -1309,8 +1313,8 @@ gst_mpdparser_parse_representation_node (GList ** list, xmlNode * a_node)
|
|||
cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name,
|
||||
(xmlChar *) "SubRepresentation") == 0) {
|
||||
gst_mpdparser_parse_subrepresentation_node (&new_representation->
|
||||
SubRepresentations, cur_node);
|
||||
gst_mpdparser_parse_subrepresentation_node
|
||||
(&new_representation->SubRepresentations, cur_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1364,8 +1368,8 @@ gst_mpdparser_parse_adaptation_set_node (GList ** list, xmlNode * a_node)
|
|||
gst_mpdparser_get_xml_prop_boolean (a_node, "bitstreamSwitching");
|
||||
|
||||
/* RepresentationBase extension */
|
||||
gst_mpdparser_parse_representation_base_type (&new_adap_set->
|
||||
RepresentationBase, a_node);
|
||||
gst_mpdparser_parse_representation_base_type
|
||||
(&new_adap_set->RepresentationBase, a_node);
|
||||
|
||||
/* explore children nodes */
|
||||
for (cur_node = a_node->children; cur_node; cur_node = cur_node->next) {
|
||||
|
@ -1395,11 +1399,11 @@ gst_mpdparser_parse_adaptation_set_node (GList ** list, xmlNode * a_node)
|
|||
cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name,
|
||||
(xmlChar *) "ContentComponent") == 0) {
|
||||
gst_mpdparser_parse_content_component_node (&new_adap_set->
|
||||
ContentComponents, cur_node);
|
||||
gst_mpdparser_parse_content_component_node
|
||||
(&new_adap_set->ContentComponents, cur_node);
|
||||
} else if (xmlStrcmp (cur_node->name, (xmlChar *) "SegmentTemplate") == 0) {
|
||||
gst_mpdparser_parse_segment_template_node (&new_adap_set->
|
||||
SegmentTemplate, cur_node);
|
||||
gst_mpdparser_parse_segment_template_node
|
||||
(&new_adap_set->SegmentTemplate, cur_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1437,8 +1441,8 @@ gst_mpdparser_parse_segment_template_node (GstSegmentTemplateNode ** pointer,
|
|||
}
|
||||
|
||||
GST_LOG ("extension of SegmentTemplate node:");
|
||||
gst_mpdparser_parse_mult_seg_base_type_ext (&new_segment_template->
|
||||
MultSegBaseType, a_node);
|
||||
gst_mpdparser_parse_mult_seg_base_type_ext
|
||||
(&new_segment_template->MultSegBaseType, a_node);
|
||||
|
||||
GST_LOG ("attributes of SegmentTemplate node:");
|
||||
new_segment_template->media =
|
||||
|
@ -1684,7 +1688,7 @@ gst_mpdparser_get_first_adapt_set_with_mimeType (GList * AdaptationSets,
|
|||
if (!this_mimeType && adapt_set->RepresentationBase) {
|
||||
this_mimeType = adapt_set->RepresentationBase->mimeType;
|
||||
}
|
||||
GST_DEBUG("Looking for mime type %s -> %s", mimeType, this_mimeType);
|
||||
GST_DEBUG ("Looking for mime type %s -> %s", mimeType, this_mimeType);
|
||||
if (strncmp_ext (this_mimeType, mimeType) == 0)
|
||||
return adapt_set;
|
||||
}
|
||||
|
@ -1720,7 +1724,8 @@ gst_mpdparser_get_adapt_set_with_mimeType_and_idx (GList * AdaptationSets,
|
|||
this_mimeType = rep->RepresentationBase->mimeType;
|
||||
if (!this_mimeType && adapt_set->RepresentationBase)
|
||||
this_mimeType = adapt_set->RepresentationBase->mimeType;
|
||||
GST_DEBUG("Looking for mime type %s -> %i: %s", mimeType, i, this_mimeType);
|
||||
GST_DEBUG ("Looking for mime type %s -> %i: %s", mimeType, i,
|
||||
this_mimeType);
|
||||
if (strncmp_ext (this_mimeType, mimeType) == 0) {
|
||||
if (idx < 0 || i <= idx)
|
||||
selected = adapt_set;
|
||||
|
@ -1752,14 +1757,14 @@ gst_mpdparser_get_first_adapt_set_with_mimeType_and_lang (GList *
|
|||
gst_mpdparser_get_lowest_representation (adapt_set->Representations);
|
||||
if (rep && rep->BaseURLs) {
|
||||
GstBaseURL *url = rep->BaseURLs->data;
|
||||
GST_DEBUG("%s", url->baseURL);
|
||||
GST_DEBUG ("%s", url->baseURL);
|
||||
}
|
||||
if (rep->RepresentationBase)
|
||||
this_mimeType = rep->RepresentationBase->mimeType;
|
||||
if (!this_mimeType && adapt_set->RepresentationBase) {
|
||||
this_mimeType = adapt_set->RepresentationBase->mimeType;
|
||||
}
|
||||
GST_DEBUG("Looking for mime type %s -> %s", mimeType, this_mimeType);
|
||||
GST_DEBUG ("Looking for mime type %s -> %s", mimeType, this_mimeType);
|
||||
if (strncmp_ext (this_mimeType, mimeType) == 0
|
||||
&& strncmp_ext (this_lang, lang) == 0)
|
||||
return adapt_set;
|
||||
|
@ -1849,14 +1854,14 @@ gst_mpdparser_get_segment_base (GstPeriodNode * Period,
|
|||
if (Representation && Representation->SegmentList
|
||||
&& Representation->SegmentList->MultSegBaseType
|
||||
&& Representation->SegmentList->MultSegBaseType->SegBaseType
|
||||
&& Representation->SegmentList->MultSegBaseType->SegBaseType->
|
||||
Initialization) {
|
||||
&& Representation->SegmentList->MultSegBaseType->
|
||||
SegBaseType->Initialization) {
|
||||
SegmentBase = Representation->SegmentList->MultSegBaseType->SegBaseType;
|
||||
} else if (AdaptationSet && AdaptationSet->SegmentList
|
||||
&& AdaptationSet->SegmentList->MultSegBaseType
|
||||
&& AdaptationSet->SegmentList->MultSegBaseType->SegBaseType
|
||||
&& AdaptationSet->SegmentList->MultSegBaseType->SegBaseType->
|
||||
Initialization) {
|
||||
&& AdaptationSet->SegmentList->MultSegBaseType->
|
||||
SegBaseType->Initialization) {
|
||||
SegmentBase = AdaptationSet->SegmentList->MultSegBaseType->SegBaseType;
|
||||
} else if (Period && Period->SegmentList
|
||||
&& Period->SegmentList->MultSegBaseType
|
||||
|
@ -1872,12 +1877,12 @@ gst_mpdparser_get_segment_base (GstPeriodNode * Period,
|
|||
gint
|
||||
gst_mpdparser_get_rep_idx_with_min_bandwidth (GList * Representations)
|
||||
{
|
||||
GList *list = NULL, *lowest;
|
||||
GList *list = NULL, *lowest = NULL;
|
||||
GstRepresentationNode *rep = NULL;
|
||||
gint lowest_bandwidth = -1;
|
||||
|
||||
if (Representations == NULL)
|
||||
return NULL;
|
||||
return -1;
|
||||
|
||||
for (list = g_list_first (Representations); list; list = g_list_next (list)) {
|
||||
rep = (GstRepresentationNode *) list->data;
|
||||
|
@ -2103,8 +2108,8 @@ gst_mpdparser_free_adaptation_set_node (GstAdaptationSetNode *
|
|||
(adaptation_set_node->RepresentationBase);
|
||||
gst_mpdparser_free_seg_base_type_ext (adaptation_set_node->SegmentBase);
|
||||
gst_mpdparser_free_segment_list_node (adaptation_set_node->SegmentList);
|
||||
gst_mpdparser_free_segment_template_node (adaptation_set_node->
|
||||
SegmentTemplate);
|
||||
gst_mpdparser_free_segment_template_node
|
||||
(adaptation_set_node->SegmentTemplate);
|
||||
g_list_foreach (adaptation_set_node->BaseURLs,
|
||||
(GFunc) gst_mpdparser_free_base_url_node, NULL);
|
||||
g_list_free (adaptation_set_node->BaseURLs);
|
||||
|
@ -2132,8 +2137,8 @@ gst_mpdparser_free_representation_node (GstRepresentationNode *
|
|||
(GFunc) gst_mpdparser_free_subrepresentation_node, NULL);
|
||||
g_list_free (representation_node->SubRepresentations);
|
||||
gst_mpdparser_free_seg_base_type_ext (representation_node->SegmentBase);
|
||||
gst_mpdparser_free_segment_template_node (representation_node->
|
||||
SegmentTemplate);
|
||||
gst_mpdparser_free_segment_template_node
|
||||
(representation_node->SegmentTemplate);
|
||||
gst_mpdparser_free_segment_list_node (representation_node->SegmentList);
|
||||
g_list_foreach (representation_node->BaseURLs,
|
||||
(GFunc) gst_mpdparser_free_base_url_node, NULL);
|
||||
|
@ -2147,8 +2152,8 @@ gst_mpdparser_free_subrepresentation_node (GstSubRepresentationNode *
|
|||
subrep_node)
|
||||
{
|
||||
if (subrep_node) {
|
||||
gst_mpdparser_free_representation_base_type (subrep_node->
|
||||
RepresentationBase);
|
||||
gst_mpdparser_free_representation_base_type
|
||||
(subrep_node->RepresentationBase);
|
||||
g_free (subrep_node->dependencyLevel);
|
||||
g_strfreev (subrep_node->contentComponent);
|
||||
}
|
||||
|
@ -2312,8 +2317,8 @@ gst_mpdparser_get_segmentURL_for_range (gchar * url, GstRange * range)
|
|||
if (range) {
|
||||
gchar *range_suffix;
|
||||
range_suffix =
|
||||
g_strdup_printf ("?range=%llu-%llu", range->first_byte_pos,
|
||||
range->last_byte_pos);
|
||||
g_strdup_printf ("?range=%" G_GUINT64_FORMAT "-%" G_GUINT64_FORMAT,
|
||||
range->first_byte_pos, range->last_byte_pos);
|
||||
segmentURL = g_strconcat (url, range_suffix, NULL);
|
||||
g_free (range_suffix);
|
||||
} else {
|
||||
|
@ -2324,7 +2329,7 @@ gst_mpdparser_get_segmentURL_for_range (gchar * url, GstRange * range)
|
|||
}
|
||||
|
||||
static gchar *
|
||||
gst_mpdparser_get_mediaURL (GstActiveStream *stream,
|
||||
gst_mpdparser_get_mediaURL (GstActiveStream * stream,
|
||||
GstSegmentURLNode * segmentURL)
|
||||
{
|
||||
const gchar *url_prefix;
|
||||
|
@ -2423,7 +2428,7 @@ gst_mpdparser_get_stream_period (GstMpdClient * client)
|
|||
|
||||
/* select a stream and extract the baseURL (if present) */
|
||||
static gchar *
|
||||
gst_mpdparser_parse_baseURL (GstMpdClient * client, GstActiveStream *stream)
|
||||
gst_mpdparser_parse_baseURL (GstMpdClient * client, GstActiveStream * stream)
|
||||
{
|
||||
//GstActiveStream *stream;
|
||||
GstStreamPeriod *stream_period;
|
||||
|
@ -2460,7 +2465,7 @@ gst_mpdparser_parse_baseURL (GstMpdClient * client, GstActiveStream *stream)
|
|||
}
|
||||
baseURL_array[1] = baseURL->baseURL;
|
||||
}
|
||||
GST_DEBUG("Current adaptation set id %i (%s)", stream->cur_adapt_set->id,
|
||||
GST_DEBUG ("Current adaptation set id %i (%s)", stream->cur_adapt_set->id,
|
||||
stream->cur_adapt_set->contentType);
|
||||
|
||||
if ((list = stream->cur_adapt_set->BaseURLs) != NULL) {
|
||||
|
@ -2539,7 +2544,7 @@ gst_mpd_client_get_segment_duration (GstMpdClient * client)
|
|||
/*****************************/
|
||||
|
||||
GstMpdClient *
|
||||
gst_mpd_client_new ()
|
||||
gst_mpd_client_new (void)
|
||||
{
|
||||
GstMpdClient *client;
|
||||
|
||||
|
@ -3006,7 +3011,7 @@ no_mem:
|
|||
|
||||
gboolean
|
||||
gst_mpd_client_setup_streaming (GstMpdClient * client,
|
||||
GstStreamMimeType mimeType, gchar * lang)
|
||||
GstStreamMimeType mimeType, const gchar * lang)
|
||||
{
|
||||
GstActiveStream *stream;
|
||||
GstStreamPeriod *stream_period;
|
||||
|
@ -3014,9 +3019,6 @@ gst_mpd_client_setup_streaming (GstMpdClient * client,
|
|||
GstRepresentationNode *representation;
|
||||
GList *rep_list = NULL;
|
||||
|
||||
GstRepresentationNode *rep;
|
||||
GstBaseURL *url;
|
||||
|
||||
stream_period = gst_mpdparser_get_stream_period (client);
|
||||
if (stream_period == NULL || stream_period->period == NULL) {
|
||||
GST_DEBUG ("No more Period nodes in the MPD file, terminating...");
|
||||
|
@ -3027,8 +3029,8 @@ gst_mpd_client_setup_streaming (GstMpdClient * client,
|
|||
case GST_STREAM_VIDEO:
|
||||
/* select the adaptation set for the video pipeline */
|
||||
adapt_set =
|
||||
gst_mpdparser_get_adapt_set_with_mimeType_and_idx (stream_period->
|
||||
period->AdaptationSets, "video", 0);
|
||||
gst_mpdparser_get_adapt_set_with_mimeType_and_idx
|
||||
(stream_period->period->AdaptationSets, "video", 0);
|
||||
if (!adapt_set) {
|
||||
GST_INFO ("No video adaptation set found");
|
||||
return FALSE;
|
||||
|
@ -3047,8 +3049,8 @@ gst_mpd_client_setup_streaming (GstMpdClient * client,
|
|||
/* if we did not found the requested audio language, get the first one */
|
||||
if (!adapt_set)
|
||||
adapt_set =
|
||||
gst_mpdparser_get_first_adapt_set_with_mimeType (stream_period->
|
||||
period->AdaptationSets, "audio");
|
||||
gst_mpdparser_get_first_adapt_set_with_mimeType
|
||||
(stream_period->period->AdaptationSets, "audio");
|
||||
if (!adapt_set) {
|
||||
GST_INFO ("No audio adaptation set found");
|
||||
return FALSE;
|
||||
|
@ -3066,8 +3068,8 @@ gst_mpd_client_setup_streaming (GstMpdClient * client,
|
|||
/* if we did not found the requested subtitles language, get the first one */
|
||||
if (!adapt_set)
|
||||
adapt_set =
|
||||
gst_mpdparser_get_first_adapt_set_with_mimeType (stream_period->
|
||||
period->AdaptationSets, "application");
|
||||
gst_mpdparser_get_first_adapt_set_with_mimeType
|
||||
(stream_period->period->AdaptationSets, "application");
|
||||
if (!adapt_set) {
|
||||
GST_INFO ("No application adaptation set found");
|
||||
return FALSE;
|
||||
|
@ -3094,7 +3096,7 @@ gst_mpd_client_setup_streaming (GstMpdClient * client,
|
|||
stream->mimeType = mimeType;
|
||||
stream->cur_adapt_set = adapt_set;
|
||||
|
||||
GST_DEBUG("0. Current stream %p", stream);
|
||||
GST_DEBUG ("0. Current stream %p", stream);
|
||||
|
||||
/* retrive representation list */
|
||||
if (stream->cur_adapt_set != NULL)
|
||||
|
@ -3159,7 +3161,7 @@ gst_mpd_client_get_next_fragment (GstMpdClient * client,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
GST_DEBUG("currentChunk->SegmentURL = %s", currentChunk->SegmentURL);
|
||||
GST_DEBUG ("currentChunk->SegmentURL = %s", currentChunk->SegmentURL);
|
||||
if (currentChunk->SegmentURL != NULL) {
|
||||
mediaURL = gst_mpdparser_get_mediaURL (stream, currentChunk->SegmentURL);
|
||||
} else if (stream->cur_seg_template != NULL) {
|
||||
|
@ -3168,7 +3170,7 @@ gst_mpd_client_get_next_fragment (GstMpdClient * client,
|
|||
stream->cur_representation->id, currentChunk->number,
|
||||
stream->cur_representation->bandwidth, currentChunk->start);
|
||||
}
|
||||
GST_DEBUG("mediaURL = %s", mediaURL);
|
||||
GST_DEBUG ("mediaURL = %s", mediaURL);
|
||||
|
||||
*timestamp = currentChunk->start_time;
|
||||
*duration = currentChunk->duration;
|
||||
|
@ -3209,8 +3211,8 @@ gst_mpd_client_get_next_header (GstMpdClient * client, const gchar ** uri,
|
|||
*uri = NULL;
|
||||
if (stream->cur_segment_base && stream->cur_segment_base->Initialization) {
|
||||
*uri =
|
||||
gst_mpdparser_get_initializationURL (stream->cur_segment_base->
|
||||
Initialization);
|
||||
gst_mpdparser_get_initializationURL (stream->
|
||||
cur_segment_base->Initialization);
|
||||
} else if (stream->cur_seg_template) {
|
||||
const gchar *initialization = NULL;
|
||||
if (stream->cur_seg_template->initialization) {
|
||||
|
@ -3500,7 +3502,7 @@ gst_mpdparser_get_list_and_nb_of_audio_language (GstMpdClient * client,
|
|||
GstStreamPeriod *stream_period;
|
||||
GstAdaptationSetNode *adapt_set;
|
||||
GList *list;
|
||||
gchar *this_mimeType = "audio";
|
||||
const gchar *this_mimeType = "audio";
|
||||
gchar *mimeType = NULL;
|
||||
guint nb_adapatation_set = 0;
|
||||
|
||||
|
|
|
@ -456,7 +456,7 @@ struct _GstMpdClient
|
|||
};
|
||||
|
||||
/* Basic initialization/deinitialization functions */
|
||||
GstMpdClient *gst_mpd_client_new ();
|
||||
GstMpdClient *gst_mpd_client_new (void);
|
||||
void gst_active_streams_free (GstMpdClient * client);
|
||||
void gst_mpd_client_free (GstMpdClient * client);
|
||||
|
||||
|
@ -465,7 +465,7 @@ gboolean gst_mpd_parse (GstMpdClient *client, const gchar *data, gint size);
|
|||
|
||||
/* Streaming management */
|
||||
gboolean gst_mpd_client_setup_media_presentation (GstMpdClient *client);
|
||||
gboolean gst_mpd_client_setup_streaming (GstMpdClient *client, GstStreamMimeType mimeType, gchar* lang);
|
||||
gboolean gst_mpd_client_setup_streaming (GstMpdClient *client, GstStreamMimeType mimeType, const gchar* lang);
|
||||
gboolean gst_mpd_client_setup_representation (GstMpdClient *client, GstActiveStream *stream, GstRepresentationNode *representation);
|
||||
GstClockTime gst_mpd_client_get_current_position (GstMpdClient *client);
|
||||
GstClockTime gst_mpd_client_get_next_fragment_duration (GstMpdClient * client);
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define GLIB_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
#include <glib.h>
|
||||
#include "gstfragmented.h"
|
||||
#include "gstfragment.h"
|
||||
|
@ -274,13 +276,17 @@ gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri)
|
|||
return FALSE;
|
||||
|
||||
if (downloader->priv->urisrc == NULL) {
|
||||
GST_DEBUG_OBJECT (downloader, "Creating source element for the URI:%s", uri);
|
||||
downloader->priv->urisrc = gst_element_make_from_uri (GST_URI_SRC, uri, NULL);
|
||||
GST_DEBUG_OBJECT (downloader, "Creating source element for the URI:%s",
|
||||
uri);
|
||||
downloader->priv->urisrc =
|
||||
gst_element_make_from_uri (GST_URI_SRC, uri, NULL);
|
||||
if (!downloader->priv->urisrc)
|
||||
return FALSE;
|
||||
} else {
|
||||
GST_DEBUG_OBJECT (downloader, "Reusing existing source element for the URI:%s", uri);
|
||||
if (!gst_uri_handler_set_uri (GST_URI_HANDLER (downloader->priv->urisrc), uri))
|
||||
GST_DEBUG_OBJECT (downloader,
|
||||
"Reusing existing source element for the URI:%s", uri);
|
||||
if (!gst_uri_handler_set_uri (GST_URI_HANDLER (downloader->priv->urisrc),
|
||||
uri))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue