libdvbv5  1.20.0
Library to work with Digital TV devices on Linux
descriptors.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2012 - Mauro Carvalho Chehab
3  * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation version 2.1 of the License.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
18  */
19 
44 #ifndef _DESCRIPTORS_H
45 #define _DESCRIPTORS_H
46 
47 #include <unistd.h>
48 #include <stdint.h>
49 #include <arpa/inet.h>
50 
55 #define DVB_MAX_PAYLOAD_PACKET_SIZE 4096
56 
61 #define DVB_CRC_SIZE 4
62 
63 
64 #ifndef _DOXYGEN
65 struct dvb_v5_fe_parms;
66 #endif
67 
79 typedef void (*dvb_table_init_func)(struct dvb_v5_fe_parms *parms,
80  const uint8_t *buf, ssize_t buflen,
81  void **table);
82 
88 
89 #ifndef _DOXYGEN
90 #define bswap16(b) do {\
91  b = ntohs(b); \
92 } while (0)
93 
94 #define bswap32(b) do {\
95  b = ntohl(b); \
96 } while (0)
97 
98 /* Deprecated */
99 #define DVB_DESC_HEADER() \
100  uint8_t type; \
101  uint8_t length; \
102  struct dvb_desc *next
103 
104 #endif /* _DOXYGEN */
105 
117 struct dvb_desc {
118  uint8_t type;
119  uint8_t length;
120  struct dvb_desc *next;
121 
122  uint8_t data[];
123 } __attribute__((packed));
124 
125 #ifndef _DOXYGEN
126 
127 #define dvb_desc_foreach( _desc, _tbl ) \
128  if (_tbl && _tbl->descriptor) \
129  for( struct dvb_desc *_desc = _tbl->descriptor; _desc; _desc = _desc->next ) \
130 
131 #define dvb_desc_find(_struct, _desc, _tbl, _type) \
132  if (_tbl && _tbl->descriptor) \
133  for( _struct *_desc = (_struct *) _tbl->descriptor; _desc; _desc = (_struct *) _desc->next ) \
134  if(_desc->type == _type) \
135 
136 #endif /* _DOXYGEN */
137 
138 #ifdef __cplusplus
139 extern "C" {
140 #endif
141 
148 uint32_t dvb_bcd(uint32_t bcd);
149 
159 void dvb_hexdump(struct dvb_v5_fe_parms *parms, const char *prefix,
160  const unsigned char *buf, int len);
161 
183 int dvb_desc_parse(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
184  uint16_t buflen, struct dvb_desc **head_desc);
185 
192 void dvb_desc_free (struct dvb_desc **list);
193 
201 void dvb_desc_print(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc);
202 
203 #ifdef __cplusplus
204 }
205 #endif
206 
215 typedef int (*dvb_desc_init_func) (struct dvb_v5_fe_parms *parms,
216  const uint8_t *buf, struct dvb_desc *desc);
217 
225 typedef void (*dvb_desc_print_func)(struct dvb_v5_fe_parms *parms,
226  const struct dvb_desc *desc);
227 
234 typedef void (*dvb_desc_free_func) (struct dvb_desc *desc);
235 
250  const char *name;
254  ssize_t size;
255 };
256 
261 extern const struct dvb_descriptor dvb_descriptors[];
262 
593  /* ISO/IEC 13818-1 */
611 
630 
631  /* ETSI EN 300 468 V1.11.1 (2010-04) */
632 
697 
698  /* SCTE 35 2004 */
700 
703  /* From http://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspx */
705 
706  /* From http://www.coolstf.com/tsreader/descriptors.html */
708 
709  /* ISDB Descriptors, as defined on ABNT NBR 15603-1 2007 */
710 
714 
754 
755  /* ATSC descriptors - ATSC A/65:2009 spec */
769 };
770 
771 /* Please see desc_extension.h for extension_descriptor types */
772 
773 #endif
multilingual_bouquet_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:661
maximum_bitrate descriptor - ISO/IEC 13818-1
Definition: descriptors.h:606
CA_contract_information descriptor - ABNT NBR 15603-1 2007.
Definition: descriptors.h:726
ancillary_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:676
metadata_std descriptor - ISO/IEC 13818-1
Definition: descriptors.h:624
const dvb_table_init_func dvb_table_initializers[256]
Table with all possible descriptors.
emergency_information descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:751
series descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:736
iod descriptor - ISO/IEC 13818-1
Definition: descriptors.h:614
bouquet_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:640
partial_transport_stream descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:668
external_es_id descriptor - ISO/IEC 13818-1
Definition: descriptors.h:617
extended_channel_name descriptor - SCTE 35 2004
Definition: descriptors.h:701
atsc_service_location descriptor - ATSC A/65:2009
Definition: descriptors.h:761
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: descriptors.h:215
frequency_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:667
ISDBT terrestrial_delivery_system descriptor - ABNT NBR 15603-1 2007.
Definition: descriptors.h:749
mpeg4_audio descriptor - ISO/IEC 13818-1
Definition: descriptors.h:613
hierarchy descriptor - ISO/IEC 13818-1
Definition: descriptors.h:596
std descriptor - ISO/IEC 13818-1
Definition: descriptors.h:609
DTS descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:692
broadcaster_Name descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:739
ibp descriptor - ISO/IEC 13818-1
Definition: descriptors.h:610
content_availability descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:745
stuffing descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:635
subtitling descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:658
hierarchical_transmission descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:715
dvb_desc_free_func free
Definition: descriptors.h:253
local_time_offset descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:657
service_availability descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:683
flexmux_timing descriptor - ISO/IEC 13818-1
Definition: descriptors.h:629
partial_transport_stream_time descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:718
basic_local_event descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:731
void dvb_desc_free(struct dvb_desc **list)
frees a dvb_desc linked list
struct dvb_desc * next
Definition: descriptors.h:120
CUE_identifier descriptor - SCTE 35 2004.
Definition: descriptors.h:699
short_smoothing_buffer descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:666
extended_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:647
TVA_id descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:686
atsc_genre descriptor - ATSC A/65:2009
Definition: descriptors.h:768
short_node_information descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:734
carousel_id descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:711
logical_channel_number descriptor - SCTE 35 2004
Definition: descriptors.h:707
dvb_desc_init_func init
Definition: descriptors.h:251
const char * name
Definition: descriptors.h:250
multiplexbuffer descriptor - ISO/IEC 13818-1
Definition: descriptors.h:620
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
connected_transmission descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:744
metadata descriptor - ISO/IEC 13818-1
Definition: descriptors.h:623
CA_EMM_TS descriptor - ABNT NBR 15603-1 2007.
Definition: descriptors.h:725
atsc_component_name descriptor - ATSC A/65:2009
Definition: descriptors.h:763
video_stream descriptor - ISO/IEC 13818-1
Definition: descriptors.h:594
private_data_specifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:664
service_location descriptor - SCTE 35 2004
Definition: descriptors.h:702
uint32_t dvb_bcd(uint32_t bcd)
Converts from BCD to CPU integer internal representation.
target_background_grid descriptor - ISO/IEC 13818-1
Definition: descriptors.h:599
metadata_pointer descriptor - ISO/IEC 13818-1
Definition: descriptors.h:622
uint8_t length
Definition: descriptors.h:119
dvb_desc_print_func print
Definition: descriptors.h:252
private_data_indicator descriptor - ISO/IEC 13818-1
Definition: descriptors.h:607
component descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:649
video_decode_control descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:723
transport_stream_information descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:728
satellite_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:636
reference descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:732
country_availability descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:642
multilingual_service_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:662
related_content descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:685
stream_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:651
multiplex_buffer_utilization descriptor - ISO/IEC 13818-1
Definition: descriptors.h:604
carousel_compatible_composite descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:747
iso639_language descriptor - ISO/IEC 13818-1
Definition: descriptors.h:602
short_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:646
data_component descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:752
ipmp descriptor - ISO/IEC 13818-1
Definition: descriptors.h:626
STC_reference descriptor - ABNT NBR 15603-1 2007.
Definition: descriptors.h:735
void(* dvb_desc_free_func)(struct dvb_desc *desc)
Function prototype for the descriptors memory free code.
Definition: descriptors.h:234
partial_reception descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:750
AVC_video descriptor - ISO/IEC 13818-1.
Definition: descriptors.h:625
announcement_support descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:679
uint8_t data[]
Definition: descriptors.h:122
hyperlink descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:720
component_name descriptor - SCTE 35 2004
Definition: descriptors.h:704
AVC_timing_and_HRD descriptor - ISO/IEC 13818-1.
Definition: descriptors.h:627
digital_copy_control descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:716
default_authority descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:684
descriptors
List containing all descriptors used by Digital TV MPEG-TS.
Definition: descriptors.h:592
system_clock descriptor - ISO/IEC 13818-1
Definition: descriptors.h:603
fmc descriptor - ISO/IEC 13818-1
Definition: descriptors.h:616
AAC descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:693
transport_stream descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:672
cell_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:677
copyright descriptor - ISO/IEC 13818-1
Definition: descriptors.h:605
multilingual_component descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:663
SI_parameter descriptor - ABNT NBR 15603-1 2007.
Definition: descriptors.h:738
time_shifted_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:648
parental_rating descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:654
application_signalling descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:680
audio_component descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:719
time_slice_fec_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:688
atsc_time_shifted_service descriptor - ATSC A/65:2009
Definition: descriptors.h:762
network_identifier descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:717
DSNG descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:673
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: descriptors.h:225
cell_frequency_link descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:678
fmxbuffersize descriptor - ISO/IEC 13818-1
Definition: descriptors.h:619
content_labeling descriptor - ISO/IEC 13818-1
Definition: descriptors.h:621
extension descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:696
FTA_content_management descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:695
component_group descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:740
video_window descriptor - ISO/IEC 13818-1
Definition: descriptors.h:600
Keeps data needed to handle the DVB frontend.
Definition: dvb-fe.h:117
multilingual_network_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:660
data_contents descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:722
event_group descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:737
mpeg4_video descriptor - ISO/IEC 13818-1
Definition: descriptors.h:612
teletext descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:655
download_content descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:724
ds_alignment descriptor - ISO/IEC 13818-1
Definition: descriptors.h:598
conditional_access descriptor - ISO/IEC 13818-1
Definition: descriptors.h:601
service_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:634
PDC descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:674
atsc_DCC_departing_request descriptor - ATSC A/65:2009
Definition: descriptors.h:764
data_broadcast descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:669
node_relation descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:733
scrambling descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:670
target_area descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:721
smoothing_buffer descriptor - ISO/IEC 13818-1
Definition: descriptors.h:608
atsc_DCC_arriving_request descriptor - ATSC A/65:2009
Definition: descriptors.h:765
atsc_redistribution_control descriptor - ATSC A/65:2009
Definition: descriptors.h:766
Contains the parser information for the MPEG-TS parser code.
Definition: descriptors.h:249
atsc_caption_service descriptor - ATSC A/65:2009
Definition: descriptors.h:758
content_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:687
terrestrial_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:659
service_move descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:665
const struct dvb_descriptor dvb_descriptors[]
Contains the parsers for the several descriptors.
CA_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:652
network_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:633
logo_transmission descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:730
linkage descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:643
Linked list containing the several descriptors found on a MPEG-TS table.
Definition: descriptors.h:117
mpeg2_aac_audio descriptor - ISO/IEC 13818-1
Definition: descriptors.h:628
atsc_content_advisory descriptor - ATSC A/65:2009
Definition: descriptors.h:759
atsc_ac3_audio descriptor - ATSC A/65:2009
Definition: descriptors.h:757
system_management descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:753
CA_service descriptor - ABNT NBR 15603-1 2007.
Definition: descriptors.h:727
void dvb_desc_print(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc)
prints the contents of a struct dvb_desc linked list
extended_broadcaster descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:729
adaptation_field_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:681
cable_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:637
mosaic descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:650
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 on a table.
Definition: descriptors.h:79
content descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:653
muxcode descriptor - ISO/IEC 13818-1
Definition: descriptors.h:618
service descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:641
deferred_association_tags descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:713
audio_stream descriptor - ISO/IEC 13818-1
Definition: descriptors.h:595
service_group descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:746
conditional_playback descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:748
LDT_linkage descriptor - ABNT NBR 15603-1 2007.
Definition: descriptors.h:743
S2_satellite_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:690
atsc_ATSC_private_information descriptor - ATSC A/65:2009
Definition: descriptors.h:767
board_information descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:742
atsc_extended_channel descriptor - ATSC A/65:2009
Definition: descriptors.h:760
enhanced_AC_3 descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:691
sl descriptor - ISO/IEC 13818-1
Definition: descriptors.h:615
NVOD_reference descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:644
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
service_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:682
association_tag descriptor - ABNT NBR 15603-1 2007
Definition: descriptors.h:712
VBI_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:638
AC_3 descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:675
atsc_stuffing descriptor - ATSC A/65:2009
Definition: descriptors.h:756
XAIT_location descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:694
registration descriptor - ISO/IEC 13818-1
Definition: descriptors.h:597
time_shifted_service descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:645
data_broadcast_id descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:671
uint8_t type
Definition: descriptors.h:118
ECM_repetition_rate descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:689
VBI_teletext descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:639
telephone descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
Definition: descriptors.h:656
SI_prime_transport_stream descriptor - ABNT NBR 15603-1 2007.
Definition: descriptors.h:741