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/