#include <string.h>
#include <gst/base/gsttypefindhelper.h>
+#include <gst/tag/tag.h>
#include "gsthlsdemux.h"
static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src_%u",
}
#else
static void
+#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
+create_stream_for_playlist (GstAdaptiveDemux * demux, GstM3U8 * playlist,
+ gboolean is_primary_playlist, gboolean selected, GstHLSMedia * media)
+#else
create_stream_for_playlist (GstAdaptiveDemux * demux, GstM3U8 * playlist,
gboolean is_primary_playlist, gboolean selected)
+#endif
{
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->do_typefind = TRUE;
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);
+ }
+#endif
}
#endif
static gboolean
create_stream_for_playlist (demux, playlist->m3u8, TRUE,
GST_HLS_MEDIA_TYPE_INVALID);
#else
+#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
+ create_stream_for_playlist (demux, playlist->m3u8, TRUE, TRUE, NULL);
+#else
create_stream_for_playlist (demux, playlist->m3u8, TRUE, TRUE);
#endif
+#endif
for (i = 0; i < GST_HLS_N_MEDIA_TYPES; ++i) {
GList *mlist = playlist->media[i];
while (mlist != NULL) {
create_stream_for_playlist (demux, media->playlist, FALSE,
(media->mtype == GST_HLS_MEDIA_TYPE_VIDEO ||
media->mtype == GST_HLS_MEDIA_TYPE_AUDIO ||
+#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
+ media->mtype == GST_HLS_MEDIA_TYPE_SUBTITLES), media);
+#else
media->mtype == GST_HLS_MEDIA_TYPE_SUBTITLES));
#endif
+#endif
mlist = mlist->next;
}
}
if (tags) {
+#ifdef TIZEN_FEATURE_HLSDEMUX_LANG_TAG
+ if (stream->pending_tags)
+ gst_tag_list_insert (tags, stream->pending_tags, GST_TAG_MERGE_APPEND);
+#endif
gst_adaptive_demux_stream_set_tags (stream, tags);
/* run typefind again on the trimmed buffer */
hls_stream->do_typefind = TRUE;