X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_vout.h;h=36b4b11de28c1f47e8d1572b75c0963321d0aa8c;hb=d3a797fb4a5a3daf13a03e4d64f3812fccd84279;hp=e0d3ecb8a13e70f05c6892a5a7a17541def3cc8f;hpb=770ea21e999ad05aec50b0d1601c180b13b9d68f;p=vlc diff --git a/include/vlc_vout.h b/include/vlc_vout.h index e0d3ecb8a1..36b4b11de2 100644 --- a/include/vlc_vout.h +++ b/include/vlc_vout.h @@ -208,6 +208,21 @@ static inline void picture_Copy( picture_t *p_dst, const picture_t *p_src ) picture_CopyProperties( p_dst, p_src ); } +/** + * This function will export a picture to an encoded bitstream. + * + * pp_image will contain the encoded bitstream in psz_format format. + * + * p_fmt can be NULL otherwise it will be set with the format used for the + * picture before encoding. + * + * i_override_width/height allow to override the width and/or the height of the + * picture to be encoded. If at most one of them is > 0 then the picture aspect + * ratio will be kept. + */ +VLC_EXPORT( int, picture_Export, ( vlc_object_t *p_obj, block_t **pp_image, video_format_t *p_fmt, picture_t *p_picture, vlc_fourcc_t i_format, int i_override_width, int i_override_height ) ); + + /** * Video picture heap, either render (to store pictures used * by the decoder) or output (to store pictures displayed by the vout plugin) @@ -266,6 +281,8 @@ enum /* Quantification type */ enum { + QTYPE_NONE, + QTYPE_MPEG1, QTYPE_MPEG2, QTYPE_H264, @@ -506,8 +523,10 @@ struct vout_thread_t /**@{*/ uint16_t i_changes; /**< changes made to the thread. \see \ref vout_changes */ - bool b_scale; /**< allow picture scaling */ - bool b_fullscreen; /**< toogle fullscreen display */ + 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 */ @@ -566,12 +585,16 @@ struct vout_thread_t #define VOUT_INFO_CHANGE 0x0001 /** b_interface changed */ #define VOUT_INTF_CHANGE 0x0004 -/** b_scale changed */ +/** b_autoscale changed */ #define VOUT_SCALE_CHANGE 0x0008 +/** b_on_top changed */ +#define VOUT_ON_TOP_CHANGE 0x0010 /** b_cursor changed */ #define VOUT_CURSOR_CHANGE 0x0020 /** b_fullscreen changed */ #define VOUT_FULLSCREEN_CHANGE 0x0040 +/** i_zoom changed */ +#define VOUT_ZOOM_CHANGE 0x0080 /** size changed */ #define VOUT_SIZE_CHANGE 0x0200 /** depth changed */ @@ -596,6 +619,9 @@ struct vout_thread_t #define MAX_JITTER_SAMPLES 20 +/* scaling factor (applied to i_zoom in vout_thread_t) */ +#define ZOOM_FP_FACTOR 1000 + /***************************************************************************** * Prototypes *****************************************************************************/ @@ -657,6 +683,23 @@ static inline void vout_CloseAndRelease( vout_thread_t *p_vout ) vlc_object_release( p_vout ); } +/** + * This function will handle a snapshot request. + * + * pp_image, pp_picture and p_fmt can be NULL otherwise they will be + * set with returned value in case of success. + * + * pp_image will hold an encoded picture in psz_format format. + * + * i_timeout specifies the time the function will wait for a snapshot to be + * available. + * + */ +VLC_EXPORT( int, vout_GetSnapshot, ( vout_thread_t *p_vout, + block_t **pp_image, picture_t **pp_picture, + video_format_t *p_fmt, + const char *psz_format, mtime_t i_timeout ) ); + /* */ VLC_EXPORT( int, vout_ChromaCmp, ( uint32_t, uint32_t ) ); @@ -668,9 +711,7 @@ VLC_EXPORT( void, vout_LinkPicture, ( vout_thread_t *, picture_t * VLC_EXPORT( void, vout_UnlinkPicture, ( vout_thread_t *, picture_t * ) ); VLC_EXPORT( void, vout_PlacePicture, ( const vout_thread_t *, unsigned int, unsigned int, unsigned int *, unsigned int *, unsigned int *, unsigned int * ) ); -VLC_EXPORT( int, vout_vaControlDefault, ( vout_thread_t *, int, va_list ) ); void vout_IntfInit( vout_thread_t * ); -VLC_EXPORT( int, vout_Snapshot, ( vout_thread_t *p_vout, picture_t *p_pic ) ); VLC_EXPORT( void, vout_EnableFilter, ( vout_thread_t *, char *,bool , bool ) ); @@ -696,26 +737,12 @@ static inline int vout_Control( vout_thread_t *p_vout, int i_query, ... ) enum output_query_e { - VOUT_GET_SIZE, /* arg1= unsigned int*, arg2= unsigned int*, res= */ VOUT_SET_SIZE, /* arg1= unsigned int, arg2= unsigned int, res= */ VOUT_SET_STAY_ON_TOP, /* arg1= bool res= */ - VOUT_REPARENT, - VOUT_SNAPSHOT, - VOUT_CLOSE, - VOUT_SET_FOCUS, /* arg1= bool res= */ VOUT_SET_VIEWPORT, /* arg1= view rect, arg2=clip rect, res= */ VOUT_REDRAW_RECT, /* arg1= area rect, res= */ }; -typedef struct snapshot_t { - char *p_data; /* Data area */ - - int i_width; /* In pixels */ - int i_height; /* In pixels */ - int i_datasize; /* In bytes */ - mtime_t date; /* Presentation time */ -} snapshot_t; - /**@}*/ #endif /* _VLC_VIDEO_H */