emotion/libvlc: fix video/audio/spu mute

This commit is contained in:
Thomas Guillem 2016-03-25 09:05:34 +01:00 committed by Jean-Philippe Andre
parent f04903119c
commit 941ccc4324
1 changed files with 27 additions and 22 deletions

View File

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