00001 /***************************************************************************** 00002 * psi.h 00003 * (c)2001-2002 VideoLAN 00004 * $Id: psi.h 88 2004-02-24 14:31:18Z sam $ 00005 * 00006 * Authors: Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr> 00007 * 00008 * This program is free software; you can redistribute it and/or 00009 * modify it under the terms of the GNU General Public License 00010 * as published by the Free Software Foundation; either version 2 00011 * of the License, or (at your option) any later version. 00012 * 00013 * This program is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU General Public License 00019 * along with this program; if not, write to the Free Software 00020 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00021 * 00022 *****************************************************************************/ 00023 00032 #ifndef _DVBPSI_PSI_H_ 00033 #define _DVBPSI_PSI_H_ 00034 00035 #ifdef __cplusplus 00036 extern "C" { 00037 #endif 00038 00039 00040 /***************************************************************************** 00041 * dvbpsi_psi_section_t 00042 *****************************************************************************/ 00069 struct dvbpsi_psi_section_s 00070 { 00071 /* non-specific section data */ 00072 uint8_t i_table_id; 00073 int b_syntax_indicator; 00074 int b_private_indicator; 00075 uint16_t i_length; 00077 /* used if b_syntax_indicator is true */ 00078 uint16_t i_extension; 00081 uint8_t i_version; 00082 int b_current_next; 00083 uint8_t i_number; 00084 uint8_t i_last_number; 00086 /* non-specific section data */ 00087 /* the content is table-specific */ 00088 uint8_t * p_data; 00089 uint8_t * p_payload_start; 00090 uint8_t * p_payload_end; 00092 /* used if b_syntax_indicator is true */ 00093 uint32_t i_crc; 00095 /* list handling */ 00096 struct dvbpsi_psi_section_s * p_next; 00099 }; 00100 00101 00102 /***************************************************************************** 00103 * dvbpsi_NewPSISection 00104 *****************************************************************************/ 00111 dvbpsi_psi_section_t * dvbpsi_NewPSISection(int i_max_size); 00112 00113 00114 /***************************************************************************** 00115 * dvbpsi_DeletePSISections 00116 *****************************************************************************/ 00123 void dvbpsi_DeletePSISections(dvbpsi_psi_section_t * p_section); 00124 00125 00126 /***************************************************************************** 00127 * dvbpsi_ValidPSISection 00128 *****************************************************************************/ 00137 int dvbpsi_ValidPSISection(dvbpsi_psi_section_t* p_section); 00138 00139 00140 /***************************************************************************** 00141 * dvbpsi_BuildPSISection 00142 *****************************************************************************/ 00149 void dvbpsi_BuildPSISection(dvbpsi_psi_section_t* p_section); 00150 00151 00152 #ifdef __cplusplus 00153 }; 00154 #endif 00155 00156 #else 00157 #error "Multiple inclusions of psi.h" 00158 #endif 00159