+int libvlc_video_get_teletext( libvlc_media_instance_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_instance_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_instance_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 );
+ vlc_value_t val; int i_ret;
+
+ /* GetVout will raise the exception for us */
+ if( !p_vout )
+ return;
+
+ i_ret = var_Get( p_vout, "vbi-opaque", &val );
+ if( i_ret )
+ libvlc_exception_raise( p_e,
+ "Unexpected error while looking up teletext value" );
+
+ val.b_bool = !val.b_bool;
+ i_ret = var_Set( p_vout, "vbi-opaque", val );
+ 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_instance_t *p_mi,