00001 /***************************************************************************** 00002 * demux.h 00003 * 00004 * Copyright (C) 2001-2011 VideoLAN 00005 * $Id$ 00006 * 00007 * Authors: Johan Bilien <jobi@via.ecp.fr> 00008 * Jean-Paul Saman <jpsaman@videolan.org> 00009 * 00010 * This library is free software; you can redistribute it and/or 00011 * modify it under the terms of the GNU Lesser General Public 00012 * License as published by the Free Software Foundation; either 00013 * version 2.1 of the License, or (at your option) any later version. 00014 * 00015 * This library is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * Lesser General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU Lesser General Public 00021 * License along with this library; if not, write to the Free Software 00022 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00023 * 00024 *****************************************************************************/ 00025 00034 #ifndef _DVBPSI_DEMUX_H_ 00035 #define _DVBPSI_DEMUX_H_ 00036 00037 #ifdef __cplusplus 00038 extern "C" { 00039 #endif 00040 00041 /***************************************************************************** 00042 * dvbpsi_demux_new_cb_t 00043 *****************************************************************************/ 00051 typedef void (*dvbpsi_demux_new_cb_t) (void * p_cb_data, 00052 dvbpsi_t *p_dvbpsi, 00053 uint8_t i_table_id, 00054 uint16_t i_extension); 00055 00056 /***************************************************************************** 00057 * dvbpsi_demux_subdec_cb_t 00058 *****************************************************************************/ 00066 typedef void (*dvbpsi_demux_subdec_cb_t) 00067 (dvbpsi_t *p_dvbpsi, 00068 void *p_private_decoder, 00069 dvbpsi_psi_section_t *p_section); 00070 00071 /***************************************************************************** 00072 * dvbpsi_demux_subdec_t 00073 *****************************************************************************/ 00085 struct dvbpsi_demux_s; 00086 typedef struct dvbpsi_demux_subdec_s 00087 { 00088 uint32_t i_id; 00089 dvbpsi_demux_subdec_cb_t pf_callback; 00090 void * p_cb_data; 00091 struct dvbpsi_demux_subdec_s * p_next; 00093 void (*pf_detach)(dvbpsi_t *, uint8_t, uint16_t); 00095 } dvbpsi_demux_subdec_t; 00096 00097 /***************************************************************************** 00098 * dvbpsi_demux_s 00099 *****************************************************************************/ 00111 typedef struct dvbpsi_demux_s dvbpsi_demux_t; 00112 00113 struct dvbpsi_demux_s 00114 { 00115 DVBPSI_DECODER_COMMON 00116 00117 dvbpsi_demux_subdec_t * p_first_subdec; 00119 /* New subtable callback */ 00120 dvbpsi_demux_new_cb_t pf_new_callback; 00121 void * p_new_cb_data; 00123 }; 00124 00125 /***************************************************************************** 00126 * dvbpsi_AttachDemux 00127 *****************************************************************************/ 00136 bool dvbpsi_AttachDemux(dvbpsi_t * p_dvbpsi, 00137 dvbpsi_demux_new_cb_t pf_new_cb, 00138 void * p_new_cb_data); 00139 00140 /***************************************************************************** 00141 * dvbpsi_DetachDemux 00142 *****************************************************************************/ 00149 void dvbpsi_DetachDemux(dvbpsi_t *p_dvbpsi); 00150 00151 /***************************************************************************** 00152 * dvbpsi_demuxGetSubDec 00153 *****************************************************************************/ 00163 dvbpsi_demux_subdec_t * dvbpsi_demuxGetSubDec(dvbpsi_demux_t * p_demux, 00164 uint8_t i_table_id, 00165 uint16_t i_extension); 00166 /***************************************************************************** 00167 * dvbpsi_Demux 00168 *****************************************************************************/ 00176 void dvbpsi_Demux(dvbpsi_t *p_dvbpsi, dvbpsi_psi_section_t *p_section); 00177 00178 #ifdef __cplusplus 00179 }; 00180 #endif 00181 00182 #else 00183 #error "Multiple inclusions of demux.h" 00184 #endif 00185
1.7.1