From 5e1d483594fd9e53c5a770db574679a0f8fbf385 Mon Sep 17 00:00:00 2001 From: Gilbok Lee Date: Wed, 12 May 2021 17:11:16 +0900 Subject: [PATCH] hlsdemux: push language code tag Change-Id: I0941e39c9384f6c936d8ea736704d2b718902b3c --- ext/hls/gsthlsdemux.c | 33 +++++++++++++++++++++++++++++++++ packaging/gst-plugins-bad.spec | 3 ++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c index d22dbcced..615886c6d 100644 --- a/ext/hls/gsthlsdemux.c +++ b/ext/hls/gsthlsdemux.c @@ -43,6 +43,7 @@ #include #include +#include #include "gsthlsdemux.h" static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src_%u", @@ -571,12 +572,20 @@ create_stream_for_playlist (GstAdaptiveDemux * demux, GstM3U8 * playlist, } #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 */ @@ -596,6 +605,18 @@ create_stream_for_playlist (GstAdaptiveDemux * demux, GstM3U8 * playlist, 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 @@ -616,8 +637,12 @@ gst_hls_demux_setup_streams (GstAdaptiveDemux * demux) #ifdef TIZEN_FEATURE_AVOID_PAD_SWITCHING 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]; @@ -640,7 +665,11 @@ gst_hls_demux_setup_streams (GstAdaptiveDemux * demux) 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; @@ -1026,6 +1055,10 @@ gst_hls_demux_handle_buffer (GstAdaptiveDemux * demux, } 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; diff --git a/packaging/gst-plugins-bad.spec b/packaging/gst-plugins-bad.spec index 50c242fdc..bfc7c7fc4 100644 --- a/packaging/gst-plugins-bad.spec +++ b/packaging/gst-plugins-bad.spec @@ -4,7 +4,7 @@ Name: gst-plugins-bad Version: 1.16.2 -Release: 11 +Release: 12 Summary: GStreamer Streaming-Media Framework Plug-Ins License: LGPL-2.0+ Group: Multimedia/Framework @@ -85,6 +85,7 @@ export CFLAGS+=" -Wall -g -fPIC\ -DTIZEN_FEATURE_MPEGDEMUX_MODIFICATION\ -DTIZEN_FEATURE_H264PARSE_MODIFICATION\ -DTIZEN_FEATURE_AD\ + -DTIZEN_FEATURE_HLSDEMUX_LANG_TAG\ -D__TIZEN__\ -fstack-protector-strong\ -Wl,-z,relro\ -- 2.34.1