00001 /***************************************************************************** 00002 * vlc_filter.h: filter related structures 00003 ***************************************************************************** 00004 * Copyright (C) 1999-2003 the VideoLAN team 00005 * $Id: vlc_filter.h 11664 2005-07-09 06:17:09Z courmisch $ 00006 * 00007 * Authors: Gildas Bazin <[email protected]> 00008 * 00009 * This program is free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * This program is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 * GNU General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU General Public License 00020 * along with this program; if not, write to the Free Software 00021 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. 00022 *****************************************************************************/ 00023 #ifndef _VLC_FILTER_H 00024 #define _VLC_FILTER_H 1 00025 00031 typedef struct filter_owner_sys_t filter_owner_sys_t; 00032 00041 /* 00042 * BIG FAT WARNING : the code relies in the first 4 members of filter_t 00043 * and decoder_t to be the same, so if you have anything to add, do it 00044 * at the end of the structure. 00045 */ 00046 struct filter_t 00047 { 00048 VLC_COMMON_MEMBERS 00049 00050 /* Module properties */ 00051 module_t * p_module; 00052 filter_sys_t * p_sys; 00053 00054 /* Input format */ 00055 es_format_t fmt_in; 00056 00057 /* Output format of filter */ 00058 es_format_t fmt_out; 00059 00060 /* Filter configuration */ 00061 sout_cfg_t * p_cfg; 00062 00063 picture_t * ( * pf_video_filter ) ( filter_t *, picture_t * ); 00064 block_t * ( * pf_audio_filter ) ( filter_t *, block_t * ); 00065 void ( * pf_video_blend ) ( filter_t *, picture_t *, 00066 picture_t *, picture_t *, 00067 int, int, int ); 00068 00069 subpicture_t * ( *pf_sub_filter ) ( filter_t *, mtime_t ); 00070 int ( *pf_render_text ) ( filter_t *, subpicture_region_t *, subpicture_region_t * ); 00071 00072 /* 00073 * Buffers allocation 00074 */ 00075 00076 /* Audio output callbacks */ 00077 block_t * ( * pf_audio_buffer_new) ( filter_t *, int ); 00078 00079 /* Video output callbacks */ 00080 picture_t * ( * pf_vout_buffer_new) ( filter_t * ); 00081 void ( * pf_vout_buffer_del) ( filter_t *, picture_t * ); 00082 void ( * pf_picture_link) ( filter_t *, picture_t * ); 00083 void ( * pf_picture_unlink) ( filter_t *, picture_t * ); 00084 00085 /* SPU output callbacks */ 00086 subpicture_t * ( * pf_sub_buffer_new) ( filter_t * ); 00087 void ( * pf_sub_buffer_del) ( filter_t *, subpicture_t * ); 00088 00089 /* Private structure for the owner of the decoder */ 00090 filter_owner_sys_t *p_owner; 00091 }; 00092 00097 #endif /* _VLC_FILTER_H */