[vlc-devel] [PATCH 1/4] player: implement vlc_player_SelectCategoryLanguage

Thomas Guillem thomas at gllm.fr
Mon Jun 3 10:28:11 CEST 2019


It replaces vlc_player_SelectDefaultTrack that was unused and not implemented.
---
 include/vlc_player.h | 34 +++++++++++++---------------------
 src/input/player.c   | 18 +++++++++++++++---
 src/libvlccore.sym   |  2 +-
 3 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/include/vlc_player.h b/include/vlc_player.h
index 90b8683dbe..dbb905fe71 100644
--- a/include/vlc_player.h
+++ b/include/vlc_player.h
@@ -1838,44 +1838,36 @@ vlc_player_RestartTrackCategory(vlc_player_t *player,
 }
 
 /**
- * Select the default track for an ES category.
+ * Select the language for an ES category
  *
- * Tracks for this category will be automatically chosen according to the
- * language for all future played media.
+ * @warning The language will only be set for all future played media.
  *
  * @param player locked player instance
- * @param cat VIDEO_ES, AUDIO_ES or SPU_ES
- * @param lang language (TODO: define it) or NULL to reset the default state
+ * @param cat AUDIO_ES or SPU_ES
+ * @param lang comma separated, two or three letters country code, 'any' as a
+ * fallback or NULL to reset the default state
  */
 VLC_API void
-vlc_player_SelectDefaultTrack(vlc_player_t *player,
-                              enum es_format_category_e cat, const char *lang);
-
-/**
- * Helper to select the default video track
- */
-static inline void
-vlc_player_SelectDefaultVideoTrack(vlc_player_t *player, const char *lang)
-{
-    vlc_player_SelectDefaultTrack(player, VIDEO_ES, lang);
-}
+vlc_player_SelectCategoryLanguage(vlc_player_t *player,
+                                  enum es_format_category_e cat,
+                                  const char *lang);
 
 /**
- * Helper to select the default audio track
+ * Helper to select the audio language
  */
 static inline void
-vlc_player_SelectDefaultAudioTrack(vlc_player_t *player, const char *lang)
+vlc_player_SelectAudioLanguage(vlc_player_t *player, const char *lang)
 {
-    vlc_player_SelectDefaultTrack(player, AUDIO_ES, lang);
+    vlc_player_SelectCategoryLanguage(player, AUDIO_ES, lang);
 }
 
 /**
- * Helper to select the default spu track
+ * Helper to select the spu language
  */
 static inline void
 vlc_player_SelectDefaultSubtitleTrack(vlc_player_t *player, const char *lang)
 {
-    vlc_player_SelectDefaultTrack(player, SPU_ES, lang);
+    vlc_player_SelectCategoryLanguage(player, SPU_ES, lang);
 }
 
 /**
diff --git a/src/input/player.c b/src/input/player.c
index d7d70f2ed6..da67e65ecc 100644
--- a/src/input/player.c
+++ b/src/input/player.c
@@ -1460,11 +1460,21 @@ vlc_player_RestartTrack(vlc_player_t *player, vlc_es_id_t *id)
 }
 
 void
-vlc_player_SelectDefaultTrack(vlc_player_t *player,
-                              enum es_format_category_e cat, const char *lang)
+vlc_player_SelectCategoryLanguage(vlc_player_t *player,
+                                  enum es_format_category_e cat,
+                                  const char *lang)
 {
     vlc_player_assert_locked(player);
-    /* TODO */ (void) cat; (void) lang;
+    switch (cat)
+    {
+        case AUDIO_ES:
+            var_SetString(player, "audio-language", lang);
+            break;
+        case SPU_ES:
+            var_SetString(player, "sub-language", lang);
+        default:
+            vlc_assert_unreachable();
+    }
 }
 
 static void
@@ -3609,6 +3619,8 @@ vlc_player_New(vlc_object_t *parent, enum vlc_player_lock_type lock_type,
     VAR_CREATE("sout-audio", VLC_VAR_BOOL | VLC_VAR_DOINHERIT);
     VAR_CREATE("spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT);
     VAR_CREATE("sout-spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT);
+    VAR_CREATE("audio-language", VLC_VAR_STRING | VLC_VAR_DOINHERIT);
+    VAR_CREATE("sub-language", VLC_VAR_STRING | VLC_VAR_DOINHERIT);
 
     /* TODO: Override these variables since the player handle media ended
      * action itself. */
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 44642c3f5a..a723feab48 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -827,9 +827,9 @@ vlc_player_RestartTrack
 vlc_player_Resume
 vlc_player_SeekByPos
 vlc_player_SeekByTime
+vlc_player_SelectCategoryLanguage
 vlc_player_SelectChapter
 vlc_player_SelectChapterIdx
-vlc_player_SelectDefaultTrack
 vlc_player_SelectNextChapter
 vlc_player_SelectNextTitle
 vlc_player_SelectNextTrack
-- 
2.20.1



More information about the vlc-devel mailing list