[vlc-commits] lib/video: toggle teletext from libvlc_video_set_teletext

Thomas Guillem git at videolan.org
Tue Mar 14 17:30:26 CET 2017


vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Tue Mar 14 10:20:48 2017 +0100| [8714fccc499ce344e26198860ba7478f05e73c90] | committer: Thomas Guillem

lib/video: toggle teletext from libvlc_video_set_teletext

If the page is in the range [0; 1000[ the teletext spu will be enabled. If the
page is -1, the teletext spu will be disabled. Otherwise do nothing and print
an error.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8714fccc499ce344e26198860ba7478f05e73c90
---

 include/vlc/libvlc_media_player.h |  4 +++-
 lib/video.c                       | 32 +++++++++++++++++++++++++-------
 2 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
index 97069f7..224ed39 100644
--- a/include/vlc/libvlc_media_player.h
+++ b/include/vlc/libvlc_media_player.h
@@ -1351,7 +1351,9 @@ LIBVLC_API int libvlc_video_get_teletext( libvlc_media_player_t *p_mi );
  * Set new teletext page to retrieve.
  *
  * \param p_mi the media player
- * \param i_page teletex page number requested
+ * \param i_page teletex page number requested. This value can be -1 to disable
+ * teletext or a number in the range [0;1000[ to show the requested page. 100
+ * is the default teletext page.
  */
 LIBVLC_API void libvlc_video_set_teletext( libvlc_media_player_t *p_mi, int i_page );
 
diff --git a/lib/video.c b/lib/video.c
index 587a8f7..db4055e 100644
--- a/lib/video.c
+++ b/lib/video.c
@@ -515,7 +515,13 @@ void libvlc_video_set_teletext( libvlc_media_player_t *p_mi, int i_page )
     vlc_object_t *p_zvbi = NULL;
     int telx;
 
-    var_SetInteger (p_mi, "vbi-page", i_page);
+    if( i_page >= 0 && i_page < 1000 )
+        var_SetInteger( p_mi, "vbi-page", i_page );
+    else if( i_page != -1 )
+    {
+        libvlc_printerr("Invalid page number");
+        return;
+    }
 
     p_input_thread = libvlc_get_input_thread( p_mi );
     if( !p_input_thread ) return;
@@ -526,14 +532,26 @@ void libvlc_video_set_teletext( libvlc_media_player_t *p_mi, int i_page )
         return;
     }
 
-    telx = var_GetInteger( p_input_thread, "teletext-es" );
-    if( telx >= 0 )
+    if( i_page == -1 )
+    {
+        teletext_enable( p_input_thread, false );
+    }
+    else
     {
-        if( input_GetEsObjects( p_input_thread, telx, &p_zvbi, NULL, NULL )
-            == VLC_SUCCESS )
+        telx = var_GetInteger( p_input_thread, "teletext-es" );
+        if( telx >= 0 )
+        {
+            if( input_GetEsObjects( p_input_thread, telx, &p_zvbi, NULL, NULL )
+                == VLC_SUCCESS )
+            {
+                var_SetInteger( p_zvbi, "vbi-page", i_page );
+                vlc_object_release( p_zvbi );
+            }
+        }
+        else
         {
-            var_SetInteger( p_zvbi, "vbi-page", i_page );
-            vlc_object_release( p_zvbi );
+            /* the "vbi-page" will be selected on es creation */
+            teletext_enable( p_input_thread, true );
         }
     }
     vlc_object_release( p_input_thread );



More information about the vlc-commits mailing list