[vlc-devel] [RFC 3/3] vout: allow subtitle position override

Salah-Eddin Shaban salah at videolan.org
Wed Mar 1 14:37:04 CET 2017


---
 src/libvlc-module.c                 | 10 ++++++++++
 src/video_output/vout_subpictures.c |  6 ++++++
 2 files changed, 16 insertions(+)

diff --git a/src/libvlc-module.c b/src/libvlc-module.c
index 6d60e80..9561d0c 100644
--- a/src/libvlc-module.c
+++ b/src/libvlc-module.c
@@ -329,6 +329,11 @@ static const char *const ppsz_align_descriptions[] =
 #define VIDEO_TITLE_POSITION_LONGTEXT N_( \
     "Place on video where to display the title (default bottom center).")
 
+#define SUBTITLE_POSITION_TEXT N_("Position of subtitles")
+#define SUBTITLE_POSITION_LONGTEXT N_( \
+    "Override subtitle position")
+
+
 #define MOUSE_HIDE_TIMEOUT_TEXT N_("Hide cursor and fullscreen " \
                                    "controller after x milliseconds")
 #define MOUSE_HIDE_TIMEOUT_LONGTEXT N_( \
@@ -1559,6 +1564,11 @@ vlc_module_begin ()
                  VIDEO_TITLE_POSITION_LONGTEXT, false )
         change_safe()
         change_integer_list( pi_pos_values, ppsz_pos_descriptions )
+    add_integer( "subtitle-position", 16, SUBTITLE_POSITION_TEXT,
+                 SUBTITLE_POSITION_LONGTEXT, false )
+        change_safe()
+        change_integer_list( pi_pos_values, ppsz_pos_descriptions )
+
     // autohide after 1 second
     add_integer( "mouse-hide-timeout", 1000, MOUSE_HIDE_TIMEOUT_TEXT,
                  MOUSE_HIDE_TIMEOUT_LONGTEXT, false )
diff --git a/src/video_output/vout_subpictures.c b/src/video_output/vout_subpictures.c
index cc3bf57..bfe231f 100644
--- a/src/video_output/vout_subpictures.c
+++ b/src/video_output/vout_subpictures.c
@@ -93,6 +93,7 @@ struct spu_private_t {
 
     /* */
     mtime_t last_sort_date;
+    int subtitle_position;
 };
 
 /*****************************************************************************
@@ -1028,6 +1029,10 @@ static subpicture_t *SpuRenderSubpictures(spu_t *spu,
         for (region = subpic->p_region; region != NULL; region = region->p_next) {
             spu_area_t area;
 
+            /* Allow users to override subtitle position */
+            if (subpic->b_subtitle && !(sys->subtitle_position & SUBPICTURE_ALIGN_LEAVETEXT))
+                region->i_align = sys->subtitle_position;
+
             region->i_x = region->i_original_x;
             region->i_y = region->i_original_y;
 
@@ -1202,6 +1207,7 @@ spu_t *spu_Create(vlc_object_t *object)
     sys->scale_yuvp = NULL;
 
     sys->margin = var_InheritInteger(spu, "sub-margin");
+    sys->subtitle_position = var_InheritInteger(spu, "subtitle-position");
 
     /* Register the default subpicture channel */
     sys->channel = SPU_DEFAULT_CHANNEL + 1;
-- 
2.6.6



More information about the vlc-devel mailing list