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 --