static GstM3U8 *gst_hls_demux_stream_get_m3u8 (GstHLSDemuxStream * hls_stream);
static void gst_hls_demux_set_current_variant (GstHLSDemux * hlsdemux,
GstHLSVariantStream * variant);
+#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
+static gboolean gst_hlsdemux_set_language_tags (GstAdaptiveDemuxStream * stream,
+ const gchar * language);
+#endif
#define gst_hls_demux_parent_class parent_class
G_DEFINE_TYPE (GstHLSDemux, gst_hls_demux, GST_TYPE_ADAPTIVE_DEMUX);
GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
GstHLSDemuxStream *hlsdemux_stream;
GstAdaptiveDemuxStream *stream;
-#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
- GstTagList *lang_tag = NULL;
-#endif
if (!selected) {
/* FIXME: Later, create the stream but mark not-selected */
hlsdemux_stream->reset_pts = TRUE;
#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
- if (media && media->lang) {
- if (gst_tag_check_language_code (media->lang))
- lang_tag = gst_tag_list_new (GST_TAG_LANGUAGE_CODE, media->lang, NULL);
- else
- lang_tag = gst_tag_list_new (GST_TAG_LANGUAGE_NAME, media->lang, NULL);
-
- if (lang_tag)
- gst_adaptive_demux_stream_set_tags (stream, 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);
}
#endif
}
return ret;
}
+
+#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
+static gboolean
+gst_hlsdemux_set_language_tags (GstAdaptiveDemuxStream *stream, const gchar *language)
+{
+ GstTagList *lang_tag = NULL;
+
+ if (!stream)
+ return FALSE;
+
+ if (gst_tag_check_language_code (language))
+ lang_tag = gst_tag_list_new (GST_TAG_LANGUAGE_CODE, language, NULL);
+ else
+ lang_tag = gst_tag_list_new (GST_TAG_LANGUAGE_NAME, language, NULL);
+
+ if (!lang_tag)
+ return FALSE;
+
+ gst_adaptive_demux_stream_set_tags (stream, lang_tag);
+
+ return TRUE;
+}
+#endif
\ No newline at end of file
if (media->mtype == GST_HLS_MEDIA_TYPE_INVALID)
goto required_attributes_missing;
+#ifndef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
if (media->uri == NULL)
goto existing_stream;
+#endif
if (media->group_id == NULL || media->name == NULL)
goto required_attributes_missing;
+#ifndef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
if (media->mtype == GST_HLS_MEDIA_TYPE_CLOSED_CAPTIONS)
goto uri_with_cc;
+#endif
GST_DEBUG ("media: %s, group '%s', name '%s', uri '%s', %s %s %s, lang=%s",
GST_HLS_MEDIA_TYPE_NAME (media->mtype), media->group_id, media->name,
return media;
+#ifndef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
uri_with_cc:
{
GST_WARNING ("closed captions EXT-X-MEDIA should not have URI specified");
goto out_error;
}
+#endif
required_attributes_missing:
{
GST_WARNING ("EXT-X-MEDIA description is missing required attributes");
goto out_error;
/* fall through */
}
+#ifndef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
existing_stream:
{
GST_DEBUG ("EXT-X-MEDIA without URI, describes embedded stream, skipping");
/* fall through */
}
+#endif
out_error:
{