libdvbpsi
2.0.0-git
MPEG Transport Stream PSI table parser
|
Application interface for all DVB/PSI decoders. More...
Go to the source code of this file.
Data Structures | |
struct | dvbpsi_s |
DVBPSI handle structure. More... | |
struct | dvbpsi_decoder_s |
PSI decoder structure. More... | |
Macros | |
#define | DVBPSI_VERSION 2.0.0 |
#define | DVBPSI_VERSION_INT ((2<<16)+(0<<8)+0) |
#define | DVBPSI_GCC_VERSION(maj, min) (0) |
Helper macro for GCC version check. | |
#define | DVBPSI_DECODER(x) ((dvbpsi_decoder_t *)(x)) |
Helper macro for casting a private decoder into a dvbpsi_decoder_t. | |
#define | DVBPSI_DECODER_COMMON |
Common members for all dvbpsi table decoders. These should be the first members of a table decoder struct, such that they can be casted to a dvbpsi_decoder_t type. More... | |
Typedefs | |
typedef struct dvbpsi_s | dvbpsi_t |
DVBPSI handle structure abstration. More... | |
typedef enum dvbpsi_msg_level | dvbpsi_msg_level_t |
DVBPSI message level enumeration type definition. | |
typedef void(* | dvbpsi_message_cb) (dvbpsi_t *handle, const dvbpsi_msg_level_t level, const char *msg) |
Callback type definition. | |
typedef struct dvbpsi_decoder_s | dvbpsi_decoder_t |
dvbpsi_decoder_t type definition. | |
typedef struct dvbpsi_psi_section_s | dvbpsi_psi_section_t |
dvbpsi_psi_section_t type definition. | |
typedef void(* | dvbpsi_callback_gather_t) (dvbpsi_t *p_dvbpsi, dvbpsi_psi_section_t *p_section) |
Callback used for gathering psi sections on behalf of PSI decoders. More... | |
typedef void(* | dvbpsi_callback_new_t) (dvbpsi_t *p_dvbpsi, uint8_t i_table_id, uint16_t i_extension, void *p_data) |
Callback used in case of a new PSI table is detected. More... | |
typedef void(* | dvbpsi_callback_del_t) (dvbpsi_t *p_dvbpsi, uint8_t i_table_id, uint16_t i_extension) |
Callback used to delete PSI table. More... | |
Enumerations | |
enum | dvbpsi_msg_level { DVBPSI_MSG_NONE = -1 , DVBPSI_MSG_ERROR = 0 , DVBPSI_MSG_WARN = 1 , DVBPSI_MSG_DEBUG = 2 } |
DVBPSI message level enumeration type. More... | |
Functions | |
dvbpsi_t * | dvbpsi_new (dvbpsi_message_cb callback, enum dvbpsi_msg_level level) |
Create a new dvbpsi_t handle to be used by PSI decoders or encoders. More... | |
void | dvbpsi_delete (dvbpsi_t *p_dvbpsi) |
Deletes a dvbpsi_t handle created with dvbpsi_new. More... | |
bool | dvbpsi_packet_push (dvbpsi_t *p_dvbpsi, const uint8_t *p_data) |
void * | dvbpsi_decoder_new (dvbpsi_callback_gather_t pf_gather, const int i_section_max_size, const bool b_discontinuity, const size_t psi_size) |
Create a new (private) dvbpsi decoder. More... | |
void | dvbpsi_decoder_delete (dvbpsi_decoder_t *p_decoder) |
Deletes decoder struct and frees any associated PSI section memory. Any memory attached to the dvbpsi_decoder_t::p_priv pointer member is the responsibility of the calling application. More... | |
void | dvbpsi_decoder_reset (dvbpsi_decoder_t *p_decoder, const bool b_force) |
Resets a decoder internal state. More... | |
bool | dvbpsi_decoder_psi_sections_completed (dvbpsi_decoder_t *p_decoder) |
Have all sections for this decoder been received? More... | |
bool | dvbpsi_decoder_psi_section_add (dvbpsi_decoder_t *p_decoder, dvbpsi_psi_section_t *p_section) |
Add a section to the dvbpsi_decoder_t::p_sections list. More... | |
__attribute__ ((deprecated, unused)) bool dvbpsi_decoder_present(dvbpsi_t *p_dvbpsi) | |
dvbpsi_atsc_DetachEIT is deprecated use More... | |
Application interface for all DVB/PSI decoders.
>
Application interface for all DVB/PSI decoders. The generic decoder structure is public so that external decoders are allowed.
#define DVBPSI_DECODER_COMMON |
Common members for all dvbpsi table decoders. These should be the first members of a table decoder struct, such that they can be casted to a dvbpsi_decoder_t type.
Pointer to next decoder the list
#define DVBPSI_VERSION 2.0.0 |
Human readible DVBPSI version
#define DVBPSI_VERSION_INT ((2<<16)+(0<<8)+0) |
Machine readible DVBPSI version
void(* dvbpsi_callback_del_t)(dvbpsi_t *p_dvbpsi, uint8_t i_table_id, uint16_t i_extension) |
Callback used to delete PSI table.
table extention to attach
p_dvbpsi | pointer to dvbpsi handle |
i_table_id | table id to attach |
void(* dvbpsi_callback_gather_t)(dvbpsi_t< em >p_dvbpsi, dvbpsi_psi_section_t</em > p_section) |
Callback used for gathering psi sections on behalf of PSI decoders.
pointer to psi section
p_dvbpsi | pointer to dvbpsi handle |
void(* dvbpsi_callback_new_t)(dvbpsi_t *p_dvbpsi, uint8_t i_table_id, uint16_t i_extension, void *p_data) |
Callback used in case of a new PSI table is detected.
pointer to callback data
p_dvbpsi | pointer to dvbpsi handle |
i_table_id | table id to attach |
i_extension | table extention to attach |
enum dvbpsi_msg_level |
__attribute__ | ( | (deprecated, unused) | ) |
dvbpsi_atsc_DetachEIT is deprecated use
dvbpsi_atsc_DeleteVCT is deprecated use
dvbpsi_atsc_EmptyVCT is deprecated use
dvbpsi_atsc_NewVCT is deprecated use
dvbpsi_atsc_InitVCT is deprecated use
dvbpsi_atsc_DetachVCT is deprecated use
dvbpsi_atsc_DeleteSTT is deprecated use
dvbpsi_atsc_EmptySTT is deprecated use
dvbpsi_atsc_NewSTT is deprecated use
dvbpsi_atsc_InitSTT is deprecated use
dvbpsi_atsc_DetachSTT is deprecated use
dvbpsi_atsc_DeleteMGT is deprecated use
dvbpsi_atsc_EmptyMGT is deprecated use
dvbpsi_atsc_NewMGT is deprecated use
dvbpsi_atsc_InitMGT is deprecated use
dvbpsi_atsc_DetachMGT is deprecated use
dvbpsi_atsc_DeleteETT is deprecated use
dvbpsi_atsc_EmptyETT is deprecated use
dvbpsi_atsc_NewETT is deprecated use
dvbpsi_atsc_InitETT is deprecated use
dvbpsi_atsc_DetachETT is deprecated use
dvbpsi_atsc_DeleteEIT is deprecated use
dvbpsi_atsc_EmptyEIT is deprecated use
dvbpsi_atsc_NewEIT is deprecated use
dvbpsi_atsc_InitEIT is deprecated use
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached. |
i_table_id | Table ID, 0xCB. |
i_extension | Table ID extension, here TS ID. |
p_eit | pointer to the EIT structure |
i_table_id | Table ID, 0xCB. |
i_extension | Table ID extension, here TS ID. |
i_version | EIT version |
i_protocol | PSIP Protocol version. |
i_source_id | Source id. |
b_current_next | current next indicator |
i_table_id | Table ID, 0xCB. |
i_extension | Table ID extension, here TS ID. |
i_version | EIT version |
i_protocol | PSIP Protocol version. |
i_source_id | Source id. |
b_current_next | current next indicator |
p_eit | pointer to the EIT structure |
p_eit | pointer to the EIT structure |
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached |
i_table_id | Table ID, 0xCD. |
i_extension | Table ID extension, normally 0x0000. |
p_ett | pointer to the ETT structure |
i_table_id | Table ID, 0xCC. |
i_extension | Table ID extension, normally 0x0000. |
i_version | version |
i_protocol | PSIP Protocol version. |
i_etm_id | ETM Identifier. |
b_current_next | current next indicator |
i_table_id | Table ID, 0xCC. |
i_extension | Table ID extension, normally 0x0000. |
i_version | version |
i_protocol | PSIP Protocol version. |
i_etm_id | ETM Identifier. |
b_current_next | current next indicator |
p_ett | pointer to the ETT structure |
p_ett | pointer to the ETT structure |
Destroy a MGT decoder.
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached |
i_table_id | Table ID, 0xC7. |
i_extension | Table ID extension, here 0x0000. |
p_mgt | pointer to the MGT structure |
i_table_id | Table ID, 0xC7. |
i_extension | Table ID extension, here 0x0000. |
i_version | MGT version |
i_protocol | PSIP Protocol version. |
b_current_next | current next indicator |
i_table_id | Table ID, 0xC7. |
i_extension | Table ID extension, here 0x0000. |
i_version | MGT version |
i_protocol | PSIP Protocol version. |
b_current_next | current next indicator |
p_mgt | pointer to the MGT structure |
Clean and free a dvbpsi_mgt_t structure.
p_mgt | pointer to the MGT structure |
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached. |
i_table_id | Table ID, 0xCD. |
i_extension | Table extension, ignored as this should always be 0. (Required to match prototype for demux) |
p_stt | pointer to the STT structure |
i_table_id | Table ID, 0xCD. |
i_extension | Table extension, ignored as this should always be 0. |
i_protocol | PSIP Protocol version. |
b_current_next | current next indicator |
i_table_id | Table ID, 0xCD. |
i_extension | Table extension, ignored as this should always be 0. |
i_version | PSIP Protocol version. |
b_current_next | current next indicator |
Clean a dvbpsi_atsc_stt_t structure.
p_stt | pointer to the STT structure |
Clean a dvbpsi_atsc_stt_t structure.
p_stt | pointer to the STT structure |
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached. |
i_table_id | Table ID, 0xC8 or 0xC9. |
i_extension | Table ID extension, here TS ID. |
i_table_id | Table ID, 0xC8 or 0xC9. |
i_extension | Table ID extension, here TS ID. |
i_protocol | PSIP Protocol version. |
b_cable_vct | Whether this is CVCT or a TVCT. |
i_version | VCT version |
b_current_next | current next indicator |
i_table_id | Table ID, 0xC8 or 0xC9. |
i_extension | Table ID extension, here TS ID. |
i_protocol | PSIP Protocol version. |
b_cable_vct | Whether this is CVCT or a TVCT. |
i_version | VCT version |
b_current_next | current next indicator |
Clean a dvbpsi_vct_t structure.
p_vct | pointer to the VCT structure |
Clean a dvbpsi_vct_t structure.
p_vct | pointer to the VCT structure |
dvbpsi_atsc_DeleteEIT is deprecated use
dvbpsi_atsc_EmptyEIT is deprecated use
dvbpsi_atsc_NewEIT is deprecated use
dvbpsi_atsc_InitEIT is deprecated use
dvbpsi_atsc_DetachEIT is deprecated use
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached |
i_table_id | Table ID, 0xCB. |
i_extension | Table ID extension, here TS ID. |
pf_callback | function to call back on new EIT. |
p_priv | private data given in argument to the callback. |
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached. |
i_table_id | Table ID, 0xCB. |
i_extension | Table ID extension, here TS ID. |
p_eit | pointer to the EIT structure |
i_table_id | Table ID, 0xCB. |
i_extension | Table ID extension, here TS ID. |
i_version | EIT version |
i_protocol | PSIP Protocol version. |
i_source_id | Source id. |
b_current_next | current next indicator |
i_table_id | Table ID, 0xCB. |
i_extension | Table ID extension, here TS ID. |
i_version | EIT version |
i_protocol | PSIP Protocol version. |
i_source_id | Source id. |
b_current_next | current next indicator |
p_eit | pointer to the EIT structure |
p_eit | pointer to the EIT structure |
dvbpsi_atsc_DetachEIT is deprecated use
dvbpsi_atsc_DeleteETT is deprecated use
dvbpsi_atsc_EmptyETT is deprecated use
dvbpsi_atsc_NewETT is deprecated use
dvbpsi_atsc_InitETT is deprecated use
dvbpsi_atsc_DetachETT is deprecated use
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached |
i_table_id | Table ID, 0xCC. |
i_extension | Table ID extension, normally 0x0000. |
pf_callback | function to call back on new ETT. |
p_priv | private data given in argument to the callback. |
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached |
i_table_id | Table ID, 0xCD. |
i_extension | Table ID extension, normally 0x0000. |
p_ett | pointer to the ETT structure |
i_table_id | Table ID, 0xCC. |
i_extension | Table ID extension, normally 0x0000. |
i_version | version |
i_protocol | PSIP Protocol version. |
i_etm_id | ETM Identifier. |
b_current_next | current next indicator |
i_table_id | Table ID, 0xCC. |
i_extension | Table ID extension, normally 0x0000. |
i_version | version |
i_protocol | PSIP Protocol version. |
i_etm_id | ETM Identifier. |
b_current_next | current next indicator |
p_ett | pointer to the ETT structure |
p_ett | pointer to the ETT structure |
dvbpsi_atsc_DetachEIT is deprecated use
dvbpsi_atsc_DeleteMGT is deprecated use
dvbpsi_atsc_EmptyMGT is deprecated use
dvbpsi_atsc_NewMGT is deprecated use
dvbpsi_atsc_InitMGT is deprecated use
dvbpsi_atsc_DetachMGT is deprecated use
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached |
i_table_id | Table ID, 0xC7. |
i_extension | Table ID extension, here 0x0000. |
pf_callback | function to call back on new MGT. |
p_priv | private data given in argument to the callback. |
Destroy a MGT decoder.
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached |
i_table_id | Table ID, 0xC7. |
i_extension | Table ID extension, here 0x0000. |
p_mgt | pointer to the MGT structure |
i_table_id | Table ID, 0xC7. |
i_extension | Table ID extension, here 0x0000. |
i_version | MGT version |
i_protocol | PSIP Protocol version. |
b_current_next | current next indicator |
i_table_id | Table ID, 0xC7. |
i_extension | Table ID extension, here 0x0000. |
i_version | MGT version |
i_protocol | PSIP Protocol version. |
b_current_next | current next indicator |
p_mgt | pointer to the MGT structure |
Clean and free a dvbpsi_mgt_t structure.
p_mgt | pointer to the MGT structure |
dvbpsi_atsc_DetachEIT is deprecated use
dvbpsi_atsc_DeleteSTT is deprecated use
dvbpsi_atsc_EmptySTT is deprecated use
dvbpsi_atsc_NewSTT is deprecated use
dvbpsi_atsc_InitSTT is deprecated use
dvbpsi_atsc_DetachSTT is deprecated use
p_eit | pointer to the EIT structure |
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached |
i_table_id | Table ID, 0xCD. |
i_extension | Table ID extension, here it should be 0. |
pf_stt_callback | function to call back on new STT. |
p_priv | private data given in argument to the callback. |
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached. |
i_table_id | Table ID, 0xCD. |
i_extension | Table extension, ignored as this should always be 0. (Required to match prototype for demux) |
p_stt | pointer to the STT structure |
i_table_id | Table ID, 0xCD. |
i_extension | Table extension, ignored as this should always be 0. |
i_protocol | PSIP Protocol version. |
b_current_next | current next indicator |
i_table_id | Table ID, 0xCD. |
i_extension | Table extension, ignored as this should always be 0. |
i_version | PSIP Protocol version. |
b_current_next | current next indicator |
Clean a dvbpsi_atsc_stt_t structure.
p_stt | pointer to the STT structure |
Clean a dvbpsi_atsc_stt_t structure.
p_stt | pointer to the STT structure |
dvbpsi_atsc_DetachEIT is deprecated use
dvbpsi_atsc_DeleteVCT is deprecated use
dvbpsi_atsc_EmptyVCT is deprecated use
dvbpsi_atsc_NewVCT is deprecated use
dvbpsi_atsc_InitVCT is deprecated use
dvbpsi_atsc_DetachVCT is deprecated use
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached. |
i_table_id | Table ID, 0xC8 or 0xC9. |
i_extension | Table ID extension, here TS ID. |
pf_vct_callback | function to call back on new VCT. |
p_priv | private data given in argument to the callback. |
p_dvbpsi | dvbpsi handle to Subtable demultiplexor to which the decoder is attached. |
i_table_id | Table ID, 0xC8 or 0xC9. |
i_extension | Table ID extension, here TS ID. |
i_table_id | Table ID, 0xC8 or 0xC9. |
i_extension | Table ID extension, here TS ID. |
i_protocol | PSIP Protocol version. |
b_cable_vct | Whether this is CVCT or a TVCT. |
i_version | VCT version |
b_current_next | current next indicator |
i_table_id | Table ID, 0xC8 or 0xC9. |
i_extension | Table ID extension, here TS ID. |
i_protocol | PSIP Protocol version. |
b_cable_vct | Whether this is CVCT or a TVCT. |
i_version | VCT version |
b_current_next | current next indicator |
Clean a dvbpsi_vct_t structure.
p_vct | pointer to the VCT structure |
Clean a dvbpsi_vct_t structure.
p_vct | pointer to the VCT structure |
References dvbpsi_atsc_eit_empty(), dvbpsi_atsc_ett_empty(), dvbpsi_atsc_mgt_empty(), dvbpsi_atsc_stt_empty(), and dvbpsi_atsc_vct_empty().
void dvbpsi_decoder_delete | ( | dvbpsi_decoder_t * | p_decoder | ) |
Deletes decoder struct and frees any associated PSI section memory. Any memory attached to the dvbpsi_decoder_t::p_priv pointer member is the responsibility of the calling application.
p_decoder | pointer to dvbpsi_decoder_t with decoder |
Delets a dvbpsi_t handle by calling free(handle). Make sure to detach any decoder or encoder before deleting the dvbpsi handle.
void * dvbpsi_decoder_new | ( | dvbpsi_callback_gather_t | pf_gather, |
const int | i_section_max_size, | ||
const bool | b_discontinuity, | ||
const size_t | psi_size | ||
) |
Create a new (private) dvbpsi decoder.
pf_gather | pointer to gather function for PSI decoder. |
i_section_max_size | Max size of a section for this decoder |
b_discontinuity | Discontinuity flag |
psi_size | size of new PSI struct, eg: sizeof(dvbpsi_pat_t) |
Creates a void pointer that points to a private dvbpsi decoder struct (eg: dvbpsi_pat_t). The first elements in this newly created decoder should contain DVBPSI_DECODER_COMMON, which corresponds to a dvbpsi_decoder_t. Upon return the pointer should be casted to the correct type. Delete the pointer with
bool dvbpsi_decoder_psi_section_add | ( | dvbpsi_decoder_t * | p_decoder, |
dvbpsi_psi_section_t * | p_section | ||
) |
Add a section to the dvbpsi_decoder_t::p_sections list.
p_decoder | pointer to dvbpsi_decoder_t with decoder |
p_section | PSI section to add to dvbpsi_decoder_t::p_sections list |
bool dvbpsi_decoder_psi_sections_completed | ( | dvbpsi_decoder_t * | p_decoder | ) |
Have all sections for this decoder been received?
p_decoder | pointer to dvbpsi_decoder_t with decoder |
void dvbpsi_decoder_reset | ( | dvbpsi_decoder_t * | p_decoder, |
const bool | b_force | ||
) |
Resets a decoder internal state.
p_decoder | pointer to dvbpsi_decoder_t with decoder |
b_force | If 'b_force' is true then dvbpsi_decoder_t::b_current_valid is set to false, invalidating the current section. |
void dvbpsi_delete | ( | dvbpsi_t * | p_dvbpsi | ) |
Deletes a dvbpsi_t handle created with dvbpsi_new.
p_dvbpsi | pointer to dvbpsi_t malloced data |
Delets a dvbpsi_t handle by calling free(handle). Make sure to detach any decoder of encoder before deleting the dvbpsi handle.
dvbpsi_t * dvbpsi_new | ( | dvbpsi_message_cb | callback, |
enum dvbpsi_msg_level | level | ||
) |
Create a new dvbpsi_t handle to be used by PSI decoders or encoders.
callback | message callback handler, if NULL then no errors, warnings or debug messages will be sent to the caller application |
level | enum dvbpsi_msg_level for filtering logging messages |
Creates a handle to use with PSI decoder and encoder API functions. The handle must be freed with dvbpsi_delete().