X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fvideo.c;h=4dc0c2181e7c2c424736381fa9d1b20610f14fa9;hb=6ee1e193fd896ab9a4729fde14f009d9ce629815;hp=881be2d1502dd332dd2694a7370605515948a0af;hpb=34f81612d956bfc7ad53fb7937b7d38d9cdec730;p=vlc diff --git a/src/control/video.c b/src/control/video.c index 881be2d150..4dc0c2181e 100644 --- a/src/control/video.c +++ b/src/control/video.c @@ -25,11 +25,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#include "libvlc_internal.h" #include #include #include +#include "libvlc_internal.h" + /* * Remember to release the returned vout_thread_t since it is locked at * the end of this function. @@ -162,7 +163,7 @@ libvlc_video_take_snapshot( libvlc_media_instance_t *p_mi, char *psz_filepath, } int libvlc_video_get_height( libvlc_media_instance_t *p_mi, - libvlc_exception_t *p_e ) + libvlc_exception_t *p_e ) { vout_thread_t *p_vout1 = GetVout( p_mi, p_e ); if( !p_vout1 ) @@ -174,7 +175,7 @@ int libvlc_video_get_height( libvlc_media_instance_t *p_mi, } int libvlc_video_get_width( libvlc_media_instance_t *p_mi, - libvlc_exception_t *p_e ) + libvlc_exception_t *p_e ) { vout_thread_t *p_vout1 = GetVout( p_mi, p_e ); if( !p_vout1 ) @@ -185,7 +186,7 @@ int libvlc_video_get_width( libvlc_media_instance_t *p_mi, return p_vout1->i_window_width; } -vlc_bool_t libvlc_input_has_vout( libvlc_media_instance_t *p_mi, +vlc_bool_t libvlc_media_instance_has_vout( libvlc_media_instance_t *p_mi, libvlc_exception_t *p_e ) { input_thread_t *p_input_thread = libvlc_get_input_thread(p_mi, p_e); @@ -268,7 +269,7 @@ void libvlc_video_set_parent( libvlc_instance_t *p_instance, libvlc_drawable_t d vout_Control( p_vout , VOUT_REPARENT, d); vlc_object_release( p_vout ); } - libvlc_media_instance_destroy_and_detach(p_mi); + libvlc_media_instance_release(p_mi); } } } @@ -276,9 +277,9 @@ void libvlc_video_set_parent( libvlc_instance_t *p_instance, libvlc_drawable_t d libvlc_drawable_t libvlc_video_get_parent( libvlc_instance_t *p_instance, libvlc_exception_t *p_e ) { libvlc_drawable_t result; - + result = var_GetInteger( p_instance->p_libvlc_int, "drawable" ); - + return result; } @@ -302,7 +303,7 @@ void libvlc_video_set_size( libvlc_instance_t *p_instance, int width, int height vout_Control( p_vout , VOUT_SET_SIZE, width, height); vlc_object_release( p_vout ); } - libvlc_media_instance_destroy_and_detach(p_mi); + libvlc_media_instance_release(p_mi); } } } @@ -344,7 +345,7 @@ void libvlc_video_set_viewport( libvlc_instance_t *p_instance, clip->top, clip->left, clip->bottom, clip->right ); vlc_object_release( p_vout ); } - libvlc_media_instance_destroy_and_detach(p_mi); + libvlc_media_instance_release(p_mi); } } } @@ -479,11 +480,41 @@ void libvlc_video_set_crop_geometry( libvlc_media_instance_t *p_mi, vlc_object_release( p_vout ); } +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 ); + int i_ret = -1; + + if( !p_vout ) + return i_ret; + + i_ret = var_GetInteger( p_vout, "vbi-page" ); + 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 ); + int i_ret = -1; + + if( !p_vout ) + return; + + i_ret = var_SetInteger( p_vout, "vbi-page", i_page ); + if( i_ret ) + libvlc_exception_raise( p_e, + "Unexpected error while setting teletext page" ); + vlc_object_release( p_vout ); +} + int libvlc_video_destroy( libvlc_media_instance_t *p_mi, libvlc_exception_t *p_e ) { vout_thread_t *p_vout = GetVout( p_mi, p_e ); - vlc_object_detach( p_vout ); + vlc_object_detach( p_vout ); vlc_object_release( p_vout ); vout_Destroy( p_vout );