+int libvlc_video_get_teletext( libvlc_media_player_t *p_mi,
+ libvlc_exception_t *p_e )
+{
+ vout_thread_t *p_vout = GetVout( p_mi, p_e );
+ vlc_object_t *p_vbi;
+ int i_ret = -1;
+
+ if( !p_vout ) return i_ret;
+
+ p_vbi = (vlc_object_t *) vlc_object_find_name( p_vout, "zvbi",
+ FIND_ANYWHERE );
+ if( p_vbi )
+ {
+ i_ret = var_GetInteger( p_vbi, "vbi-page" );
+ vlc_object_release( p_vbi );
+ }
+
+ vlc_object_release( p_vout );
+ return i_ret;
+}
+
+void libvlc_video_set_teletext( libvlc_media_player_t *p_mi, int i_page,
+ libvlc_exception_t *p_e )
+{
+ vout_thread_t *p_vout = GetVout( p_mi, p_e );
+ vlc_object_t *p_vbi;
+ int i_ret = -1;
+
+ if( !p_vout ) return;
+
+ p_vbi = (vlc_object_t *) vlc_object_find_name( p_vout, "zvbi",
+ FIND_ANYWHERE );
+ if( p_vbi )
+ {
+ i_ret = var_SetInteger( p_vbi, "vbi-page", i_page );
+ vlc_object_release( p_vbi );
+ }
+ if( i_ret )
+ libvlc_exception_raise( p_e,
+ "Unexpected error while setting teletext page" );
+ vlc_object_release( p_vout );
+}
+
+void libvlc_toggle_teletext( libvlc_media_player_t *p_mi,
+ libvlc_exception_t *p_e )
+{
+ /* We only work on the first vout */
+ vout_thread_t *p_vout = GetVout( p_mi, p_e );
+ bool opaque; int i_ret;
+
+ /* GetVout will raise the exception for us */
+ if( !p_vout ) return;
+
+ opaque = var_GetBool( p_vout, "vbi-opaque" );
+ i_ret = var_SetBool( p_vout, "vbi-opaque", !opaque );
+ if( i_ret )
+ libvlc_exception_raise( p_e,
+ "Unexpected error while setting teletext value" );
+
+ vlc_object_release( p_vout );
+}
+
+int libvlc_video_destroy( libvlc_media_player_t *p_mi,