123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772 |
- /*
- * Copyright (c) 2011-2012 - Mauro Carvalho Chehab
- * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation version 2
- * of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- */
- /**
- * @file descriptors.h
- * @ingroup dvb_table
- * @brief Provides a way to handle MPEG-TS descriptors found on Digital TV
- * streams.
- * @copyright GNU General Public License version 2 (GPLv2)
- * @author Mauro Carvalho Chehab
- * @author Andre Roth
- *
- * @par Relevant specs
- * The descriptors herein are defined on the following specs:
- * - ISO/IEC 13818-1
- * - ETSI EN 300 468 V1.11.1 (2010-04)
- * - SCTE 35 2004
- * - http://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspx
- * - http://www.coolstf.com/tsreader/descriptors.html
- * - ABNT NBR 15603-1 2007
- * - ATSC A/65:2009 spec
- *
- * @par Bug Report
- * Please submit bug reports and patches to linux-media@vger.kernel.org
- */
- #ifndef _DESCRIPTORS_H
- #define _DESCRIPTORS_H
- #include <unistd.h>
- #include <stdint.h>
- #include <arpa/inet.h>
- /**
- * @brief Maximum size of a table session to be parsed
- * @ingroup dvb_table
- */
- #define DVB_MAX_PAYLOAD_PACKET_SIZE 4096
- /**
- * @brief number of bytes for the descriptor's CRC check
- * @ingroup dvb_table
- */
- #define DVB_CRC_SIZE 4
- #ifndef _DOXYGEN
- struct dvb_v5_fe_parms;
- #endif
- /**
- * @brief Function prototype for a function that initializes the
- * descriptors parsing on a table
- * @ingroup dvb_table
- *
- * @param parms Struct dvb_v5_fe_parms pointer
- * @param buf Buffer with data to be parsed
- * @param buflen Size of the buffer to be parsed
- * @param table pointer to a place where the allocated memory with the
- * table structure will be stored.
- */
- typedef void (*dvb_table_init_func)(struct dvb_v5_fe_parms *parms,
- const uint8_t *buf, ssize_t buflen,
- void **table);
- /**
- * @brief Table with all possible descriptors
- * @ingroup dvb_table
- */
- extern const dvb_table_init_func dvb_table_initializers[256];
- #ifndef _DOXYGEN
- #define bswap16(b) do {\
- b = ntohs(b); \
- } while (0)
- #define bswap32(b) do {\
- b = ntohl(b); \
- } while (0)
- /* Deprecated */
- #define DVB_DESC_HEADER() \
- uint8_t type; \
- uint8_t length; \
- struct dvb_desc *next
- #endif /* _DOXYGEN */
- /**
- * @struct dvb_desc
- * @brief Linked list containing the several descriptors found on a
- * MPEG-TS table
- * @ingroup dvb_table
- *
- * @param type Descriptor type
- * @param length Length of the descriptor
- * @param next pointer to the dvb_desc descriptor
- * @param data Descriptor data
- */
- struct dvb_desc {
- uint8_t type;
- uint8_t length;
- struct dvb_desc *next;
- uint8_t data[];
- } __attribute__((packed));
- #ifndef _DOXYGEN
- #define dvb_desc_foreach( _desc, _tbl ) \
- for( struct dvb_desc *_desc = _tbl->descriptor; _desc; _desc = _desc->next ) \
- #define dvb_desc_find(_struct, _desc, _tbl, _type) \
- for( _struct *_desc = (_struct *) _tbl->descriptor; _desc; _desc = (_struct *) _desc->next ) \
- if(_desc->type == _type) \
- #endif /* _DOXYGEN */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @brief Converts from BCD to CPU integer internal representation
- * @ingroup dvb_table
- *
- * @param bcd value in BCD encoding
- */
- uint32_t dvb_bcd(uint32_t bcd);
- /**
- * @brief dumps data into the logs in hexadecimal format
- * @ingroup dvb_table
- *
- * @param parms Struct dvb_v5_fe_parms pointer
- * @param prefix String to be printed before the dvb_hexdump
- * @param buf Buffer to hex dump
- * @param len Number of bytes to show
- */
- void dvb_hexdump(struct dvb_v5_fe_parms *parms, const char *prefix,
- const unsigned char *buf, int len);
- /**
- * @brief parse MPEG-TS descriptors
- * @ingroup dvb_table
- *
- * @param parms Struct dvb_v5_fe_parms pointer
- * @param buf Buffer with data to be parsed
- * @param buflen Size of the buffer to be parsed
- * @param head_desc pointer 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.
- *
- * @return Returns 0 on success, a negative value otherwise.
- */
- int dvb_desc_parse(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
- uint16_t buflen, struct dvb_desc **head_desc);
- /**
- * @brief frees a dvb_desc linked list
- * @ingroup dvb_table
- *
- * @param list struct dvb_desc pointer.
- */
- void dvb_desc_free (struct dvb_desc **list);
- /**
- * @brief prints the contents of a struct dvb_desc linked list
- * @ingroup dvb_table
- *
- * @param parms Struct dvb_v5_fe_parms pointer
- * @param desc struct dvb_desc pointer.
- */
- void dvb_desc_print(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc);
- #ifdef __cplusplus
- }
- #endif
- /**
- * @brief Function prototype for the descriptors parsing init code
- * @ingroup dvb_table
- *
- * @param parms Struct dvb_v5_fe_parms pointer
- * @param buf buffer with the content of the descriptor
- * @param desc struct dvb_desc pointer
- */
- typedef int (*dvb_desc_init_func) (struct dvb_v5_fe_parms *parms,
- const uint8_t *buf, struct dvb_desc *desc);
- /**
- * @brief Function prototype for the descriptors parsing print code
- * @ingroup dvb_table
- *
- * @param parms Struct dvb_v5_fe_parms pointer
- * @param desc struct dvb_desc pointer
- */
- typedef void (*dvb_desc_print_func)(struct dvb_v5_fe_parms *parms,
- const struct dvb_desc *desc);
- /**
- * @brief Function prototype for the descriptors memory free code
- * @ingroup dvb_table
- *
- * @param desc pointer to struct dvb_desc pointer to be freed
- */
- typedef void (*dvb_desc_free_func) (struct dvb_desc *desc);
- /**
- * @struct dvb_descriptor
- * @brief Contains the parser information for the MPEG-TS parser code
- * @ingroup dvb_table
- *
- * @param name String containing the name of the descriptor
- * @param init Pointer to a function to initialize the descriptor
- * parser. This function fills the descriptor-specific
- * internal structures
- * @param print Prints the content of the descriptor
- * @param free Frees all memory blocks allocated by the init function
- * @param size Descriptor's size, in bytes.
- */
- struct dvb_descriptor {
- const char *name;
- dvb_desc_init_func init;
- dvb_desc_print_func print;
- dvb_desc_free_func free;
- ssize_t size;
- };
- /**
- * @brief Contains the parsers for the several descriptors
- * @ingroup dvb_table
- */
- extern const struct dvb_descriptor dvb_descriptors[];
- /**
- * @enum descriptors
- * @brief List containing all descriptors used by Digital TV MPEG-TS
- * @ingroup dvb_table
- *
- * @var video_stream_descriptor
- * @brief video_stream descriptor - ISO/IEC 13818-1
- * @var audio_stream_descriptor
- * @brief audio_stream descriptor - ISO/IEC 13818-1
- * @var hierarchy_descriptor
- * @brief hierarchy descriptor - ISO/IEC 13818-1
- * @var registration_descriptor
- * @brief registration descriptor - ISO/IEC 13818-1
- * @var ds_alignment_descriptor
- * @brief ds_alignment descriptor - ISO/IEC 13818-1
- * @var target_background_grid_descriptor
- * @brief target_background_grid descriptor - ISO/IEC 13818-1
- * @var video_window_descriptor
- * @brief video_window descriptor - ISO/IEC 13818-1
- * @var conditional_access_descriptor
- * @brief conditional_access descriptor - ISO/IEC 13818-1
- * @var iso639_language_descriptor
- * @brief iso639_language descriptor - ISO/IEC 13818-1
- * @var system_clock_descriptor
- * @brief system_clock descriptor - ISO/IEC 13818-1
- * @var multiplex_buffer_utilization_descriptor
- * @brief multiplex_buffer_utilization descriptor - ISO/IEC 13818-1
- * @var copyright_descriptor
- * @brief copyright descriptor - ISO/IEC 13818-1
- * @var maximum_bitrate_descriptor
- * @brief maximum_bitrate descriptor - ISO/IEC 13818-1
- * @var private_data_indicator_descriptor
- * @brief private_data_indicator descriptor - ISO/IEC 13818-1
- * @var smoothing_buffer_descriptor
- * @brief smoothing_buffer descriptor - ISO/IEC 13818-1
- * @var std_descriptor
- * @brief std descriptor - ISO/IEC 13818-1
- * @var ibp_descriptor
- * @brief ibp descriptor - ISO/IEC 13818-1
- * @var mpeg4_video_descriptor
- * @brief mpeg4_video descriptor - ISO/IEC 13818-1
- * @var mpeg4_audio_descriptor
- * @brief mpeg4_audio descriptor - ISO/IEC 13818-1
- * @var iod_descriptor
- * @brief iod descriptor - ISO/IEC 13818-1
- * @var sl_descriptor
- * @brief sl descriptor - ISO/IEC 13818-1
- * @var fmc_descriptor
- * @brief fmc descriptor - ISO/IEC 13818-1
- * @var external_es_id_descriptor
- * @brief external_es_id descriptor - ISO/IEC 13818-1
- * @var muxcode_descriptor
- * @brief muxcode descriptor - ISO/IEC 13818-1
- * @var fmxbuffersize_descriptor
- * @brief fmxbuffersize descriptor - ISO/IEC 13818-1
- * @var multiplexbuffer_descriptor
- * @brief multiplexbuffer descriptor - ISO/IEC 13818-1
- * @var content_labeling_descriptor
- * @brief content_labeling descriptor - ISO/IEC 13818-1
- * @var metadata_pointer_descriptor
- * @brief metadata_pointer descriptor - ISO/IEC 13818-1
- * @var metadata_descriptor
- * @brief metadata descriptor - ISO/IEC 13818-1
- * @var metadata_std_descriptor
- * @brief metadata_std descriptor - ISO/IEC 13818-1
- * @var AVC_video_descriptor
- * @brief AVC_video descriptor - ISO/IEC 13818-1
- * @var ipmp_descriptor
- * @brief ipmp descriptor - ISO/IEC 13818-1
- * @var AVC_timing_and_HRD_descriptor
- * @brief AVC_timing_and_HRD descriptor - ISO/IEC 13818-1
- * @var mpeg2_aac_audio_descriptor
- * @brief mpeg2_aac_audio descriptor - ISO/IEC 13818-1
- * @var flexmux_timing_descriptor
- * @brief flexmux_timing descriptor - ISO/IEC 13818-1
- * @var network_name_descriptor
- * @brief network_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var service_list_descriptor
- * @brief service_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var stuffing_descriptor
- * @brief stuffing descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var satellite_delivery_system_descriptor
- * @brief satellite_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var cable_delivery_system_descriptor
- * @brief cable_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var VBI_data_descriptor
- * @brief VBI_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var VBI_teletext_descriptor
- * @brief VBI_teletext descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var bouquet_name_descriptor
- * @brief bouquet_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var service_descriptor
- * @brief service descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var country_availability_descriptor
- * @brief country_availability descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var linkage_descriptor
- * @brief linkage descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var NVOD_reference_descriptor
- * @brief NVOD_reference descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var time_shifted_service_descriptor
- * @brief time_shifted_service descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var short_event_descriptor
- * @brief short_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var extended_event_descriptor
- * @brief extended_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var time_shifted_event_descriptor
- * @brief time_shifted_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var component_descriptor
- * @brief component descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var mosaic_descriptor
- * @brief mosaic descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var stream_identifier_descriptor
- * @brief stream_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var CA_identifier_descriptor
- * @brief CA_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var content_descriptor
- * @brief content descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var parental_rating_descriptor
- * @brief parental_rating descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var teletext_descriptor
- * @brief teletext descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var telephone_descriptor
- * @brief telephone descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var local_time_offset_descriptor
- * @brief local_time_offset descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var subtitling_descriptor
- * @brief subtitling descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var terrestrial_delivery_system_descriptor
- * @brief terrestrial_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var multilingual_network_name_descriptor
- * @brief multilingual_network_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var multilingual_bouquet_name_descriptor
- * @brief multilingual_bouquet_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var multilingual_service_name_descriptor
- * @brief multilingual_service_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var multilingual_component_descriptor
- * @brief multilingual_component descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var private_data_specifier_descriptor
- * @brief private_data_specifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var service_move_descriptor
- * @brief service_move descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var short_smoothing_buffer_descriptor
- * @brief short_smoothing_buffer descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var frequency_list_descriptor
- * @brief frequency_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var partial_transport_stream_descriptor
- * @brief partial_transport_stream descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var data_broadcast_descriptor
- * @brief data_broadcast descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var scrambling_descriptor
- * @brief scrambling descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var data_broadcast_id_descriptor
- * @brief data_broadcast_id descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var transport_stream_descriptor
- * @brief transport_stream descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var DSNG_descriptor
- * @brief DSNG descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var PDC_descriptor
- * @brief PDC descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var AC_3_descriptor
- * @brief AC_3 descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var ancillary_data_descriptor
- * @brief ancillary_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var cell_list_descriptor
- * @brief cell_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var cell_frequency_link_descriptor
- * @brief cell_frequency_link descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var announcement_support_descriptor
- * @brief announcement_support descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var application_signalling_descriptor
- * @brief application_signalling descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var adaptation_field_data_descriptor
- * @brief adaptation_field_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var service_identifier_descriptor
- * @brief service_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var service_availability_descriptor
- * @brief service_availability descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var default_authority_descriptor
- * @brief default_authority descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var related_content_descriptor
- * @brief related_content descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var TVA_id_descriptor
- * @brief TVA_id descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var content_identifier_descriptor
- * @brief content_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var time_slice_fec_identifier_descriptor
- * @brief time_slice_fec_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var ECM_repetition_rate_descriptor
- * @brief ECM_repetition_rate descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var S2_satellite_delivery_system_descriptor
- * @brief S2_satellite_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var enhanced_AC_3_descriptor
- * @brief enhanced_AC_3 descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var DTS_descriptor
- * @brief DTS descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var AAC_descriptor
- * @brief AAC descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var XAIT_location_descriptor
- * @brief XAIT_location descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var FTA_content_management_descriptor
- * @brief FTA_content_management descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var extension_descriptor
- * @brief extension descriptor - ETSI EN 300 468 V1.11.1 (2010-04)
- * @var CUE_identifier_descriptor
- * @brief CUE_identifier descriptor - SCTE 35 2004
- * @var extended_channel_name
- * @brief extended_channel_name descriptor - SCTE 35 2004
- * @var service_location
- * @brief service_location descriptor - SCTE 35 2004
- * @var component_name_descriptor
- * @brief component_name descriptor - SCTE 35 2004
- * @see http://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspx
- * @var logical_channel_number_descriptor
- * @brief logical_channel_number descriptor - SCTE 35 2004
- * @see http://www.coolstf.com/tsreader/descriptors.html
- *
- * @var carousel_id_descriptor
- * @brief carousel_id descriptor - ABNT NBR 15603-1 2007
- * @var association_tag_descriptor
- * @brief association_tag descriptor - ABNT NBR 15603-1 2007
- * @var deferred_association_tags_descriptor
- * @brief deferred_association_tags descriptor - ABNT NBR 15603-1 2007
- * @var hierarchical_transmission_descriptor
- * @brief hierarchical_transmission descriptor - ABNT NBR 15603-1 2007
- * @var digital_copy_control_descriptor
- * @brief digital_copy_control descriptor - ABNT NBR 15603-1 2007
- * @var network_identifier_descriptor
- * @brief network_identifier descriptor - ABNT NBR 15603-1 2007
- * @var partial_transport_stream_time_descriptor
- * @brief partial_transport_stream_time descriptor - ABNT NBR 15603-1 2007
- * @var audio_component_descriptor
- * @brief audio_component descriptor - ABNT NBR 15603-1 2007
- * @var hyperlink_descriptor
- * @brief hyperlink descriptor - ABNT NBR 15603-1 2007
- * @var target_area_descriptor
- * @brief target_area descriptor - ABNT NBR 15603-1 2007
- * @var data_contents_descriptor
- * @brief data_contents descriptor - ABNT NBR 15603-1 2007
- * @var video_decode_control_descriptor
- * @brief video_decode_control descriptor - ABNT NBR 15603-1 2007
- * @var download_content_descriptor
- * @brief download_content descriptor - ABNT NBR 15603-1 2007
- * @var CA_EMM_TS_descriptor
- * @brief CA_EMM_TS descriptor - ABNT NBR 15603-1 2007
- * @var CA_contract_information_descriptor
- * @brief CA_contract_information descriptor - ABNT NBR 15603-1 2007
- * @var CA_service_descriptor
- * @brief CA_service descriptor - ABNT NBR 15603-1 2007
- * @var TS_Information_descriptior
- * @brief transport_stream_information descriptor - ABNT NBR 15603-1 2007
- * @var extended_broadcaster_descriptor
- * @brief extended_broadcaster descriptor - ABNT NBR 15603-1 2007
- * @var logo_transmission_descriptor
- * @brief logo_transmission descriptor - ABNT NBR 15603-1 2007
- * @var basic_local_event_descriptor
- * @brief basic_local_event descriptor - ABNT NBR 15603-1 2007
- * @var reference_descriptor
- * @brief reference descriptor - ABNT NBR 15603-1 2007
- * @var node_relation_descriptor
- * @brief node_relation descriptor - ABNT NBR 15603-1 2007
- * @var short_node_information_descriptor
- * @brief short_node_information descriptor - ABNT NBR 15603-1 2007
- * @var STC_reference_descriptor
- * @brief STC_reference descriptor - ABNT NBR 15603-1 2007
- * @var series_descriptor
- * @brief series descriptor - ABNT NBR 15603-1 2007
- * @var event_group_descriptor
- * @brief event_group descriptor - ABNT NBR 15603-1 2007
- * @var SI_parameter_descriptor
- * @brief SI_parameter descriptor - ABNT NBR 15603-1 2007
- * @var broadcaster_Name_Descriptor
- * @brief broadcaster_Name descriptor - ABNT NBR 15603-1 2007
- * @var component_group_descriptor
- * @brief component_group descriptor - ABNT NBR 15603-1 2007
- * @var SI_prime_TS_descriptor
- * @brief SI_prime_transport_stream descriptor - ABNT NBR 15603-1 2007
- * @var board_information_descriptor
- * @brief board_information descriptor - ABNT NBR 15603-1 2007
- * @var LDT_linkage_descriptor
- * @brief LDT_linkage descriptor - ABNT NBR 15603-1 2007
- * @var connected_transmission_descriptor
- * @brief connected_transmission descriptor - ABNT NBR 15603-1 2007
- * @var content_availability_descriptor
- * @brief content_availability descriptor - ABNT NBR 15603-1 2007
- * @var service_group_descriptor
- * @brief service_group descriptor - ABNT NBR 15603-1 2007
- * @var carousel_compatible_composite_descriptor
- * @brief carousel_compatible_composite descriptor - ABNT NBR 15603-1 2007
- * @var conditional_playback_descriptor
- * @brief conditional_playback descriptor - ABNT NBR 15603-1 2007
- * @var ISDBT_delivery_system_descriptor
- * @brief ISDBT terrestrial_delivery_system descriptor - ABNT NBR 15603-1 2007
- * @var partial_reception_descriptor
- * @brief partial_reception descriptor - ABNT NBR 15603-1 2007
- * @var emergency_information_descriptor
- * @brief emergency_information descriptor - ABNT NBR 15603-1 2007
- * @var data_component_descriptor
- * @brief data_component descriptor - ABNT NBR 15603-1 2007
- * @var system_management_descriptor
- * @brief system_management descriptor - ABNT NBR 15603-1 2007
- *
- * @var atsc_stuffing_descriptor
- * @brief atsc_stuffing descriptor - ATSC A/65:2009
- * @var atsc_ac3_audio_descriptor
- * @brief atsc_ac3_audio descriptor - ATSC A/65:2009
- * @var atsc_caption_service_descriptor
- * @brief atsc_caption_service descriptor - ATSC A/65:2009
- * @var atsc_content_advisory_descriptor
- * @brief atsc_content_advisory descriptor - ATSC A/65:2009
- * @var atsc_extended_channel_descriptor
- * @brief atsc_extended_channel descriptor - ATSC A/65:2009
- * @var atsc_service_location_descriptor
- * @brief atsc_service_location descriptor - ATSC A/65:2009
- * @var atsc_time_shifted_service_descriptor
- * @brief atsc_time_shifted_service descriptor - ATSC A/65:2009
- * @var atsc_component_name_descriptor
- * @brief atsc_component_name descriptor - ATSC A/65:2009
- * @var atsc_DCC_departing_request_descriptor
- * @brief atsc_DCC_departing_request descriptor - ATSC A/65:2009
- * @var atsc_DCC_arriving_request_descriptor
- * @brief atsc_DCC_arriving_request descriptor - ATSC A/65:2009
- * @var atsc_redistribution_control_descriptor
- * @brief atsc_redistribution_control descriptor - ATSC A/65:2009
- * @var atsc_ATSC_private_information_descriptor
- * @brief atsc_ATSC_private_information descriptor - ATSC A/65:2009
- * @var atsc_genre_descriptor
- * @brief atsc_genre descriptor - ATSC A/65:2009
- */
- enum descriptors {
- /* ISO/IEC 13818-1 */
- video_stream_descriptor = 0x02,
- audio_stream_descriptor = 0x03,
- hierarchy_descriptor = 0x04,
- registration_descriptor = 0x05,
- ds_alignment_descriptor = 0x06,
- target_background_grid_descriptor = 0x07,
- video_window_descriptor = 0x08,
- conditional_access_descriptor = 0x09,
- iso639_language_descriptor = 0x0a,
- system_clock_descriptor = 0x0b,
- multiplex_buffer_utilization_descriptor = 0x0c,
- copyright_descriptor = 0x0d,
- maximum_bitrate_descriptor = 0x0e,
- private_data_indicator_descriptor = 0x0f,
- smoothing_buffer_descriptor = 0x10,
- std_descriptor = 0x11,
- ibp_descriptor = 0x12,
- mpeg4_video_descriptor = 0x1b,
- mpeg4_audio_descriptor = 0x1c,
- iod_descriptor = 0x1d,
- sl_descriptor = 0x1e,
- fmc_descriptor = 0x1f,
- external_es_id_descriptor = 0x20,
- muxcode_descriptor = 0x21,
- fmxbuffersize_descriptor = 0x22,
- multiplexbuffer_descriptor = 0x23,
- content_labeling_descriptor = 0x24,
- metadata_pointer_descriptor = 0x25,
- metadata_descriptor = 0x26,
- metadata_std_descriptor = 0x27,
- AVC_video_descriptor = 0x28,
- ipmp_descriptor = 0x29,
- AVC_timing_and_HRD_descriptor = 0x2a,
- mpeg2_aac_audio_descriptor = 0x2b,
- flexmux_timing_descriptor = 0x2c,
- /* ETSI EN 300 468 V1.11.1 (2010-04) */
- network_name_descriptor = 0x40,
- service_list_descriptor = 0x41,
- stuffing_descriptor = 0x42,
- satellite_delivery_system_descriptor = 0x43,
- cable_delivery_system_descriptor = 0x44,
- VBI_data_descriptor = 0x45,
- VBI_teletext_descriptor = 0x46,
- bouquet_name_descriptor = 0x47,
- service_descriptor = 0x48,
- country_availability_descriptor = 0x49,
- linkage_descriptor = 0x4a,
- NVOD_reference_descriptor = 0x4b,
- time_shifted_service_descriptor = 0x4c,
- short_event_descriptor = 0x4d,
- extended_event_descriptor = 0x4e,
- time_shifted_event_descriptor = 0x4f,
- component_descriptor = 0x50,
- mosaic_descriptor = 0x51,
- stream_identifier_descriptor = 0x52,
- CA_identifier_descriptor = 0x53,
- content_descriptor = 0x54,
- parental_rating_descriptor = 0x55,
- teletext_descriptor = 0x56,
- telephone_descriptor = 0x57,
- local_time_offset_descriptor = 0x58,
- subtitling_descriptor = 0x59,
- terrestrial_delivery_system_descriptor = 0x5a,
- multilingual_network_name_descriptor = 0x5b,
- multilingual_bouquet_name_descriptor = 0x5c,
- multilingual_service_name_descriptor = 0x5d,
- multilingual_component_descriptor = 0x5e,
- private_data_specifier_descriptor = 0x5f,
- service_move_descriptor = 0x60,
- short_smoothing_buffer_descriptor = 0x61,
- frequency_list_descriptor = 0x62,
- partial_transport_stream_descriptor = 0x63,
- data_broadcast_descriptor = 0x64,
- scrambling_descriptor = 0x65,
- data_broadcast_id_descriptor = 0x66,
- transport_stream_descriptor = 0x67,
- DSNG_descriptor = 0x68,
- PDC_descriptor = 0x69,
- AC_3_descriptor = 0x6a,
- ancillary_data_descriptor = 0x6b,
- cell_list_descriptor = 0x6c,
- cell_frequency_link_descriptor = 0x6d,
- announcement_support_descriptor = 0x6e,
- application_signalling_descriptor = 0x6f,
- adaptation_field_data_descriptor = 0x70,
- service_identifier_descriptor = 0x71,
- service_availability_descriptor = 0x72,
- default_authority_descriptor = 0x73,
- related_content_descriptor = 0x74,
- TVA_id_descriptor = 0x75,
- content_identifier_descriptor = 0x76,
- time_slice_fec_identifier_descriptor = 0x77,
- ECM_repetition_rate_descriptor = 0x78,
- S2_satellite_delivery_system_descriptor = 0x79,
- enhanced_AC_3_descriptor = 0x7a,
- DTS_descriptor = 0x7b,
- AAC_descriptor = 0x7c,
- XAIT_location_descriptor = 0x7d,
- FTA_content_management_descriptor = 0x7e,
- extension_descriptor = 0x7f,
- /* SCTE 35 2004 */
- CUE_identifier_descriptor = 0x8a,
- extended_channel_name = 0xa0,
- service_location = 0xa1,
- /* From http://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspx */
- component_name_descriptor = 0xa3,
- /* From http://www.coolstf.com/tsreader/descriptors.html */
- logical_channel_number_descriptor = 0x83,
- /* ISDB Descriptors, as defined on ABNT NBR 15603-1 2007 */
- carousel_id_descriptor = 0x13,
- association_tag_descriptor = 0x14,
- deferred_association_tags_descriptor = 0x15,
- hierarchical_transmission_descriptor = 0xc0,
- digital_copy_control_descriptor = 0xc1,
- network_identifier_descriptor = 0xc2,
- partial_transport_stream_time_descriptor = 0xc3,
- audio_component_descriptor = 0xc4,
- hyperlink_descriptor = 0xc5,
- target_area_descriptor = 0xc6,
- data_contents_descriptor = 0xc7,
- video_decode_control_descriptor = 0xc8,
- download_content_descriptor = 0xc9,
- CA_EMM_TS_descriptor = 0xca,
- CA_contract_information_descriptor = 0xcb,
- CA_service_descriptor = 0xcc,
- TS_Information_descriptior = 0xcd,
- extended_broadcaster_descriptor = 0xce,
- logo_transmission_descriptor = 0xcf,
- basic_local_event_descriptor = 0xd0,
- reference_descriptor = 0xd1,
- node_relation_descriptor = 0xd2,
- short_node_information_descriptor = 0xd3,
- STC_reference_descriptor = 0xd4,
- series_descriptor = 0xd5,
- event_group_descriptor = 0xd6,
- SI_parameter_descriptor = 0xd7,
- broadcaster_Name_Descriptor = 0xd8,
- component_group_descriptor = 0xd9,
- SI_prime_TS_descriptor = 0xda,
- board_information_descriptor = 0xdb,
- LDT_linkage_descriptor = 0xdc,
- connected_transmission_descriptor = 0xdd,
- content_availability_descriptor = 0xde,
- service_group_descriptor = 0xe0,
- carousel_compatible_composite_descriptor = 0xf7,
- conditional_playback_descriptor = 0xf8,
- ISDBT_delivery_system_descriptor = 0xfa,
- partial_reception_descriptor = 0xfb,
- emergency_information_descriptor = 0xfc,
- data_component_descriptor = 0xfd,
- system_management_descriptor = 0xfe,
- /* ATSC descriptors - ATSC A/65:2009 spec */
- atsc_stuffing_descriptor = 0x80,
- atsc_ac3_audio_descriptor = 0x81,
- atsc_caption_service_descriptor = 0x86,
- atsc_content_advisory_descriptor = 0x87,
- atsc_extended_channel_descriptor = 0xa0,
- atsc_service_location_descriptor = 0xa1,
- atsc_time_shifted_service_descriptor = 0xa2,
- atsc_component_name_descriptor = 0xa3,
- atsc_DCC_departing_request_descriptor = 0xa8,
- atsc_DCC_arriving_request_descriptor = 0xa9,
- atsc_redistribution_control_descriptor = 0xaa,
- atsc_ATSC_private_information_descriptor = 0xad,
- atsc_genre_descriptor = 0xab,
- };
- /* Please see desc_extension.h for extension_descriptor types */
- #endif
|