From c7faceb0214471fd9c3edc6d2cf67b10c577036b Mon Sep 17 00:00:00 2001 From: Gilbok Lee Date: Fri, 7 Mar 2025 17:52:22 +0900 Subject: [PATCH] hlsdemux/hlsdemux2: Convert uppercase letters to lowercase, when adding a language-code tag - The gst_tag_check_language_code() function only checks for lowercase letters to verify the ISO-639 language code, so if the EXT-X-MEDIA language attribute comes in uppercase, it has been modified to convert it to lowercase and check it. [Version] 1.24.11-7 [Issue Type] Fix bugs Change-Id: I771a84be560876baf034e17eeffcc6d2bcc03f66 --- packaging/gstreamer.spec | 2 +- .../gst-plugins-bad/ext/hls/gsthlsdemux.c | 17 ++++++++++++++--- .../ext/adaptivedemux2/hls/gsthlsdemux.c | 11 +++++++++++ subprojects/gst-plugins-good/meson.build | 1 + 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/packaging/gstreamer.spec b/packaging/gstreamer.spec index 718a92a700..2f26fe5f0e 100644 --- a/packaging/gstreamer.spec +++ b/packaging/gstreamer.spec @@ -60,7 +60,7 @@ Name: %{_name} Version: 1.24.11 -Release: 6 +Release: 7 Summary: Streaming-Media Framework Runtime License: LGPL-2.0+ Group: Multimedia/Framework diff --git a/subprojects/gst-plugins-bad/ext/hls/gsthlsdemux.c b/subprojects/gst-plugins-bad/ext/hls/gsthlsdemux.c index af40668e22..94eeaf2be9 100644 --- a/subprojects/gst-plugins-bad/ext/hls/gsthlsdemux.c +++ b/subprojects/gst-plugins-bad/ext/hls/gsthlsdemux.c @@ -2411,15 +2411,26 @@ gst_hlsdemux_set_language_tags (GstAdaptiveDemuxStream * stream, const gchar * language) { GstTagList *lang_tag = NULL; + gchar *lower_language = NULL; - if (!stream) + if (!stream) { + GST_WARNING ("stream is NULL"); return FALSE; + } - if (gst_tag_check_language_code (language)) - lang_tag = gst_tag_list_new (GST_TAG_LANGUAGE_CODE, language, NULL); + if (!language) { + GST_WARNING ("language is NULL"); + return FALSE; + } + + lower_language = g_ascii_strdown(language, -1); + if (lower_language && gst_tag_check_language_code (lower_language)) + lang_tag = gst_tag_list_new (GST_TAG_LANGUAGE_CODE, lower_language, NULL); else lang_tag = gst_tag_list_new (GST_TAG_LANGUAGE_NAME, language, NULL); + g_free (lower_language); + if (!lang_tag) return FALSE; diff --git a/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux.c b/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux.c index f4d5dea0d3..9ce55bbbae 100644 --- a/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux.c +++ b/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux.c @@ -477,12 +477,23 @@ gst_hls_demux_new_track_for_rendition (GstHLSDemux * demux, if (rendition->lang) { if (tags == NULL) tags = gst_tag_list_new_empty (); +#ifdef TIZEN_FEATURE_HLSDEMUX2_LANG_TAG + gchar *lower_lang = g_ascii_strdown(rendition->lang, -1); + if (lower_lang && gst_tag_check_language_code (lower_lang)) + gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_LANGUAGE_CODE, + lower_lang, NULL); + else + gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_LANGUAGE_NAME, + rendition->lang, NULL); + g_free (lower_lang); +#else if (gst_tag_check_language_code (rendition->lang)) gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_LANGUAGE_CODE, rendition->lang, NULL); else gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_LANGUAGE_NAME, rendition->lang, NULL); +#endif } if (stream_type == GST_STREAM_TYPE_TEXT) diff --git a/subprojects/gst-plugins-good/meson.build b/subprojects/gst-plugins-good/meson.build index 1a6b6c3a46..5b47ec6d6c 100644 --- a/subprojects/gst-plugins-good/meson.build +++ b/subprojects/gst-plugins-good/meson.build @@ -467,6 +467,7 @@ cdata.set('TIZEN_FEATURE_SOUP_MODIFICATION', true) cdata.set('TIZEN_FEATURE_RGVOLUME_MODIFICATION', true) cdata.set('TIZEN_FEATURE_DISABLE_V4L2_DEPENDENCY', true) cdata.set('TIZEN_FEATURE_AVIDEMUX_MODIFICATION', true) +cdata.set('TIZEN_FEATURE_HLSDEMUX2_LANG_TAG', true) cdata.set('TIZEN_FEATURE_USE_LIBV4L2', true) cdata.set('TIZEN_FEATURE_V4L2_ADDITIONAL_CID_SUPPORT', true) cdata.set('TIZEN_FEATURE_VPX_MODIFICATION', true) -- 2.34.1