jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=941ccc43247fe23aba125180e9787c851a79b4d3

commit 941ccc43247fe23aba125180e9787c851a79b4d3
Author: Thomas Guillem <tho...@gllm.fr>
Date:   Fri Mar 25 09:05:34 2016 +0100

    emotion/libvlc: fix video/audio/spu mute
---
 src/modules/emotion/libvlc/emotion_libvlc.c | 49 ++++++++++++++++-------------
 1 file changed, 27 insertions(+), 22 deletions(-)

diff --git a/src/modules/emotion/libvlc/emotion_libvlc.c 
b/src/modules/emotion/libvlc/emotion_libvlc.c
index b1a930e..4f4ffb3 100644
--- a/src/modules/emotion/libvlc/emotion_libvlc.c
+++ b/src/modules/emotion/libvlc/emotion_libvlc.c
@@ -69,6 +69,7 @@ struct _Emotion_LibVLC
    /* options */
    int                            video_mute;
    int                            audio_mute;
+   int                            spu_mute;
    int                            audio_vol;
    Emotion_Vis                    vis;
 
@@ -701,7 +702,6 @@ em_add(const Emotion_Engine *api EINA_UNUSED,
    eina_lock_new(&ev->lock);
    eina_condition_new(&ev->wait, &ev->lock);
    ev->ref_count = 1;
-   ev->audio_mute = -1;
    ev->audio_vol = -1;
 
    return ev;
@@ -752,12 +752,15 @@ em_file_open(void *video,
    ev->m = libvlc_media_new_path(libvlc, file);
    EINA_SAFETY_ON_NULL_GOTO(ev->m, error);
 
-   if (ev->opt.no_audio)
+   if (ev->opt.no_audio || ev->audio_mute)
      libvlc_media_add_option(ev->m, ":no-audio");
 
-   if (ev->opt.no_video)
+   if (ev->opt.no_video || ev->video_mute)
      libvlc_media_add_option(ev->m, ":no-video");
 
+   if (ev->spu_mute)
+     libvlc_media_add_option(ev->m, ":no-spu");
+
    /* Create libvlc_media_player */
    ev->mp = libvlc_media_player_new_from_media(ev->m);
    EINA_SAFETY_ON_NULL_GOTO(ev->mp, error);
@@ -770,16 +773,11 @@ em_file_open(void *video,
                                                libvlc_position_disable, 0);
 
    /* Set sink callbacks */
-   if (!ev->opt.no_video)
-     {
-        libvlc_video_set_format_callbacks(ev->mp, libvlc_video_on_format, 
NULL);
-        libvlc_video_set_callbacks(ev->mp, libvlc_video_on_lock,
-                                   libvlc_video_on_unlock,
-                                   libvlc_video_on_display, ev);
-     }
+   libvlc_video_set_format_callbacks(ev->mp, libvlc_video_on_format, NULL);
+   libvlc_video_set_callbacks(ev->mp, libvlc_video_on_lock,
+                              libvlc_video_on_unlock,
+                              libvlc_video_on_display, ev);
 
-   if (ev->audio_mute != -1)
-     libvlc_audio_set_mute(ev->mp, 1);
    if (ev->audio_vol != -1)
      libvlc_audio_set_volume(ev->mp, ev->audio_vol);
 
@@ -1268,6 +1266,9 @@ em_video_channel_mute_set(void *video,
    Emotion_LibVLC *ev = video;
 
    ev->video_mute = mute;
+
+   if (libvlc_mp_is_ready(ev))
+     em_video_channel_set(video, mute ? -1 : 0);
 }
 
 static int
@@ -1351,9 +1352,8 @@ em_audio_channel_mute_set(void *video,
 
    ev->audio_mute = mute;
 
-   if (!libvlc_mp_is_ready(ev)) return;
-
-   libvlc_audio_set_mute(ev->mp, mute);
+   if (libvlc_mp_is_ready(ev))
+     em_audio_channel_set(video, mute ? -1 : 0);
 }
 
 static int
@@ -1361,10 +1361,7 @@ em_audio_channel_mute_get(void *video)
 {
    Emotion_LibVLC *ev = video;
 
-   if (!libvlc_mp_is_ready(ev))
-     return ev->audio_mute;
-
-   return libvlc_audio_get_mute(ev->mp);
+   return ev->audio_mute;
 }
 
 static void
@@ -1454,14 +1451,22 @@ em_spu_channel_name_get(void *video,
 }
 
 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_LibVLC *ev = video;
+
+   ev->spu_mute = mute;
+
+   if (libvlc_mp_is_ready(ev))
+     em_spu_channel_set(video, mute ? -1 : 0);
 }
 
 static int
-em_spu_channel_mute_get(void *video EINA_UNUSED)
+em_spu_channel_mute_get(void *video)
 {
-   return 0;
+   Emotion_LibVLC *ev = video;
+
+   return ev->spu_mute;
 }
 
 static int

-- 


Reply via email to