sdt.h | sdt.h | |||
---|---|---|---|---|
/************************************************************************** *** | /************************************************************************** *** | |||
* sdt.h | * sdt.h | |||
* Copyright (C) 2001-2011 VideoLAN | * Copyright (C) 2001-2011 VideoLAN | |||
* $Id$ | * $Id$ | |||
* | * | |||
* Authors: Johan Bilien <jobi@via.ecp.fr> | * Authors: Johan Bilien <jobi@via.ecp.fr> | |||
* Jean-Paul Saman <jpsaman@videolan.org> | ||||
* | * | |||
* This library is free software; you can redistribute it and/or | * This library is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | * License as published by the Free Software Foundation; either | |||
* version 2.1 of the License, or (at your option) any later version. | * version 2.1 of the License, or (at your option) any later version. | |||
* | * | |||
* This library is distributed in the hope that it will be useful, | * This library is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | * Lesser General Public License for more details. | |||
skipping to change at line 57 | skipping to change at line 58 | |||
* This structure is used to store a decoded SDT service description. | * This structure is used to store a decoded SDT service description. | |||
* (ETSI EN 300 468 V1.4.1 section 5.2.3). | * (ETSI EN 300 468 V1.4.1 section 5.2.3). | |||
*/ | */ | |||
/*! | /*! | |||
* \typedef struct dvbpsi_sdt_service_s dvbpsi_sdt_service_t | * \typedef struct dvbpsi_sdt_service_s dvbpsi_sdt_service_t | |||
* \brief dvbpsi_sdt_service_t type definition. | * \brief dvbpsi_sdt_service_t type definition. | |||
*/ | */ | |||
typedef struct dvbpsi_sdt_service_s | typedef struct dvbpsi_sdt_service_s | |||
{ | { | |||
uint16_t i_service_id; /*!< service_id */ | uint16_t i_service_id; /*!< service_id */ | |||
int b_eit_schedule; /*!< EIT schedule flag | bool b_eit_schedule; /*!< EIT schedule flag | |||
*/ | */ | |||
int b_eit_present; /*!< EIT present/follow | bool b_eit_present; /*!< EIT present/follow | |||
ing | ing | |||
flag */ | flag */ | |||
uint8_t i_running_status; /*!< Running status */ | uint8_t i_running_status; /*!< Running status */ | |||
int b_free_ca; /*!< Free CA mode flag */ | bool b_free_ca; /*!< Free CA mode flag */ | |||
uint16_t i_descriptors_length; /*!< Descriptors loop | uint16_t i_descriptors_length; /*!< Descriptors loop | |||
length */ | length */ | |||
dvbpsi_descriptor_t * p_first_descriptor; /*!< First of the follo wing | dvbpsi_descriptor_t * p_first_descriptor; /*!< First of the follo wing | |||
DVB descriptors */ | DVB descriptors */ | |||
struct dvbpsi_sdt_service_s * p_next; /*!< next element of | struct dvbpsi_sdt_service_s * p_next; /*!< next element of | |||
the list */ | the list */ | |||
} dvbpsi_sdt_service_t; | } dvbpsi_sdt_service_t; | |||
skipping to change at line 88 | skipping to change at line 89 | |||
* | * | |||
* This structure is used to store a decoded SDT. | * This structure is used to store a decoded SDT. | |||
* (ETSI EN 300 468 V1.4.1 section 5.2.3). | * (ETSI EN 300 468 V1.4.1 section 5.2.3). | |||
*/ | */ | |||
/*! | /*! | |||
* \typedef struct dvbpsi_sdt_s dvbpsi_sdt_t | * \typedef struct dvbpsi_sdt_s dvbpsi_sdt_t | |||
* \brief dvbpsi_sdt_t type definition. | * \brief dvbpsi_sdt_t type definition. | |||
*/ | */ | |||
typedef struct dvbpsi_sdt_s | typedef struct dvbpsi_sdt_s | |||
{ | { | |||
uint16_t i_ts_id; /*!< transport_stream_id */ | /* PSI table members */ | |||
uint8_t i_version; /*!< version_number */ | uint8_t i_table_id; /*!< table id */ | |||
int b_current_next; /*!< current_next_indicator | uint16_t i_extension; /*!< subtable id, here tr | |||
*/ | ansport_stream_id */ | |||
uint16_t i_network_id; /*!< original network id */ | ||||
/* Table specific */ | ||||
uint8_t i_version; /*!< version_number */ | ||||
bool b_current_next; /*!< current_next_indicat | ||||
or */ | ||||
uint16_t i_network_id; /*!< original network id | ||||
*/ | ||||
dvbpsi_sdt_service_t * p_first_service; /*!< service description | dvbpsi_sdt_service_t * p_first_service; /*!< service description | |||
list */ | list */ | |||
} dvbpsi_sdt_t; | } dvbpsi_sdt_t; | |||
/************************************************************************** *** | /************************************************************************** *** | |||
* dvbpsi_sdt_callback | * dvbpsi_sdt_callback | |||
************************************************************************** ***/ | ************************************************************************** ***/ | |||
/*! | /*! | |||
* \typedef void (* dvbpsi_sdt_callback)(void* p_cb_data, | * \typedef void (* dvbpsi_sdt_callback)(void* p_cb_data, | |||
dvbpsi_sdt_t* p_new_sdt) | dvbpsi_sdt_t* p_new_sdt) | |||
* \brief Callback type definition. | * \brief Callback type definition. | |||
*/ | */ | |||
typedef void (* dvbpsi_sdt_callback)(void* p_cb_data, dvbpsi_sdt_t* p_new_s dt); | typedef void (* dvbpsi_sdt_callback)(void* p_cb_data, dvbpsi_sdt_t* p_new_s dt); | |||
/************************************************************************** *** | /************************************************************************** *** | |||
* dvbpsi_AttachSDT | * dvbpsi_sdt_attach | |||
************************************************************************** ***/ | ************************************************************************** ***/ | |||
/*! | /*! | |||
* \fn void dvbpsi_AttachSDT(dvbpsi_demux_t * p_demux, uint8_t i_table_id, | * \fn bool dvbpsi_sdt_attach(dvbpsi_t *p_dvbpsi, uint8_t i_table_id, | |||
uint16_t i_extension, dvbpsi_sdt_callback pf_callback, | uint16_t i_extension, dvbpsi_sdt_callback pf_callback, | |||
void* p_cb_data) | void* p_cb_data) | |||
* \brief Creation and initialization of a SDT decoder. | * \brief Creation and initialization of a SDT decoder. It is attached to p | |||
* \param p_demux Subtable demultiplexor to which the decoder is attached. | _dvbpsi. | |||
* \param p_dvbpsi pointer to dvbpsi to hold decoder/demuxer structure | ||||
* \param i_table_id Table ID, 0x42 or 0x46. | * \param i_table_id Table ID, 0x42 or 0x46. | |||
* \param i_extension Table ID extension, here TS ID. | * \param i_extension Table ID extension, here TS ID. | |||
* \param pf_callback function to call back on new SDT. | * \param pf_callback function to call back on new SDT. | |||
* \param p_cb_data private data given in argument to the callback. | * \param p_cb_data private data given in argument to the callback. | |||
* \return 0 if everything went ok. | * \return true on success, false on failure | |||
*/ | */ | |||
__attribute__((deprecated)) | bool dvbpsi_sdt_attach(dvbpsi_t *p_dvbpsi, uint8_t i_table_id, uint16_t i_e | |||
int dvbpsi_AttachSDT(dvbpsi_decoder_t * p_psi_decoder, uint8_t i_table_id, | xtension, | |||
uint16_t i_extension, dvbpsi_sdt_callback pf_callback, | dvbpsi_sdt_callback pf_callback, void* p_cb_data); | |||
void* p_cb_data); | ||||
/************************************************************************** *** | /************************************************************************** *** | |||
* dvbpsi_DetachSDT | * dvbpsi_sdt_detach | |||
************************************************************************** ***/ | ************************************************************************** ***/ | |||
/*! | /*! | |||
* \fn void dvbpsi_DetachSDT(dvbpsi_demux_t * p_demux, uint8_t i_table_id, | * \fn void dvbpsi_sdt_detach(dvbpsi_t *p_dvbpsi, uint8_t i_table_id, | |||
uint16_t i_extension) | uint16_t i_extension) | |||
* \brief Destroy a SDT decoder. | * \brief Destroy a SDT decoder. | |||
* \param p_demux Subtable demultiplexor to which the decoder is attached. | * \param p_dvbpsi pointer holding decoder/demuxer structure | |||
* \param i_table_id Table ID, 0x42 or 0x46. | * \param i_table_id Table ID, 0x42 or 0x46. | |||
* \param i_extension Table ID extension, here TS ID. | * \param i_extension Table ID extension, here TS ID. | |||
* \return nothing. | * \return nothing. | |||
*/ | */ | |||
__attribute__((deprecated)) | void dvbpsi_sdt_detach(dvbpsi_t *p_dvbpsi, uint8_t i_table_id, uint16_t i_e | |||
void dvbpsi_DetachSDT(dvbpsi_demux_t * p_demux, uint8_t i_table_id, | xtension); | |||
uint16_t i_extension); | ||||
/************************************************************************** *** | /************************************************************************** *** | |||
* dvbpsi_InitSDT/dvbpsi_NewSDT | * dvbpsi_sdt_init/dvbpsi_NewSDT | |||
************************************************************************** ***/ | ************************************************************************** ***/ | |||
/*! | /*! | |||
* \fn void dvbpsi_InitSDT(dvbpsi_sdt_t* p_sdt, uint16_t i_ts_id, | * \fn void dvbpsi_sdt_init(dvbpsi_sdt_t* p_sdt, uint8_t i_table_id, uint16 | |||
uint8_t i_version, int b_current_next, uint16_t i_network_id) | _t i_extension, | |||
uint8_t i_version, bool b_current_next, uint16_ | ||||
t i_network_id) | ||||
* \brief Initialize a user-allocated dvbpsi_sdt_t structure. | * \brief Initialize a user-allocated dvbpsi_sdt_t structure. | |||
* \param p_sdt pointer to the SDT structure | * \param p_sdt pointer to the SDT structure | |||
* \param i_ts_id transport stream ID | * \param i_table_id Table ID, 0x42 or 0x46. | |||
* \param i_extension Table ID extension, here TS ID. | ||||
* \param i_version SDT version | * \param i_version SDT version | |||
* \param b_current_next current next indicator | * \param b_current_next current next indicator | |||
* \param i_network_id original network id | * \param i_network_id original network id | |||
* \return nothing. | * \return nothing. | |||
*/ | */ | |||
__attribute__((deprecated)) | void dvbpsi_sdt_init(dvbpsi_sdt_t *p_sdt, uint8_t i_table_id, uint16_t i_ex | |||
void dvbpsi_InitSDT(dvbpsi_sdt_t *p_sdt, uint16_t i_ts_id, uint8_t i_versio | tension, | |||
n, | uint8_t i_version, bool b_current_next, uint16_t i_net | |||
int b_current_next, uint16_t i_network_id); | work_id); | |||
/*! | /*! | |||
* \def dvbpsi_NewSDT(p_sdt, i_ts_id, i_version, b_current_next, i_network_ | * \fn dvbpsi_sdt_t *dvbpsi_sdt_new(uint8_t i_table_id, uint16_t i_extensio | |||
id) | n, uint8_t i_version, | |||
bool b_current_next, uint16_t i_network | ||||
_id) | ||||
* \brief Allocate and initialize a new dvbpsi_sdt_t structure. | * \brief Allocate and initialize a new dvbpsi_sdt_t structure. | |||
* \param p_sdt pointer to the SDT structure | * \param i_table_id Table ID, 0x42 or 0x46. | |||
* \param i_ts_id transport stream ID | * \param i_extension Table ID extension, here TS ID. | |||
* \param i_version SDT version | * \param i_version SDT version | |||
* \param b_current_next current next indicator | * \param b_current_next current next indicator | |||
* \param i_network_id original network id | * \param i_network_id original network id | |||
* \return nothing. | * \return p_sdt pointer to the SDT structure | |||
*/ | */ | |||
#define dvbpsi_NewSDT(p_sdt, i_ts_id, i_version, b_current_next,i_network_i | dvbpsi_sdt_t *dvbpsi_sdt_new(uint8_t i_table_id, uint16_t i_extension, uint | |||
d) \ | 8_t i_version, | |||
do { \ | bool b_current_next, uint16_t i_network_id); | |||
p_sdt = (dvbpsi_sdt_t*)malloc(sizeof(dvbpsi_sdt_t)); \ | ||||
if(p_sdt != NULL) \ | ||||
dvbpsi_InitSDT(p_sdt, i_ts_id, i_version, b_current_next, i_network_id) | ||||
; \ | ||||
} while(0); | ||||
/************************************************************************** *** | /************************************************************************** *** | |||
* dvbpsi_EmptySDT/dvbpsi_DeleteSDT | * dvbpsi_sdt_empty/dvbpsi_sdt_delete | |||
************************************************************************** ***/ | ************************************************************************** ***/ | |||
/*! | /*! | |||
* \fn void dvbpsi_EmptySDT(dvbpsi_sdt_t* p_sdt) | * \fn void dvbpsi_sdt_empty(dvbpsi_sdt_t* p_sdt) | |||
* \brief Clean a dvbpsi_sdt_t structure. | * \brief Clean a dvbpsi_sdt_t structure. | |||
* \param p_sdt pointer to the SDT structure | * \param p_sdt pointer to the SDT structure | |||
* \return nothing. | * \return nothing. | |||
*/ | */ | |||
__attribute__((deprecated)) | void dvbpsi_sdt_empty(dvbpsi_sdt_t *p_sdt); | |||
void dvbpsi_EmptySDT(dvbpsi_sdt_t *p_sdt); | ||||
/*! | /*! | |||
* \def dvbpsi_DeleteSDT(p_sdt) | * \fn dvbpsi_sdt_delete(dvbpsi_sdt_t *p_sdt) | |||
* \brief Clean and free a dvbpsi_sdt_t structure. | * \brief Clean and free a dvbpsi_sdt_t structure. | |||
* \param p_sdt pointer to the SDT structure | * \param p_sdt pointer to the SDT structure | |||
* \return nothing. | * \return nothing. | |||
*/ | */ | |||
#define dvbpsi_DeleteSDT(p_sdt) \ | void dvbpsi_sdt_delete(dvbpsi_sdt_t *p_sdt); | |||
do { \ | ||||
dvbpsi_EmptySDT(p_sdt); \ | ||||
free(p_sdt); \ | ||||
} while(0); | ||||
/************************************************************************** *** | /************************************************************************** *** | |||
* dvbpsi_SDTAddService | * dvbpsi_sdt_service_add | |||
************************************************************************** ***/ | ************************************************************************** ***/ | |||
/*! | /*! | |||
* \fn dvbpsi_sdt_service_t* dvbpsi_SDTAddService(dvbpsi_sdt_t* p_sdt, | * \fn dvbpsi_sdt_service_t* dvbpsi_sdt_service_add(dvbpsi_sdt_t* p_sdt, | |||
uint16_t i_service_id, | uint16_t i_service_id, | |||
int b_eit_schedule, | bool b_eit_schedule, | |||
int b_eit_present, | bool b_eit_present, | |||
uint8_t i_running_status, | uint8_t i_running_status, | |||
int b_free_ca) | bool b_free_ca) | |||
* \brief Add a service description at the end of the SDT. | * \brief Add a service description at the end of the SDT. | |||
* \param p_sdt pointer to the SDT structure | * \param p_sdt pointer to the SDT structure | |||
* \param i_service_id Service ID | * \param i_service_id Service ID | |||
* \param b_eit_schedule EIT Schedule flag | * \param b_eit_schedule EIT Schedule flag | |||
* \param b_eit_present EIT Present/Following flag | * \param b_eit_present EIT Present/Following flag | |||
* \param i_running_status Running status | * \param i_running_status Running status | |||
* \param b_free_ca Free CA flag | * \param b_free_ca Free CA flag | |||
* \return a pointer to the added service description. | * \return a pointer to the added service description. | |||
*/ | */ | |||
__attribute__((deprecated)) | dvbpsi_sdt_service_t *dvbpsi_sdt_service_add(dvbpsi_sdt_t* p_sdt, | |||
dvbpsi_sdt_service_t *dvbpsi_SDTAddService(dvbpsi_sdt_t* p_sdt, | uint16_t i_service_id, bool b_eit_schedule, bool b_eit_present, | |||
uint16_t i_service_id, int b_eit_schedule, int b_eit_present, | uint8_t i_running_status, bool b_free_ca); | |||
uint8_t i_running_status,int b_free_ca); | ||||
/************************************************************************** *** | /************************************************************************** *** | |||
* dvbpsi_SDTServiceAddDescriptor | * dvbpsi_sdt_service_descriptor_add | |||
************************************************************************** ***/ | ************************************************************************** ***/ | |||
/*! | /*! | |||
* \fn dvbpsi_descriptor_t *dvbpsi_SDTServiceAddDescriptor( | * \fn dvbpsi_descriptor_t *dvbpsi_sdt_service_descriptor_add( | |||
dvbpsi_sdt_service_t *p_serv ice, | dvbpsi_sdt_service_t *p_serv ice, | |||
uint8_t i_tag, uint8_t i_len gth, | uint8_t i_tag, uint8_t i_len gth, | |||
uint8_t *p_data) | uint8_t *p_data) | |||
* \brief Add a descriptor in the SDT service. | * \brief Add a descriptor in the SDT service. | |||
* \param p_service pointer to the service structure | * \param p_service pointer to the service structure | |||
* \param i_tag descriptor's tag | * \param i_tag descriptor's tag | |||
* \param i_length descriptor's length | * \param i_length descriptor's length | |||
* \param p_data descriptor's data | * \param p_data descriptor's data | |||
* \return a pointer to the added descriptor. | * \return a pointer to the added descriptor. | |||
*/ | */ | |||
__attribute__((deprecated)) | dvbpsi_descriptor_t *dvbpsi_sdt_service_descriptor_add( | |||
dvbpsi_descriptor_t *dvbpsi_SDTServiceAddDescriptor( | ||||
dvbpsi_sdt_service_t *p_serv ice, | dvbpsi_sdt_service_t *p_serv ice, | |||
uint8_t i_tag, uint8_t i_len gth, | uint8_t i_tag, uint8_t i_len gth, | |||
uint8_t *p_data); | uint8_t *p_data); | |||
/************************************************************************** *** | /************************************************************************** *** | |||
* dvbpsi_GenSDTSections | * dvbpsi_sdt_sections_generate | |||
************************************************************************** *** | ************************************************************************** *** | |||
* Generate SDT sections based on the dvbpsi_sdt_t structure. | * Generate SDT sections based on the dvbpsi_sdt_t structure. | |||
************************************************************************** ***/ | ************************************************************************** ***/ | |||
/*! | ||||
* \fn dvbpsi_psi_section_t* dvbpsi_sdt_sections_generate(dvbpsi_t *p_dvbps | ||||
i, | ||||
dvbpsi_sdt_t * p_sdt) | ||||
* \brief SDT generator | ||||
* \param p_dvbpsi handle to dvbpsi with attached decoder | ||||
* \param p_sdt SDT structure | ||||
* \return a pointer to the list of generated PSI sections. | ||||
* | ||||
* Generate SDT sections based on the dvbpsi_sdt_t structure. | ||||
*/ | ||||
dvbpsi_psi_section_t *dvbpsi_sdt_sections_generate(dvbpsi_t *p_dvbpsi, dvbp | ||||
si_sdt_t * p_sdt); | ||||
/************************************************************************** | ||||
*** | ||||
* deprecated API's | ||||
************************************************************************** | ||||
***/ | ||||
__attribute__((deprecated)) | ||||
int dvbpsi_AttachSDT(dvbpsi_decoder_t * p_psi_decoder, uint8_t i_table_id, | ||||
uint16_t i_extension, dvbpsi_sdt_callback pf_callback, | ||||
void* p_cb_data); | ||||
__attribute__((deprecated)) | ||||
void dvbpsi_DetachSDT(dvbpsi_demux_t * p_demux, uint8_t i_table_id, | ||||
uint16_t i_extension); | ||||
__attribute__((deprecated)) | ||||
void dvbpsi_InitSDT(dvbpsi_sdt_t *p_sdt, uint16_t i_ts_id, uint8_t i_versio | ||||
n, | ||||
int b_current_next, uint16_t i_network_id); | ||||
__attribute__((deprecated)) void dvbpsi_EmptySDT(dvbpsi_sdt_t *p_sdt); | ||||
__attribute__((deprecated)) | ||||
dvbpsi_sdt_service_t *dvbpsi_SDTAddService(dvbpsi_sdt_t* p_sdt, | ||||
uint16_t i_service_id, int b_eit_schedule, int b_eit_present, | ||||
uint8_t i_running_status, int b_free_ca); | ||||
__attribute__((deprecated)) | ||||
dvbpsi_descriptor_t *dvbpsi_SDTServiceAddDescriptor( | ||||
dvbpsi_sdt_service_t *p_serv | ||||
ice, | ||||
uint8_t i_tag, uint8_t i_len | ||||
gth, | ||||
uint8_t *p_data); | ||||
__attribute__((deprecated)) | ||||
dvbpsi_psi_section_t *dvbpsi_GenSDTSections(dvbpsi_sdt_t * p_sdt); | dvbpsi_psi_section_t *dvbpsi_GenSDTSections(dvbpsi_sdt_t * p_sdt); | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
}; | }; | |||
#endif | #endif | |||
#else | #else | |||
#error "Multiple inclusions of sdt.h" | #error "Multiple inclusions of sdt.h" | |||
#endif | #endif | |||
End of changes. 37 change blocks. | ||||
72 lines changed or deleted | 114 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |