X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvideo_output.h;h=cb4d5f3b536814ac3353aa289a7226c1a1f8b9f7;hb=9ea870aa6c8bbd34df0199fe31cdd2ef9cdb1d8e;hp=a0972e24ea764c7c7500ffa9b8c47a1aa1298f71;hpb=36b86f5b99933b478403e8231325e2392178a1f5;p=vlc diff --git a/include/video_output.h b/include/video_output.h index a0972e24ea..cb4d5f3b53 100644 --- a/include/video_output.h +++ b/include/video_output.h @@ -89,6 +89,9 @@ struct vout_thread_t unsigned int i_window_width; /**< video window width */ unsigned int i_window_height; /**< video window height */ unsigned int i_alignment; /**< video alignment in window */ + + intf_thread_t *p_parent_intf; /**< parent interface for embedded + vout (if any) */ /**@}*/ /** \name Plugin used and shortcuts to access its capabilities */ @@ -99,6 +102,7 @@ struct vout_thread_t int ( *pf_manage ) ( vout_thread_t * ); void ( *pf_render ) ( vout_thread_t *, picture_t * ); void ( *pf_display ) ( vout_thread_t *, picture_t * ); + int ( *pf_control ) ( vout_thread_t *, int, va_list ); /**@}*/ /** \name Statistics @@ -119,10 +123,12 @@ struct vout_thread_t /**@}*/ /* Picture and subpicture heaps */ - picture_t p_picture[2*VOUT_MAX_PICTURES]; /**< pictures */ + picture_t p_picture[2*VOUT_MAX_PICTURES+1]; /**< pictures */ subpicture_t p_subpicture[VOUT_MAX_PICTURES]; /**< subpictures */ - - subpicture_t * p_last_osd_message; + subpicture_t *p_default_channel; /**< subpicture in the default + channel */ + int i_channel_count; /**< index of last subpicture + channel registered */ /* Statistics */ count_t c_loops; @@ -143,8 +149,9 @@ struct vout_thread_t the text renderer */ module_t * p_text_renderer_module; /**< text renderer module */ /** callback used when a new string needs to be shown on the vout */ - subpicture_t * ( *pf_add_string ) ( vout_thread_t *, char *, text_style_t *, int, - int, int, mtime_t, mtime_t ); + subpicture_t * ( *pf_add_string ) ( vout_thread_t *, int, char *, + text_style_t *, int, int, int, mtime_t, + mtime_t ); }; #define I_OUTPUTPICTURES p_vout->output.i_pictures @@ -215,16 +222,49 @@ VLC_EXPORT( void, vout_UnlinkPicture, ( vout_thread_t *, picture_t * VLC_EXPORT( void, vout_PlacePicture, ( vout_thread_t *, unsigned int, unsigned int, unsigned int *, unsigned int *, unsigned int *, unsigned int * ) ); picture_t * vout_RenderPicture ( vout_thread_t *, picture_t *, subpicture_t * ); + +VLC_EXPORT( int, vout_vaControlDefault, ( vout_thread_t *, int, va_list ) ); VLC_EXPORT( void *, vout_RequestWindow, ( vout_thread_t *, int *, int *, unsigned int *, unsigned int * ) ); VLC_EXPORT( void, vout_ReleaseWindow, ( vout_thread_t *, void * ) ); +VLC_EXPORT( int, vout_ControlWindow, ( vout_thread_t *, void *, int, va_list ) ); + +static inline int vout_vaControl( vout_thread_t *p_vout, int i_query, + va_list args ) +{ + if( p_vout->pf_control ) + return p_vout->pf_control( p_vout, i_query, args ); + else + return VLC_EGENERIC; +} + +static inline int vout_Control( vout_thread_t *p_vout, int i_query, ... ) +{ + va_list args; + int i_result; + + va_start( args, i_query ); + i_result = vout_vaControl( p_vout, i_query, args ); + va_end( args ); + return i_result; +} + +enum output_query_e +{ + VOUT_SET_ZOOM, /* arg1= double res= */ + VOUT_SET_STAY_ON_TOP, /* arg1= vlc_bool_t res= */ + VOUT_REPARENT, + VOUT_CLOSE +}; /** * \addtogroup subpicture * @{ */ -VLC_EXPORT( subpicture_t *, vout_CreateSubPicture, ( vout_thread_t *, int ) ); +VLC_EXPORT( subpicture_t *, vout_CreateSubPicture, ( vout_thread_t *, int, int ) ); VLC_EXPORT( void, vout_DestroySubPicture, ( vout_thread_t *, subpicture_t * ) ); VLC_EXPORT( void, vout_DisplaySubPicture, ( vout_thread_t *, subpicture_t * ) ); +VLC_EXPORT( int, vout_RegisterOSDChannel, ( vout_thread_t * ) ); +VLC_EXPORT( void, vout_ClearOSDChannel, ( vout_thread_t *, int ) ); subpicture_t * vout_SortSubPictures ( vout_thread_t *, mtime_t ); void vout_RenderSubPictures ( vout_thread_t *, picture_t *,