/*****************************************************************************
- * vlc_codec.h: codec related structures
+ * vlc_filter.h: filter related structures
*****************************************************************************
- * Copyright (C) 1999-2003 VideoLAN
+ * Copyright (C) 1999-2003 the VideoLAN team
* $Id$
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
+
+#if !defined( __LIBVLC__ )
+ #error You are not libvlc or one of its plugins. You cannot include this file
+#endif
+
#ifndef _VLC_FILTER_H
#define _VLC_FILTER_H 1
+#include <vlc_es.h>
+
/**
* \file
* This file defines the structure and types used by video and audio filters
typedef struct filter_owner_sys_t filter_owner_sys_t;
-/**
- * \defgroup filter Filter
- *
- * The structure describing a filter
- *
- * @{
+/** Structure describing a filter
+ * @warning BIG FAT WARNING : the code relies in the first 4 members of
+ * filter_t and decoder_t to be the same, so if you have anything to add,
+ * do it at the end of the structure.
*/
struct filter_t
{
/* Output format of filter */
es_format_t fmt_out;
+ /* Filter configuration */
+ config_chain_t * p_cfg;
+
picture_t * ( * pf_video_filter ) ( filter_t *, picture_t * );
block_t * ( * pf_audio_filter ) ( filter_t *, block_t * );
void ( * pf_video_blend ) ( filter_t *, picture_t *,
picture_t *, picture_t *,
- int, int );
+ int, int, int );
subpicture_t * ( *pf_sub_filter ) ( filter_t *, mtime_t );
- subpicture_t * ( *pf_render_string ) ( filter_t *, block_t * );
+ int ( *pf_render_text ) ( filter_t *, subpicture_region_t *,
+ subpicture_region_t * );
+ int ( *pf_render_html ) ( filter_t *, subpicture_region_t *,
+ subpicture_region_t * );
/*
* Buffers allocation
/* Video output callbacks */
picture_t * ( * pf_vout_buffer_new) ( filter_t * );
void ( * pf_vout_buffer_del) ( filter_t *, picture_t * );
- void ( * pf_picture_link) ( filter_t *, picture_t * );
- void ( * pf_picture_unlink) ( filter_t *, picture_t * );
+ void ( * pf_picture_link) ( picture_t * );
+ void ( * pf_picture_unlink) ( picture_t * );
/* SPU output callbacks */
subpicture_t * ( * pf_sub_buffer_new) ( filter_t * );
filter_owner_sys_t *p_owner;
};
-/**
- * @}
- */
-
#endif /* _VLC_FILTER_H */