static void gst_hls_demux_set_current_variant (GstHLSDemux * hlsdemux,
GstHLSVariantStream * variant);
#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
+static gboolean gst_hlsdemux_set_stream_event (GstAdaptiveDemuxStream *stream,
+ GstHLSMedia *media);
static gboolean gst_hlsdemux_set_language_tags (GstAdaptiveDemuxStream * stream,
const gchar * language);
#endif
hlsdemux_stream->reset_pts = TRUE;
#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
- if (!media) {
- GList *mlist = hlsdemux->current_variant->media[GST_HLS_MEDIA_TYPE_AUDIO];
- while (mlist != NULL) {
- GstHLSMedia *media = mlist->data;
- if (media->uri == NULL && media->lang) {
- if (gst_hlsdemux_set_language_tags(stream, media->lang))
- break;
- }
- mlist = mlist->next;
- }
- } else if (media->lang) {
- gst_hlsdemux_set_language_tags(stream, media->lang);
+ if (media) {
+ gst_hlsdemux_set_stream_event (stream, media);
+ return;
+ }
+
+ for (GList *mlist = hlsdemux->current_variant->media[GST_HLS_MEDIA_TYPE_AUDIO]; mlist; mlist = g_list_next(mlist)) {
+ GstHLSMedia *media = mlist->data;
+ if (!media->uri && gst_hlsdemux_set_stream_event (stream, media))
+ return;
}
#endif
}
#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
static gboolean
+gst_hlsdemux_set_stream_event (GstAdaptiveDemuxStream *stream, GstHLSMedia *media)
+{
+ GstStructure *structure;
+ GstEvent *event;
+
+ if (!stream) {
+ GST_WARNING ("stream is NULL");
+ return FALSE;
+ }
+
+ if (!media) {
+ GST_WARNING ("media is NULL");
+ return FALSE;
+ }
+
+ if (media->lang)
+ gst_hlsdemux_set_language_tags (stream, media->lang);
+
+ structure = gst_structure_new ("GstHLSMedia", "mtype", G_TYPE_INT, media->mtype,
+ "default", G_TYPE_BOOLEAN, media->is_default,
+ "autoselect", G_TYPE_BOOLEAN, media->autoselect,
+ "forced", G_TYPE_BOOLEAN, media->forced, NULL);
+
+ event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, structure);
+
+ gst_adaptive_demux_stream_queue_event (stream, event);
+
+ return TRUE;
+}
+
+static gboolean
gst_hlsdemux_set_language_tags (GstAdaptiveDemuxStream *stream, const gchar *language)
{
GstTagList *lang_tag = NULL;