libdvbpsi
1.3.0
|
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... | |
Defines | |
#define | DVBPSI_VERSION 1.3.0 |
#define | DVBPSI_VERSION_INT ((1<<16)+(3<<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. | |
Typedefs | |
typedef struct dvbpsi_s | dvbpsi_t |
DVBPSI handle structure abstration. | |
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. | |
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. | |
void | dvbpsi_delete (dvbpsi_t *p_dvbpsi) |
Deletes a dvbpsi_t handle created with dvbpsi_new. | |
bool | dvbpsi_packet_push (dvbpsi_t *p_dvbpsi, uint8_t *p_data) |
Injection of a TS packet into a PSI decoder. | |
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. | |
void | dvbpsi_decoder_delete (dvbpsi_decoder_t *p_decoder) |
Deletes decoder struct and frees its memory. | |
void | dvbpsi_decoder_reset (dvbpsi_decoder_t *p_decoder, const bool b_force) |
Resets a decoder internal state. | |
bool | dvbpsi_decoder_psi_sections_completed (dvbpsi_decoder_t *p_decoder) |
Have all sections for this decoder been received? | |
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. | |
bool | dvbpsi_decoder_present (dvbpsi_t *p_dvbpsi) |
Determines if a decoder has been attached to dvbpsi_t handle. |
Application interface for all DVB/PSI decoders.
>
#define DVBPSI_DECODER_COMMON |
\ \ uint8_t i_magic[3]; \ bool b_complete_header; \ bool b_discontinuity; \ bool b_current_valid; \ uint8_t i_continuity_counter; \ uint8_t i_last_section_number; \ dvbpsi_psi_section_t *p_current_section; \ dvbpsi_psi_section_t *p_sections; \ dvbpsi_callback_gather_t pf_gather; \ int i_section_max_size; \ int i_need; \
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.
#define DVBPSI_VERSION 1.3.0 |
Human readible DVBPSI version
#define DVBPSI_VERSION_INT ((1<<16)+(3<<8)+0) |
Machine readible DVBPSI version
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.
pointer to psi section
enum dvbpsi_msg_level |
void dvbpsi_decoder_delete | ( | dvbpsi_decoder_t * | p_decoder | ) |
Deletes decoder struct and frees its memory.
p_decoder | pointer to dvbpsi_decoder_t with decoder |
Delets a dvbpsi_t handle by calling free(handle). Make sure to detach any decoder of 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_present | ( | dvbpsi_t * | p_dvbpsi | ) |
Determines if a decoder has been attached to dvbpsi_t handle.
p_dvbpsi | handle to dvbpsi with attached decoder |
Determines if a decoder is attached to this dvbpsi_t handle. When the dvbpsi handle is invalid the fuction will return false.
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().
bool dvbpsi_packet_push | ( | dvbpsi_t * | p_dvbpsi, |
uint8_t * | p_data | ||
) |
Injection of a TS packet into a PSI decoder.
p_dvbpsi | handle to dvbpsi with attached decoder |
p_data | pointer to a 188 bytes playload of a TS packet |
Injection of a TS packet into a PSI decoder.