hlsdemux: push language code tag 09/258209/2
authorGilbok Lee <gilbok.lee@samsung.com>
Wed, 12 May 2021 08:11:16 +0000 (17:11 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Thu, 13 May 2021 01:11:34 +0000 (10:11 +0900)
Change-Id: I0941e39c9384f6c936d8ea736704d2b718902b3c

ext/hls/gsthlsdemux.c
packaging/gst-plugins-bad.spec

index d22dbcc..615886c 100644 (file)
@@ -43,6 +43,7 @@
 
 #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",
@@ -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
@@ -617,8 +638,12 @@ gst_hls_demux_setup_streams (GstAdaptiveDemux * demux)
   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) {
@@ -640,8 +665,12 @@ 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;
index 50c242f..bfc7c7f 100644 (file)
@@ -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\