1 /*****************************************************************************
2 * vlc_filter.h: filter related structures
3 *****************************************************************************
4 * Copyright (C) 1999-2003 the VideoLAN team
7 * Authors: Gildas Bazin <gbazin@videolan.org>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22 *****************************************************************************/
24 #if !defined( __LIBVLC__ )
25 #error You are not libvlc or one of its plugins. You cannot include this file
29 #define _VLC_FILTER_H 1
35 * This file defines the structure and types used by video and audio filters
38 typedef struct filter_owner_sys_t filter_owner_sys_t
;
40 /** Structure describing a filter
41 * @warning BIG FAT WARNING : the code relies in the first 4 members of
42 * filter_t and decoder_t to be the same, so if you have anything to add,
43 * do it at the end of the structure.
49 /* Module properties */
56 /* Output format of filter */
59 /* Filter configuration */
60 config_chain_t
* p_cfg
;
62 picture_t
* ( * pf_video_filter
) ( filter_t
*, picture_t
* );
63 block_t
* ( * pf_audio_filter
) ( filter_t
*, block_t
* );
64 void ( * pf_video_blend
) ( filter_t
*, picture_t
*,
65 picture_t
*, picture_t
*,
68 subpicture_t
* ( *pf_sub_filter
) ( filter_t
*, mtime_t
);
69 int ( *pf_render_text
) ( filter_t
*, subpicture_region_t
*,
70 subpicture_region_t
* );
71 int ( *pf_render_html
) ( filter_t
*, subpicture_region_t
*,
72 subpicture_region_t
* );
78 /* Audio output callbacks */
79 block_t
* ( * pf_audio_buffer_new
) ( filter_t
*, int );
81 /* Video output callbacks */
82 picture_t
* ( * pf_vout_buffer_new
) ( filter_t
* );
83 void ( * pf_vout_buffer_del
) ( filter_t
*, picture_t
* );
84 void ( * pf_picture_link
) ( filter_t
*, picture_t
* );
85 void ( * pf_picture_unlink
) ( filter_t
*, picture_t
* );
87 /* SPU output callbacks */
88 subpicture_t
* ( * pf_sub_buffer_new
) ( filter_t
* );
89 void ( * pf_sub_buffer_del
) ( filter_t
*, subpicture_t
* );
91 /* Private structure for the owner of the decoder */
92 filter_owner_sys_t
*p_owner
;
95 #endif /* _VLC_FILTER_H */