vlc | branch: master | Thomas Guillem <[email protected]> | 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 ); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
