[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