26 #define VLC_FILTER_H 1
31 #include <vlc_mouse.h>
38 typedef struct filter_owner_sys_t filter_owner_sys_t;
58 bool b_allow_fmt_out_change;
68 void (*pf_flush)( filter_t * );
69 picture_t * (*pf_buffer_new) ( filter_t * );
70 void (*pf_buffer_del) ( filter_t *,
picture_t * );
80 const vlc_mouse_t *p_old,
81 const vlc_mouse_t *p_new );
83 #define pf_video_filter u.video.pf_filter
84 #define pf_video_flush u.video.pf_flush
85 #define pf_video_mouse u.video.pf_mouse
86 #define pf_video_buffer_new u.video.pf_buffer_new
87 #define pf_video_buffer_del u.video.pf_buffer_del
93 #define pf_audio_filter u.audio.pf_filter
98 const picture_t *, int, int, int );
100 #define pf_video_blend u.blend.pf_blend
107 int (*pf_mouse) ( filter_t *,
112 #define pf_sub_source u.sub.pf_source
113 #define pf_sub_buffer_new u.sub.pf_buffer_new
114 #define pf_sub_buffer_del u.sub.pf_buffer_del
115 #define pf_sub_mouse u.sub.pf_mouse
121 #define pf_sub_filter u.subf.pf_filter
126 subpicture_region_t *,
128 int (*pf_html) (
filter_t *, subpicture_region_t *,
129 subpicture_region_t *,
132 #define pf_render_text u.render.pf_text
133 #define pf_render_html u.render.pf_html
142 filter_owner_sys_t *p_owner;
156 picture_t *p_picture = p_filter->pf_video_buffer_new( p_filter );
158 msg_Warn( p_filter,
"can't get output picture" );
169 static inline void filter_DeletePicture(
filter_t *p_filter,
picture_t *p_picture )
171 p_filter->pf_video_buffer_del( p_filter, p_picture );
177 static inline void filter_FlushPictures(
filter_t *p_filter )
179 if( p_filter->pf_video_flush )
180 p_filter->pf_video_flush( p_filter );
194 subpicture_t *p_subpicture = p_filter->pf_sub_buffer_new( p_filter );
196 msg_Warn( p_filter,
"can't get output subpicture" );
209 p_filter->pf_sub_buffer_del( p_filter, p_subpicture );
217 static inline int filter_GetInputAttachments(
filter_t *p_filter,
221 if( !p_filter->pf_get_attachments )
223 return p_filter->pf_get_attachments( p_filter,
224 ppp_attachment, pi_attachment );
259 #define VIDEO_FILTER_WRAPPER( name ) \
260 static picture_t *name ## _Filter ( filter_t *p_filter, \
263 picture_t *p_outpic = filter_NewPicture( p_filter ); \
266 name( p_filter, p_pic, p_outpic ); \
267 picture_CopyProperties( p_outpic, p_pic ); \
269 picture_Release( p_pic ); \
293 #define filter_chain_New( a, b, c, d, e, f ) filter_chain_New( VLC_OBJECT( a ), b, c, d, e, f )
VLC_API const es_format_t * filter_chain_GetFmtOut(filter_chain_t *)
VLC_API int filter_ConfigureBlend(filter_t *, int i_dst_width, int i_dst_height, const video_format_t *p_src)
Definition: vlc_picture.h:69
VLC_API int filter_chain_AppendFromString(filter_chain_t *, const char *)
Definition: vlc_subpicture.h:57
Definition: vlc_subpicture.h:136
VLC_API int filter_Blend(filter_t *, picture_t *p_dst, int i_dst_x, int i_dst_y, const picture_t *p_src, int i_alpha)
VLC_API void filter_chain_VideoFlush(filter_chain_t *)
VLC_API block_t * filter_chain_AudioFilter(filter_chain_t *, block_t *)
Definition: vlc_configuration.h:156
VLC_API int filter_chain_DeleteFilter(filter_chain_t *, filter_t *)
VLC_API filter_chain_t * filter_chain_New(vlc_object_t *, const char *, bool, int(*)(filter_t *, void *), void(*)(filter_t *), void *) VLC_USED
VLC_API int filter_chain_GetLength(filter_chain_t *)
VLC_API void filter_chain_SubSource(filter_chain_t *, mtime_t)
VLC_API void filter_chain_Reset(filter_chain_t *, const es_format_t *, const es_format_t *)
Definition: vlc_mouse.h:45
VLC_API filter_t * filter_chain_AppendFilter(filter_chain_t *, const char *, config_chain_t *, const es_format_t *, const es_format_t *)
VLC_API void filter_DeleteBlend(filter_t *)
int64_t mtime_t
Definition: vlc_common.h:153
#define VLC_EGENERIC
Definition: vlc_common.h:374
Definition: vlc_filter.h:45
uint32_t vlc_fourcc_t
Definition: vlc_common.h:160
VLC_API picture_t * filter_chain_VideoFilter(filter_chain_t *, picture_t *)
VLC_API void filter_chain_Delete(filter_chain_t *)
Definition: vlc_block.h:102
VLC_API subpicture_t * filter_chain_SubFilter(filter_chain_t *, subpicture_t *)
VLC_API filter_t * filter_NewBlend(vlc_object_t *, const video_format_t *p_dst_chroma) VLC_USED
Definition: vlc_objects.h:42
VLC_API int filter_chain_MouseFilter(filter_chain_t *, vlc_mouse_t *, const vlc_mouse_t *)
VLC_API int filter_chain_MouseEvent(filter_chain_t *, const vlc_mouse_t *, const video_format_t *)
struct filter_chain_t filter_chain_t
Definition: vlc_filter.h:279