📄 video.c
字号:
libvlc_media_player_t *p_mi = libvlc_playlist_get_media_player(p_instance, p_e); if( p_mi ) { vout_thread_t *p_vout = GetVout( p_mi, p_e ); if( p_vout ) { /* tell running vout to re-size */ vout_Control( p_vout , VOUT_SET_SIZE, width, height); vlc_object_release( p_vout ); } libvlc_media_player_release(p_mi); }}void libvlc_video_set_viewport( libvlc_instance_t *p_instance, const libvlc_rectangle_t *view, const libvlc_rectangle_t *clip, libvlc_exception_t *p_e ){ if( !view ) { libvlc_exception_raise( p_e, "viewport is NULL" ); return; } /* if clip is NULL, then use view rectangle as clip */ if( !clip ) clip = view; /* set as default for future vout instances */ var_SetInteger( p_instance->p_libvlc_int, "drawable-view-top", view->top ); var_SetInteger( p_instance->p_libvlc_int, "drawable-view-left", view->left ); var_SetInteger( p_instance->p_libvlc_int, "drawable-view-bottom", view->bottom ); var_SetInteger( p_instance->p_libvlc_int, "drawable-view-right", view->right ); var_SetInteger( p_instance->p_libvlc_int, "drawable-clip-top", clip->top ); var_SetInteger( p_instance->p_libvlc_int, "drawable-clip-left", clip->left ); var_SetInteger( p_instance->p_libvlc_int, "drawable-clip-bottom", clip->bottom ); var_SetInteger( p_instance->p_libvlc_int, "drawable-clip-right", clip->right ); libvlc_media_player_t *p_mi = libvlc_playlist_get_media_player(p_instance, p_e); if( p_mi ) { vout_thread_t *p_vout = GetVout( p_mi, p_e ); if( p_vout ) { /* change viewport for running vout */ vout_Control( p_vout , VOUT_SET_VIEWPORT, view->top, view->left, view->bottom, view->right, clip->top, clip->left, clip->bottom, clip->right ); vlc_object_release( p_vout ); } libvlc_media_player_release(p_mi); }}char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e ){ char *psz_aspect = 0; vout_thread_t *p_vout = GetVout( p_mi, p_e ); if( !p_vout ) return 0; psz_aspect = var_GetNonEmptyString( p_vout, "aspect-ratio" ); vlc_object_release( p_vout ); return psz_aspect ? psz_aspect : strdup("");}void libvlc_video_set_aspect_ratio( libvlc_media_player_t *p_mi, char *psz_aspect, 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_SetString( p_vout, "aspect-ratio", psz_aspect ); if( i_ret ) libvlc_exception_raise( p_e, "Unexpected error while setting aspect-ratio value" ); vlc_object_release( p_vout );}int libvlc_video_get_spu( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e ){ input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e ); vlc_value_t val_list; vlc_value_t val; int i_spu = -1; int i_ret = -1; int i; if( !p_input_thread ) return -1; i_ret = var_Get( p_input_thread, "spu-es", &val ); if( i_ret < 0 ) { libvlc_exception_raise( p_e, "Getting subtitle information failed" ); vlc_object_release( p_input_thread ); return i_ret; } var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL ); for( i = 0; i < val_list.p_list->i_count; i++ ) { vlc_value_t spu_val = val_list.p_list->p_values[i]; if( val.i_int == spu_val.i_int ) { i_spu = i; break; } } vlc_object_release( p_input_thread ); return i_spu;}void libvlc_video_set_spu( libvlc_media_player_t *p_mi, int i_spu, libvlc_exception_t *p_e ){ input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e ); vlc_value_t val_list; int i_ret = -1; int i; if( !p_input_thread ) return; var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL ); for( i = 0; i < val_list.p_list->i_count; i++ ) { vlc_value_t val = val_list.p_list->p_values[i]; if( i_spu == val.i_int ) { vlc_value_t new_val; new_val.i_int = val.i_int; i_ret = var_Set( p_input_thread, "spu-es", new_val ); if( i_ret < 0 ) { libvlc_exception_raise( p_e, "Setting subtitle value failed" ); } vlc_object_release( p_input_thread ); return; } } libvlc_exception_raise( p_e, "Subtitle value out of range" ); vlc_object_release( p_input_thread );}int libvlc_video_set_subtitle_file( libvlc_media_player_t *p_mi, char *psz_subtitle, libvlc_exception_t *p_e ){ input_thread_t *p_input_thread = libvlc_get_input_thread ( p_mi, p_e ); bool b_ret = false; if( p_input_thread ) { if( input_AddSubtitles( p_input_thread, psz_subtitle, true ) ) b_ret = true; vlc_object_release( p_input_thread ); } return b_ret;}char *libvlc_video_get_crop_geometry( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e ){ char *psz_geometry = 0; vout_thread_t *p_vout = GetVout( p_mi, p_e ); if( !p_vout ) return 0; psz_geometry = var_GetNonEmptyString( p_vout, "crop" ); vlc_object_release( p_vout ); return psz_geometry ? psz_geometry : strdup("");}void libvlc_video_set_crop_geometry( libvlc_media_player_t *p_mi, char *psz_geometry, 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_SetString( p_vout, "crop", psz_geometry ); if( i_ret ) libvlc_exception_raise( p_e, "Unexpected error while setting crop geometry" ); vlc_object_release( p_vout );}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, libvlc_exception_t *p_e ){ vout_thread_t *p_vout = GetVout( p_mi, p_e ); vlc_object_detach( p_vout ); vlc_object_release( p_vout ); vlc_object_release( p_vout ); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -