]> git.sesse.net Git - vlc/commitdiff
Add libvlc_video_get_spu_delay and libvlc_video_set_spu_delay
authorJohn Hendrikx <hjohn@xs4all.nl>
Thu, 1 Dec 2011 13:08:33 +0000 (14:08 +0100)
committerJean-Baptiste Kempf <jb@videolan.org>
Thu, 1 Dec 2011 21:47:03 +0000 (22:47 +0100)
Allows control of the subtitle delay through libvlc.

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
include/vlc/libvlc_media_player.h
lib/libvlc.sym
lib/video.c

index a2b5748cd84a2a07af7855b1ae8769f22f6ed3df..152a95d90896667bf90dc8a34ba2e0fb8e7c6bf6 100644 (file)
@@ -1038,6 +1038,30 @@ LIBVLC_API int libvlc_video_set_spu( libvlc_media_player_t *p_mi, unsigned i_spu
  */
 LIBVLC_API int libvlc_video_set_subtitle_file( libvlc_media_player_t *p_mi, const char *psz_subtitle );
 
+/**
+ * Get the current subtitle delay. Positive values means subtitles are being
+ * displayed later, negative values earlier.
+ *
+ * \param p_mi media player
+ * \return time (in microseconds) the display of subtitles is being delayed
+ * \version LibVLC 1.2.0 or later
+ */
+LIBVLC_API int64_t libvlc_video_get_spu_delay( libvlc_media_player_t *p_mi );
+
+/**
+ * Set the subtitle delay. This affects the timing of when the subtitle will
+ * be displayed. Positive values result in subtitles being displayed later,
+ * while negative values will result in subtitles being displayed earlier.
+ *
+ * The subtitle delay will be reset to zero each time the media changes.
+ *
+ * \param p_mi media player
+ * \param i_delay time (in microseconds) the display of subtitles should be delayed
+ * \return 0 on success, -1 on error
+ * \version LibVLC 1.2.0 or later
+ */
+LIBVLC_API int libvlc_video_set_spu_delay( libvlc_media_player_t *p_mi, int64_t i_delay );
+
 /**
  * Get the description of available titles.
  *
index 6582a9637fb1d880fe13fea1f327e3158dfa87b7..45327d5ce5d967d5ff8f950bcd98df1b3fe6942d 100644 (file)
@@ -189,6 +189,7 @@ libvlc_video_get_marquee_string
 libvlc_video_get_scale
 libvlc_video_get_spu
 libvlc_video_get_spu_count
+libvlc_video_get_spu_delay
 libvlc_video_get_spu_description
 libvlc_video_get_teletext
 libvlc_video_get_title_description
@@ -212,6 +213,7 @@ libvlc_video_set_marquee_string
 libvlc_video_set_mouse_input
 libvlc_video_set_scale
 libvlc_video_set_spu
+libvlc_video_set_spu_delay
 libvlc_video_set_subtitle_file
 libvlc_video_set_teletext
 libvlc_video_set_track
index b659c8809e91fbf11fd3f15de7972d8ddcec9415..163bca306e2245bd4d15a4aa4cf3be2f6365ad20 100644 (file)
@@ -365,6 +365,44 @@ int libvlc_video_set_subtitle_file( libvlc_media_player_t *p_mi,
     return b_ret;
 }
 
+int64_t libvlc_video_get_spu_delay( libvlc_media_player_t *p_mi )
+{
+    input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi );
+    int64_t val = 0;
+
+    if( p_input_thread )
+    {
+        val = var_GetTime( p_input_thread, "spu-delay" );
+        vlc_object_release( p_input_thread );
+    }
+    else
+    {
+        libvlc_printerr( "No active input" );
+    }
+
+    return val;
+}
+
+int libvlc_video_set_spu_delay( libvlc_media_player_t *p_mi,
+                                int64_t i_delay )
+{
+    input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi );
+    int ret = -1;
+
+    if( p_input_thread )
+    {
+        var_SetTime( p_input_thread, "spu-delay", i_delay );
+        vlc_object_release( p_input_thread );
+        ret = 0;
+    }
+    else
+    {
+        libvlc_printerr( "No active input" );
+    }
+
+    return ret;
+}
+
 libvlc_track_description_t *
         libvlc_video_get_title_description( libvlc_media_player_t *p_mi )
 {