X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_vout.h;h=8c75c72652d25ec96bff1094dd173ff5246a20c2;hb=5741789dd874a3156b9c55a99b25bfa2053170b5;hp=9a9036a447aeb061ce5d9c5e6aed2a66e566afe3;hpb=b189e402a1a3c1bd44ee8d022483d2332b8082e3;p=vlc diff --git a/include/vlc_vout.h b/include/vlc_vout.h index 9a9036a447..8c75c72652 100644 --- a/include/vlc_vout.h +++ b/include/vlc_vout.h @@ -35,35 +35,6 @@ #include #include -/** - * Video picture heap, either render (to store pictures used - * by the decoder) or output (to store pictures displayed by the vout plugin) - */ -struct picture_heap_t -{ - int i_pictures; /**< current heap size */ - - /* \name Picture static properties - * Those properties are fixed at initialization and should NOT be modified - * @{ - */ - unsigned int i_width; /**< picture width */ - unsigned int i_height; /**< picture height */ - vlc_fourcc_t i_chroma; /**< picture chroma */ - unsigned int i_aspect; /**< aspect ratio */ - /**@}*/ - - /* Real pictures */ - picture_t* pp_picture[VOUT_MAX_PICTURES]; /**< pictures */ - int i_last_used_pic; /**< last used pic in heap */ - bool b_allow_modify_pics; - - /* Stuff used for truecolor RGB planes */ - uint32_t i_rmask; int i_rrshift, i_lrshift; - uint32_t i_gmask; int i_rgshift, i_lgshift; - uint32_t i_bmask; int i_rbshift, i_lbshift; -}; - /***************************************************************************** * Prototypes *****************************************************************************/ @@ -92,69 +63,10 @@ struct vout_thread_t { VLC_COMMON_MEMBERS - /** \name Thread properties and locks */ - /**@{*/ - vlc_mutex_t picture_lock; /**< picture heap lock */ - vlc_mutex_t change_lock; /**< thread change lock */ - /**@}*/ - - /** \name Current display properties */ - /**@{*/ - uint16_t i_changes; /**< changes made to the thread. - \see \ref vout_changes */ - unsigned b_fullscreen:1; /**< toogle fullscreen display */ - unsigned b_autoscale:1; /**< auto scaling picture or not */ - unsigned b_on_top:1; /**< stay always on top of other windows */ - int i_zoom; /**< scaling factor if no auto */ - unsigned int i_window_width; /**< video window width */ - unsigned int i_window_height; /**< video window height */ - unsigned int i_alignment; /**< video alignment in window */ - - /**@}*/ - - /** \name Video heap and translation tables */ - /**@{*/ - picture_heap_t render; /**< rendered pictures */ - picture_heap_t output; /**< direct buffers */ - - video_format_t fmt_render; /* render format (from the decoder) */ - video_format_t fmt_in; /* input (modified render) format */ - video_format_t fmt_out; /* output format (for the video output) */ - /**@}*/ - - /* Picture heap */ - picture_t p_picture[2*VOUT_MAX_PICTURES+1]; /**< pictures */ - /* Private vout_thread data */ vout_thread_sys_t *p; }; -#define I_OUTPUTPICTURES p_vout->output.i_pictures -#define PP_OUTPUTPICTURE p_vout->output.pp_picture -#define I_RENDERPICTURES p_vout->render.i_pictures -#define PP_RENDERPICTURE p_vout->render.pp_picture - -/** \defgroup vout_changes Flags for changes - * These flags are set in the vout_thread_t::i_changes field when another - * thread changed a variable - * @{ - */ -/** b_autoscale changed */ -#define VOUT_SCALE_CHANGE 0x0008 -/** b_on_top changed */ -#define VOUT_ON_TOP_CHANGE 0x0010 -/** b_fullscreen changed */ -#define VOUT_FULLSCREEN_CHANGE 0x0040 -/** i_zoom changed */ -#define VOUT_ZOOM_CHANGE 0x0080 -/** cropping parameters changed */ -#define VOUT_CROP_CHANGE 0x1000 -/** aspect ratio changed */ -#define VOUT_ASPECT_CHANGE 0x2000 -/** change/recreate picture buffers */ -#define VOUT_PICTURE_BUFFERS_CHANGE 0x4000 -/**@}*/ - /* Alignment flags */ #define VOUT_ALIGN_LEFT 0x0001 #define VOUT_ALIGN_RIGHT 0x0002 @@ -190,7 +102,7 @@ struct vout_thread_t * \return a vout if p_fmt is non NULL and the request is successfull, NULL * otherwise */ -VLC_EXPORT( vout_thread_t *, vout_Request, ( vlc_object_t *p_this, vout_thread_t *p_vout, video_format_t *p_fmt ) ); +VLC_EXPORT( vout_thread_t *, vout_Request, ( vlc_object_t *p_this, vout_thread_t *p_vout, const video_format_t *p_fmt ) ); #define vout_Request(a,b,c) vout_Request(VLC_OBJECT(a),b,c) /** @@ -202,7 +114,7 @@ VLC_EXPORT( vout_thread_t *, vout_Request, ( vlc_object_t *p_this, vout_thread_t * \param p_fmt the video format requested * \return a vout if the request is successfull, NULL otherwise */ -VLC_EXPORT( vout_thread_t *, vout_Create, ( vlc_object_t *p_this, video_format_t *p_fmt ) ); +VLC_EXPORT( vout_thread_t *, vout_Create, ( vlc_object_t *p_this, const video_format_t *p_fmt ) ); #define vout_Create(a,b) vout_Create(VLC_OBJECT(a),b) /** @@ -245,20 +157,16 @@ VLC_EXPORT( int, vout_GetSnapshot, ( vout_thread_t *p_vout, const char *psz_format, mtime_t i_timeout ) ); /* */ -VLC_EXPORT( picture_t *, vout_CreatePicture, ( vout_thread_t *, bool, bool, unsigned int ) ); -VLC_EXPORT( void, vout_DestroyPicture, ( vout_thread_t *, picture_t * ) ); -VLC_EXPORT( void, vout_DisplayPicture, ( vout_thread_t *, picture_t * ) ); -VLC_EXPORT( void, vout_LinkPicture, ( vout_thread_t *, picture_t * ) ); -VLC_EXPORT( void, vout_UnlinkPicture, ( vout_thread_t *, picture_t * ) ); +VLC_EXPORT( picture_t *, vout_GetPicture, ( vout_thread_t * ) ); +VLC_EXPORT( void, vout_PutPicture, ( vout_thread_t *, picture_t * ) ); -/** - * Return the spu_t object associated to a vout_thread_t. - * - * The return object is valid only as long as the vout is. You must not - * release the spu_t object returned. - * It cannot return NULL so no need to check. - */ -VLC_EXPORT( spu_t *, vout_GetSpu, ( vout_thread_t * ) ); +VLC_EXPORT( void, vout_HoldPicture, ( vout_thread_t *, picture_t * ) ); +VLC_EXPORT( void, vout_ReleasePicture, ( vout_thread_t *, picture_t * ) ); + +/* */ +VLC_EXPORT( void, vout_PutSubpicture, ( vout_thread_t *, subpicture_t * ) ); +VLC_EXPORT( int, vout_RegisterSubpictureChannel, ( vout_thread_t * ) ); +VLC_EXPORT( void, vout_FlushSubpictureChannel, ( vout_thread_t *, int ) ); VLC_EXPORT( void, vout_EnableFilter, ( vout_thread_t *, const char *,bool , bool ) );