From 3a726037fa8e9b2042a514f1441719a5ae883807 Mon Sep 17 00:00:00 2001 From: Dave Andreoli Date: Sat, 23 Jul 2016 23:31:35 +0200 Subject: [PATCH] Gstreamer1: implement subtitles mute/unmute ability This seems the only way to disable subtitles embedded in the video file. WIthout this patch calling em_spu_mute_set/get do not work, thus I consider this a @fix --- .../emotion/gstreamer1/emotion_gstreamer.c | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/modules/emotion/gstreamer1/emotion_gstreamer.c b/src/modules/emotion/gstreamer1/emotion_gstreamer.c index b6574a5139..3a76595e92 100644 --- a/src/modules/emotion/gstreamer1/emotion_gstreamer.c +++ b/src/modules/emotion/gstreamer1/emotion_gstreamer.c @@ -895,7 +895,7 @@ em_spu_channel_set(void *video, int channel) if (channel < 0) channel = -1; - g_object_set (ev->pipeline, "current-text", channel, NULL); + g_object_set(ev->pipeline, "current-text", channel, NULL); } static int @@ -918,14 +918,34 @@ em_spu_channel_name_get(void *video EINA_UNUSED, int channel EINA_UNUSED) } static void -em_spu_channel_mute_set(void *video EINA_UNUSED, int mute EINA_UNUSED) +em_spu_channel_mute_set(void *video, int mute) { + Emotion_Gstreamer *ev = video; + gint flags; + + if (!ev->pipeline) return; + + g_object_get(ev->pipeline, "flags", &flags, NULL); + + if (mute) + flags &= ~GST_PLAY_FLAG_TEXT; + else + flags |= GST_PLAY_FLAG_TEXT; + + g_object_set(ev->pipeline, "flags", flags, NULL); } static int -em_spu_channel_mute_get(void *video EINA_UNUSED) +em_spu_channel_mute_get(void *video) { - return 0; + Emotion_Gstreamer *ev = video; + gint flags; + + if (!ev->pipeline) return 0; + + g_object_get(ev->pipeline, "flags", &flags, NULL); + + return (flags & GST_PLAY_FLAG_TEXT) ? 0 : 1; } static int