struct
{
picture_t * (*pf_filter) ( filter_t *, picture_t * );
+ void (*pf_flush)( filter_t * );
picture_t * (*pf_buffer_new) ( filter_t * );
void (*pf_buffer_del) ( filter_t *, picture_t * );
/* Filter mouse state.
const vlc_mouse_t *p_new );
} video;
#define pf_video_filter u.video.pf_filter
+#define pf_video_flush u.video.pf_flush
#define pf_video_mouse u.video.pf_mouse
#define pf_video_buffer_new u.video.pf_buffer_new
#define pf_video_buffer_del u.video.pf_buffer_del
#define pf_render_html u.render.pf_html
} u;
+
+ /* Input attachments
+ * XXX use filter_GetInputAttachments */
+ int (*pf_get_attachments)( filter_t *, input_attachment_t ***, int * );
+
/* Private structure for the owner of the decoder */
filter_owner_sys_t *p_owner;
};
p_filter->pf_video_buffer_del( p_filter, p_picture );
}
+/**
+ * This function will flush the state of a video filter.
+ */
+static inline void filter_FlushPictures( filter_t *p_filter )
+{
+ if( p_filter->pf_video_flush )
+ p_filter->pf_video_flush( p_filter );
+}
+
/**
* This function will return a new subpicture usable by p_filter as an output
* buffer. You have to release it using filter_DeleteSubpicture or by returning
return p_block;
}
+/**
+ * This function gives all input attachments at once.
+ *
+ * You MUST release the returned values
+ */
+static inline int filter_GetInputAttachments( filter_t *p_filter,
+ input_attachment_t ***ppp_attachment,
+ int *pi_attachment )
+{
+ if( !p_filter->pf_get_attachments )
+ return VLC_EGENERIC;
+ return p_filter->pf_get_attachments( p_filter,
+ ppp_attachment, pi_attachment );
+}
+
/**
* It creates a blend filter.
*
* Only the chroma properties of the dest format is used (chroma
* type, rgb masks and shifts)
*/
-VLC_EXPORT( filter_t *, filter_NewBlend, ( vlc_object_t *, const video_format_t *p_dst_chroma ) );
+VLC_EXPORT( filter_t *, filter_NewBlend, ( vlc_object_t *, const video_format_t *p_dst_chroma ) LIBVLC_USED );
/**
* It configures blend filter parameters that are allowed to changed
* \param p_buffer_allocation_data pointer to private allocation data
* \return pointer to a filter chain
*/
-VLC_EXPORT( filter_chain_t *, filter_chain_New, ( vlc_object_t *, const char *, bool, int (*)( filter_t *, void * ), void (*)( filter_t * ), void * ) );
+VLC_EXPORT( filter_chain_t *, filter_chain_New, ( vlc_object_t *, const char *, bool, int (*)( filter_t *, void * ), void (*)( filter_t * ), void * ) LIBVLC_USED );
#define filter_chain_New( a, b, c, d, e, f ) filter_chain_New( VLC_OBJECT( a ), b, c, d, e, f )
/**
*/
VLC_EXPORT( picture_t *, filter_chain_VideoFilter, ( filter_chain_t *, picture_t * ) );
+/**
+ * Flush a video filter chain.
+ */
+VLC_EXPORT( void, filter_chain_VideoFlush, ( filter_chain_t * ) );
+
/**
* Apply the filter chain to a audio block.
*