libdvbv5  1.4.0
Library to work with Digital TV streams
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
descriptors.h File Reference

Provides a way to handle MPEG-TS descriptors found on Digital TV streams. More...

#include <unistd.h>
#include <stdint.h>
#include <arpa/inet.h>
Include dependency graph for descriptors.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  dvb_desc
 Linked list containing the several descriptors found on a MPEG-TS table. More...
 
struct  dvb_descriptor
 Contains the parser information for the MPEG-TS parser code. More...
 

Macros

#define DVB_MAX_PAYLOAD_PACKET_SIZE
 Maximum size of a table session to be parsed. More...
 
#define DVB_CRC_SIZE
 number of bytes for the descriptor's CRC check More...
 

Typedefs

typedef void(* dvb_table_init_func )(struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, void **table)
 Function prototype for a function that initializes the descriptors parsing. More...
 
typedef int(* dvb_desc_init_func )(struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct dvb_desc *desc)
 Function prototype for the descriptors parsing init code. More...
 
typedef void(* dvb_desc_print_func )(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 Function prototype for the descriptors parsing print code. More...
 
typedef void(* dvb_desc_free_func )(struct dvb_desc *desc)
 Function prototype for the descriptors memory free code. More...
 

Enumerations

enum  descriptors {
  video_stream_descriptor, audio_stream_descriptor, hierarchy_descriptor, registration_descriptor,
  ds_alignment_descriptor, target_background_grid_descriptor, video_window_descriptor, conditional_access_descriptor,
  iso639_language_descriptor, system_clock_descriptor, multiplex_buffer_utilization_descriptor, copyright_descriptor,
  maximum_bitrate_descriptor, private_data_indicator_descriptor, smoothing_buffer_descriptor, std_descriptor,
  ibp_descriptor, mpeg4_video_descriptor, mpeg4_audio_descriptor, iod_descriptor,
  sl_descriptor, fmc_descriptor, external_es_id_descriptor, muxcode_descriptor,
  fmxbuffersize_descriptor, multiplexbuffer_descriptor, content_labeling_descriptor, metadata_pointer_descriptor,
  metadata_descriptor, metadata_std_descriptor, AVC_video_descriptor, ipmp_descriptor,
  AVC_timing_and_HRD_descriptor, mpeg2_aac_audio_descriptor, flexmux_timing_descriptor, network_name_descriptor,
  service_list_descriptor, stuffing_descriptor, satellite_delivery_system_descriptor, cable_delivery_system_descriptor,
  VBI_data_descriptor, VBI_teletext_descriptor, bouquet_name_descriptor, service_descriptor,
  country_availability_descriptor, linkage_descriptor, NVOD_reference_descriptor, time_shifted_service_descriptor,
  short_event_descriptor, extended_event_descriptor, time_shifted_event_descriptor, component_descriptor,
  mosaic_descriptor, stream_identifier_descriptor, CA_identifier_descriptor, content_descriptor,
  parental_rating_descriptor, teletext_descriptor, telephone_descriptor, local_time_offset_descriptor,
  subtitling_descriptor, terrestrial_delivery_system_descriptor, multilingual_network_name_descriptor, multilingual_bouquet_name_descriptor,
  multilingual_service_name_descriptor, multilingual_component_descriptor, private_data_specifier_descriptor, service_move_descriptor,
  short_smoothing_buffer_descriptor, frequency_list_descriptor, partial_transport_stream_descriptor, data_broadcast_descriptor,
  scrambling_descriptor, data_broadcast_id_descriptor, transport_stream_descriptor, DSNG_descriptor,
  PDC_descriptor, AC_3_descriptor, ancillary_data_descriptor, cell_list_descriptor,
  cell_frequency_link_descriptor, announcement_support_descriptor, application_signalling_descriptor, adaptation_field_data_descriptor,
  service_identifier_descriptor, service_availability_descriptor, default_authority_descriptor, related_content_descriptor,
  TVA_id_descriptor, content_identifier_descriptor, time_slice_fec_identifier_descriptor, ECM_repetition_rate_descriptor,
  S2_satellite_delivery_system_descriptor, enhanced_AC_3_descriptor, DTS_descriptor, AAC_descriptor,
  XAIT_location_descriptor, FTA_content_management_descriptor, extension_descriptor, CUE_identifier_descriptor,
  extended_channel_name, service_location, component_name_descriptor, logical_channel_number_descriptor,
  carousel_id_descriptor, association_tag_descriptor, deferred_association_tags_descriptor, hierarchical_transmission_descriptor,
  digital_copy_control_descriptor, network_identifier_descriptor, partial_transport_stream_time_descriptor, audio_component_descriptor,
  hyperlink_descriptor, target_area_descriptor, data_contents_descriptor, video_decode_control_descriptor,
  download_content_descriptor, CA_EMM_TS_descriptor, CA_contract_information_descriptor, CA_service_descriptor,
  TS_Information_descriptior, extended_broadcaster_descriptor, logo_transmission_descriptor, basic_local_event_descriptor,
  reference_descriptor, node_relation_descriptor, short_node_information_descriptor, STC_reference_descriptor,
  series_descriptor, event_group_descriptor, SI_parameter_descriptor, broadcaster_Name_Descriptor,
  component_group_descriptor, SI_prime_TS_descriptor, board_information_descriptor, LDT_linkage_descriptor,
  connected_transmission_descriptor, content_availability_descriptor, service_group_descriptor, carousel_compatible_composite_descriptor,
  conditional_playback_descriptor, ISDBT_delivery_system_descriptor, partial_reception_descriptor, emergency_information_descriptor,
  data_component_descriptor, system_management_descriptor, atsc_stuffing_descriptor, atsc_ac3_audio_descriptor,
  atsc_caption_service_descriptor, atsc_content_advisory_descriptor, atsc_extended_channel_descriptor, atsc_service_location_descriptor,
  atsc_time_shifted_service_descriptor, atsc_component_name_descriptor, atsc_DCC_departing_request_descriptor, atsc_DCC_arriving_request_descriptor,
  atsc_redistribution_control_descriptor, atsc_ATSC_private_information_descriptor, atsc_genre_descriptor
}
 List containing all descriptors used by Digital TV MPEG-TS. More...
 

Functions

uint32_t dvb_bcd (uint32_t bcd)
 Converts from BCD to CPU integer internal representation. More...
 
void dvb_hexdump (struct dvb_v5_fe_parms *parms, const char *prefix, const unsigned char *buf, int len)
 dumps data into the logs in hexadecimal format More...
 
int dvb_desc_parse (struct dvb_v5_fe_parms *parms, const uint8_t *buf, uint16_t buflen, struct dvb_desc **head_desc)
 parse MPEG-TS descriptors More...
 
void dvb_desc_free (struct dvb_desc **list)
 frees a dvb_desc linked list More...
 
void dvb_desc_print (struct dvb_v5_fe_parms *parms, struct dvb_desc *desc)
 prints the contents of a struct dvb_desc linked list More...
 

Variables

const dvb_table_init_func dvb_table_initializers [256]
 Table with all possible descriptors. More...
 
const struct dvb_descriptor dvb_descriptors []
 Contains the parsers for the several descriptors. More...
 

Detailed Description

Provides a way to handle MPEG-TS descriptors found on Digital TV streams.

Author
Mauro Carvalho Chehab
Andre Roth

The descriptors are defined on:

Please submit bug report and patches to linux.nosp@m.-med.nosp@m.ia@vg.nosp@m.er.k.nosp@m.ernel.nosp@m..org

Definition in file descriptors.h.

Macro Definition Documentation

#define DVB_CRC_SIZE

number of bytes for the descriptor's CRC check

Definition at line 53 of file descriptors.h.

#define DVB_MAX_PAYLOAD_PACKET_SIZE

Maximum size of a table session to be parsed.

Definition at line 50 of file descriptors.h.

Typedef Documentation

typedef void(* dvb_desc_free_func)(struct dvb_desc *desc)

Function prototype for the descriptors memory free code.

Definition at line 181 of file descriptors.h.

typedef int(* dvb_desc_init_func)(struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct dvb_desc *desc)

Function prototype for the descriptors parsing init code.

Definition at line 175 of file descriptors.h.

typedef void(* dvb_desc_print_func)(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)

Function prototype for the descriptors parsing print code.

Definition at line 178 of file descriptors.h.

typedef void(* dvb_table_init_func)(struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, void **table)

Function prototype for a function that initializes the descriptors parsing.

Definition at line 61 of file descriptors.h.

Enumeration Type Documentation

List containing all descriptors used by Digital TV MPEG-TS.

Enumerator
video_stream_descriptor 
audio_stream_descriptor 
hierarchy_descriptor 
registration_descriptor 
ds_alignment_descriptor 
target_background_grid_descriptor 
video_window_descriptor 
conditional_access_descriptor 
iso639_language_descriptor 
system_clock_descriptor 
multiplex_buffer_utilization_descriptor 
copyright_descriptor 
maximum_bitrate_descriptor 
private_data_indicator_descriptor 
smoothing_buffer_descriptor 
std_descriptor 
ibp_descriptor 
mpeg4_video_descriptor 
mpeg4_audio_descriptor 
iod_descriptor 
sl_descriptor 
fmc_descriptor 
external_es_id_descriptor 
muxcode_descriptor 
fmxbuffersize_descriptor 
multiplexbuffer_descriptor 
content_labeling_descriptor 
metadata_pointer_descriptor 
metadata_descriptor 
metadata_std_descriptor 
AVC_video_descriptor 
ipmp_descriptor 
AVC_timing_and_HRD_descriptor 
mpeg2_aac_audio_descriptor 
flexmux_timing_descriptor 
network_name_descriptor 
service_list_descriptor 
stuffing_descriptor 
satellite_delivery_system_descriptor 
cable_delivery_system_descriptor 
VBI_data_descriptor 
VBI_teletext_descriptor 
bouquet_name_descriptor 
service_descriptor 
country_availability_descriptor 
linkage_descriptor 
NVOD_reference_descriptor 
time_shifted_service_descriptor 
short_event_descriptor 
extended_event_descriptor 
time_shifted_event_descriptor 
component_descriptor 
mosaic_descriptor 
stream_identifier_descriptor 
CA_identifier_descriptor 
content_descriptor 
parental_rating_descriptor 
teletext_descriptor 
telephone_descriptor 
local_time_offset_descriptor 
subtitling_descriptor 
terrestrial_delivery_system_descriptor 
multilingual_network_name_descriptor 
multilingual_bouquet_name_descriptor 
multilingual_service_name_descriptor 
multilingual_component_descriptor 
private_data_specifier_descriptor 
service_move_descriptor 
short_smoothing_buffer_descriptor 
frequency_list_descriptor 
partial_transport_stream_descriptor 
data_broadcast_descriptor 
scrambling_descriptor 
data_broadcast_id_descriptor 
transport_stream_descriptor 
DSNG_descriptor 
PDC_descriptor 
AC_3_descriptor 
ancillary_data_descriptor 
cell_list_descriptor 
cell_frequency_link_descriptor 
announcement_support_descriptor 
application_signalling_descriptor 
adaptation_field_data_descriptor 
service_identifier_descriptor 
service_availability_descriptor 
default_authority_descriptor 
related_content_descriptor 
TVA_id_descriptor 
content_identifier_descriptor 
time_slice_fec_identifier_descriptor 
ECM_repetition_rate_descriptor 
S2_satellite_delivery_system_descriptor 
enhanced_AC_3_descriptor 
DTS_descriptor 
AAC_descriptor 
XAIT_location_descriptor 
FTA_content_management_descriptor 
extension_descriptor 
CUE_identifier_descriptor 
extended_channel_name 
service_location 
component_name_descriptor 
logical_channel_number_descriptor 
carousel_id_descriptor 
association_tag_descriptor 
deferred_association_tags_descriptor 
hierarchical_transmission_descriptor 
digital_copy_control_descriptor 
network_identifier_descriptor 
partial_transport_stream_time_descriptor 
audio_component_descriptor 
hyperlink_descriptor 
target_area_descriptor 
data_contents_descriptor 
video_decode_control_descriptor 
download_content_descriptor 
CA_EMM_TS_descriptor 
CA_contract_information_descriptor 
CA_service_descriptor 
TS_Information_descriptior 
extended_broadcaster_descriptor 
logo_transmission_descriptor 
basic_local_event_descriptor 
reference_descriptor 
node_relation_descriptor 
short_node_information_descriptor 
STC_reference_descriptor 
series_descriptor 
event_group_descriptor 
SI_parameter_descriptor 
broadcaster_Name_Descriptor 
component_group_descriptor 
SI_prime_TS_descriptor 
board_information_descriptor 
LDT_linkage_descriptor 
connected_transmission_descriptor 
content_availability_descriptor 
service_group_descriptor 
carousel_compatible_composite_descriptor 
conditional_playback_descriptor 
ISDBT_delivery_system_descriptor 
partial_reception_descriptor 
emergency_information_descriptor 
data_component_descriptor 
system_management_descriptor 
atsc_stuffing_descriptor 
atsc_ac3_audio_descriptor 
atsc_caption_service_descriptor 
atsc_content_advisory_descriptor 
atsc_extended_channel_descriptor 
atsc_service_location_descriptor 
atsc_time_shifted_service_descriptor 
atsc_component_name_descriptor 
atsc_DCC_departing_request_descriptor 
atsc_DCC_arriving_request_descriptor 
atsc_redistribution_control_descriptor 
atsc_ATSC_private_information_descriptor 
atsc_genre_descriptor 

Definition at line 211 of file descriptors.h.

Function Documentation

uint32_t dvb_bcd ( uint32_t  bcd)

Converts from BCD to CPU integer internal representation.

Parameters
bcdvalue in BCD encoding
void dvb_desc_free ( struct dvb_desc **  list)

frees a dvb_desc linked list

Parameters
liststruct dvb_desc pointer.
int dvb_desc_parse ( struct dvb_v5_fe_parms parms,
const uint8_t *  buf,
uint16_t  buflen,
struct dvb_desc **  head_desc 
)

parse MPEG-TS descriptors

Parameters
parmsStruct dvb_v5_fe_parms pointer
bufBuffer with data to be parsed
buflenSize of the buffer to be parsed
head_descpointer to the place to store the parsed data

This function takes a buf as argument and parses it to find the MPEG-TS descriptors inside it, creating a linked list.

On success, head_desc will be allocated and filled with a linked list with the descriptors found inside the buffer.

This function is used by the several MPEG-TS table handlers to parse the entire table that got read by dvb_read_sessions and other similar functions.

Returns
Returns 0 on success, a negative value otherwise.
void dvb_desc_print ( struct dvb_v5_fe_parms parms,
struct dvb_desc desc 
)

prints the contents of a struct dvb_desc linked list

Parameters
parmsStruct dvb_v5_fe_parms pointer
descstruct dvb_desc pointer.
void dvb_hexdump ( struct dvb_v5_fe_parms parms,
const char *  prefix,
const unsigned char *  buf,
int  len 
)

dumps data into the logs in hexadecimal format

Parameters
parmsStruct dvb_v5_fe_parms pointer
prefixString to be printed before the dvb_hexdump
bufBuffer to hex dump
lenNumber of bytes to show

Variable Documentation

const struct dvb_descriptor dvb_descriptors[]

Contains the parsers for the several descriptors.

const dvb_table_init_func dvb_table_initializers[256]

Table with all possible descriptors.