[vlc-devel] [PATCH 04/15] Add function to toggle multiple SPU ES selection enabled
Roland Bewick
roland.bewick at gmail.com
Tue May 14 11:40:03 CEST 2019
---
include/vlc_player.h | 24 +++++++++++++++++++++++
modules/gui/macosx/playlist/VLCPlayerController.m | 1 +
modules/gui/qt/components/player_controller.cpp | 1 +
src/input/es_out.c | 3 ++-
src/input/player.c | 11 +++++++++++
src/input/var.c | 1 +
src/libvlccore.sym | 1 +
7 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/include/vlc_player.h b/include/vlc_player.h
index 077b3883ad..370accb78d 100644
--- a/include/vlc_player.h
+++ b/include/vlc_player.h
@@ -697,6 +697,18 @@ struct vlc_player_cbs
float subs_fps, void *data);
/**
+ * Called when dual subtitles enabled has changed
+ *
+ * @see vlc_player_SetDualSubtitlesEnabled()
+ *
+ * @param player locked player instance
+ * @param enabled true if dual subtitle selection is enabled
+ * @param data opaque pointer set by vlc_player_AddListener()
+ */
+ void (*on_dual_subtitles_enabled_changed)(vlc_player_t *player,
+ bool enabled, void *data);
+
+ /**
* Called when a new renderer item is set
*
* @see vlc_player_SetRenderer()
@@ -2260,6 +2272,18 @@ VLC_API float
vlc_player_GetAssociatedSubsFPS(vlc_player_t *player);
/**
+ * Enable or disable the abiltity to select multiple sub tracks.
+ *
+ * @note A successful call will trigger the
+ * vlc_player_cbs.on_dual_subtitles_enabled_changed event.
+ *
+ * @param player locked player instance
+ * @param enabled Enable dual subtitle track selection
+ */
+VLC_API void
+vlc_player_SetDualSubtitlesEnabled(vlc_player_t *player, bool enabled);
+
+/**
* Set the renderer
*
* Valid for the current media and all future ones.
diff --git a/modules/gui/macosx/playlist/VLCPlayerController.m b/modules/gui/macosx/playlist/VLCPlayerController.m
index 463bee5946..d23770995f 100644
--- a/modules/gui/macosx/playlist/VLCPlayerController.m
+++ b/modules/gui/macosx/playlist/VLCPlayerController.m
@@ -462,6 +462,7 @@ static const struct vlc_player_cbs player_callbacks = {
cb_player_audio_delay_changed,
cb_player_subtitle_delay_changed,
cb_player_associated_subs_fps_changed,
+ NULL, //cb_player_dual_subtitles_enabled_changed
cb_player_renderer_changed,
cb_player_record_changed,
NULL, //cb_player_signal_changed,
diff --git a/modules/gui/qt/components/player_controller.cpp b/modules/gui/qt/components/player_controller.cpp
index e42f7b5b9d..994ba6dae4 100644
--- a/modules/gui/qt/components/player_controller.cpp
+++ b/modules/gui/qt/components/player_controller.cpp
@@ -818,6 +818,7 @@ static const struct vlc_player_cbs player_cbs = {
on_player_audio_delay_changed,
on_player_subtitle_delay_changed,
on_player_associated_subs_fps_changed,
+ NULL, //on_player_dual_subtitles_enabled_changed,
on_player_renderer_changed,
on_player_record_changed,
on_player_signal_changed,
diff --git a/src/input/es_out.c b/src/input/es_out.c
index dc14a970b6..7395d69353 100644
--- a/src/input/es_out.c
+++ b/src/input/es_out.c
@@ -2081,7 +2081,8 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, bool b_force )
bool b_select_secondary_subtitle = es->fmt.i_cat == SPU_ES &&
p_sys->b_multiple_subtitle_selection &&
p_esprops->p_main_es != NULL &&
- EsIsSelected(p_esprops->p_main_es);
+ EsIsSelected(p_esprops->p_main_es) &&
+ var_GetBool( p_sys->p_input, "multiple-spus" );
if ( b_select_secondary_subtitle &&
EsOutCountSelected( p_sys, es->fmt.i_cat ) > 1 )
diff --git a/src/input/player.c b/src/input/player.c
index 843f86000c..620af48bc6 100644
--- a/src/input/player.c
+++ b/src/input/player.c
@@ -2156,6 +2156,17 @@ vlc_player_GetAssociatedSubsFPS(vlc_player_t *player)
}
void
+vlc_player_SetDualSubtitlesEnabled(vlc_player_t *player, bool enabled)
+{
+ struct vlc_player_input *input = vlc_player_get_input_locked(player);
+ if (input)
+ {
+ var_SetBool(input->thread, "multiple-spus", enabled);
+ vlc_player_SendEvent(player, on_dual_subtitles_enabled_changed, enabled);
+ }
+}
+
+void
vlc_player_InvalidateNextMedia(vlc_player_t *player)
{
vlc_player_assert_locked(player);
diff --git a/src/input/var.c b/src/input/var.c
index 7822d66003..9110624eab 100644
--- a/src/input/var.c
+++ b/src/input/var.c
@@ -726,6 +726,7 @@ void input_ConfigVarInit ( input_thread_t *p_input )
var_Create( p_input, "video", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
var_Create( p_input, "audio", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
var_Create( p_input, "spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+ var_Create( p_input, "multiple-spus", VLC_VAR_BOOL);
var_Create( p_input, "video-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
var_Create( p_input, "audio-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index d0070d42b8..175d9a9639 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -869,6 +869,7 @@ vlc_player_SetSubtitleDelay
vlc_player_SetSubtitleSync
vlc_player_SetSubtitleTextScale
vlc_player_SetSubtitleMultipleSelection
+vlc_player_SetDualSubtitlesEnabled
vlc_player_SetTeletextEnabled
vlc_player_SetTeletextTransparency
vlc_player_SetTrackCategoryEnabled
--
2.11.0
More information about the vlc-devel
mailing list