diff options
author | Dave Andreoli <dave@gurumeditation.it> | 2016-07-23 23:31:35 +0200 |
---|---|---|
committer | Dave Andreoli <dave@gurumeditation.it> | 2016-07-24 11:07:23 +0200 |
commit | 3a726037fa8e9b2042a514f1441719a5ae883807 (patch) | |
tree | 5e321ac4866465b39a77ed754505dffd7f721e73 /src/modules/emotion | |
parent | 556082d2e2a6a466c92482f77e41ee29fa9fac9d (diff) | |
download | efl-3a726037fa8e9b2042a514f1441719a5ae883807.tar.gz |
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
Diffstat (limited to 'src/modules/emotion')
-rw-r--r-- | src/modules/emotion/gstreamer1/emotion_gstreamer.c | 28 |
1 files 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 |