123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906 |
- /*
- * gstmpegtsdescriptor.h -
- * Copyright (C) 2013 Edward Hervey
- *
- * Authors:
- * Edward Hervey <[email protected]>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Some parts of this code come from the Fluendo MPEG Demuxer plugin.
- *
- * The Initial Developer of the Original Code is Fluendo, S.L.
- * Portions created by Fluendo, S.L. are Copyright (C) 2005
- * Fluendo, S.L. All Rights Reserved.
- *
- * Contributor(s): Wim Taymans <[email protected]>
- */
- #ifndef GST_DVB_DESCRIPTOR_H
- #define GST_DVB_DESCRIPTOR_H
- #include <gst/gst.h>
- G_BEGIN_DECLS
- /**
- * GstMpegtsDVBDescriptorType:
- *
- * The type of #GstMpegtsDescriptor
- *
- * These values correspond to the registered descriptor type from
- * the various DVB specifications.
- *
- * Consult the relevant specifications for more details.
- */
- typedef enum {
- /* 64-127 DVB tags ETSI EN 300 468
- * (Specification for Service Information (SI) in DVB systems)
- */
- GST_MTS_DESC_DVB_NETWORK_NAME = 0x40,
- GST_MTS_DESC_DVB_SERVICE_LIST = 0x41,
- GST_MTS_DESC_DVB_STUFFING = 0x42,
- GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM = 0x43,
- GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM = 0x44,
- GST_MTS_DESC_DVB_VBI_DATA = 0x45,
- GST_MTS_DESC_DVB_VBI_TELETEXT = 0x46,
- GST_MTS_DESC_DVB_BOUQUET_NAME = 0x47,
- GST_MTS_DESC_DVB_SERVICE = 0x48,
- GST_MTS_DESC_DVB_COUNTRY_AVAILABILITY = 0x49,
- GST_MTS_DESC_DVB_LINKAGE = 0x4A,
- GST_MTS_DESC_DVB_NVOD_REFERENCE = 0x4B,
- GST_MTS_DESC_DVB_TIME_SHIFTED_SERVICE = 0x4C,
- GST_MTS_DESC_DVB_SHORT_EVENT = 0x4D,
- GST_MTS_DESC_DVB_EXTENDED_EVENT = 0x4E,
- GST_MTS_DESC_DVB_TIME_SHIFTED_EVENT = 0x4F,
- GST_MTS_DESC_DVB_COMPONENT = 0x50,
- GST_MTS_DESC_DVB_MOSAIC = 0x51,
- GST_MTS_DESC_DVB_STREAM_IDENTIFIER = 0x52,
- GST_MTS_DESC_DVB_CA_IDENTIFIER = 0x53,
- GST_MTS_DESC_DVB_CONTENT = 0x54,
- GST_MTS_DESC_DVB_PARENTAL_RATING = 0x55,
- GST_MTS_DESC_DVB_TELETEXT = 0x56,
- GST_MTS_DESC_DVB_TELEPHONE = 0x57,
- GST_MTS_DESC_DVB_LOCAL_TIME_OFFSET = 0x58,
- GST_MTS_DESC_DVB_SUBTITLING = 0x59,
- GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM = 0x5A,
- GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME = 0x5B,
- GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME = 0x5C,
- GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME = 0x5D,
- GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT = 0x5E,
- GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER = 0x5F,
- GST_MTS_DESC_DVB_SERVICE_MOVE = 0x60,
- GST_MTS_DESC_DVB_SHORT_SMOOTHING_BUFFER = 0x61,
- GST_MTS_DESC_DVB_FREQUENCY_LIST = 0x62,
- GST_MTS_DESC_DVB_PARTIAL_TRANSPORT_STREAM = 0x63,
- GST_MTS_DESC_DVB_DATA_BROADCAST = 0x64,
- GST_MTS_DESC_DVB_SCRAMBLING = 0x65,
- GST_MTS_DESC_DVB_DATA_BROADCAST_ID = 0x66,
- GST_MTS_DESC_DVB_TRANSPORT_STREAM = 0x67,
- GST_MTS_DESC_DVB_DSNG = 0x68,
- GST_MTS_DESC_DVB_PDC = 0x69,
- GST_MTS_DESC_DVB_AC3 = 0x6A,
- GST_MTS_DESC_DVB_ANCILLARY_DATA = 0x6B,
- GST_MTS_DESC_DVB_CELL_LIST = 0x6C,
- GST_MTS_DESC_DVB_CELL_FREQUENCY_LINK = 0x6D,
- GST_MTS_DESC_DVB_ANNOUNCEMENT_SUPPORT = 0x6E,
- GST_MTS_DESC_DVB_APPLICATION_SIGNALLING = 0x6F,
- GST_MTS_DESC_DVB_ADAPTATION_FIELD_DATA = 0x70,
- GST_MTS_DESC_DVB_SERVICE_IDENTIFIER = 0x71,
- GST_MTS_DESC_DVB_SERVICE_AVAILABILITY = 0x72,
- GST_MTS_DESC_DVB_DEFAULT_AUTHORITY = 0x73,
- GST_MTS_DESC_DVB_RELATED_CONTENT = 0x74,
- GST_MTS_DESC_DVB_TVA_ID = 0x75,
- GST_MTS_DESC_DVB_CONTENT_IDENTIFIER = 0x76,
- GST_MTS_DESC_DVB_TIMESLICE_FEC_IDENTIFIER = 0x77,
- GST_MTS_DESC_DVB_ECM_REPETITION_RATE = 0x78,
- GST_MTS_DESC_DVB_S2_SATELLITE_DELIVERY_SYSTEM = 0x79,
- GST_MTS_DESC_DVB_ENHANCED_AC3 = 0x7A,
- GST_MTS_DESC_DVB_DTS = 0x7B,
- GST_MTS_DESC_DVB_AAC = 0x7C,
- GST_MTS_DESC_DVB_XAIT_LOCATION = 0x7D,
- GST_MTS_DESC_DVB_FTA_CONTENT_MANAGEMENT = 0x7E,
- GST_MTS_DESC_DVB_EXTENSION = 0x7F,
- } GstMpegtsDVBDescriptorType;
- /**
- * GstMpegtsDVBExtendedDescriptorType:
- *
- * The type of #GstMpegtsDescriptor
- *
- * These values correspond to the registered extended descriptor
- * type from the various DVB specifications.
- *
- * Consult the relevant specifications for more details.
- */
- typedef enum {
- /* 00 - 0x7F DVB extended tags ETSI EN 300 468
- * (Specification for Service Information (SI) in DVB systems)
- */
- GST_MTS_DESC_EXT_DVB_IMAGE_ICON = 0x00,
- /* TS/TR 102 825 */
- GST_MTS_DESC_EXT_DVB_CPCM_DELIVERY_SIGNALLING = 0x01,
- GST_MTS_DESC_EXT_DVB_CP = 0x02,
- GST_MTS_DESC_EXT_DVB_CP_IDENTIFIER = 0x03,
- GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM = 0x04,
- GST_MTS_DESC_EXT_DVB_SH_DELIVERY_SYSTEM = 0x05,
- GST_MTS_DESC_EXT_DVB_SUPPLEMENTARY_AUDIO = 0x06,
- GST_MTS_DESC_EXT_DVB_NETWORK_CHANGE_NOTIFY = 0x07,
- GST_MTS_DESC_EXT_DVB_MESSAGE = 0x08,
- GST_MTS_DESC_EXT_DVB_TARGET_REGION = 0x09,
- GST_MTS_DESC_EXT_DVB_TARGET_REGION_NAME = 0x0A,
- GST_MTS_DESC_EXT_DVB_SERVICE_RELOCATED = 0x0B,
- GST_MTS_DESC_EXT_DVB_XAIT_PID = 0x0C,
- GST_MTS_DESC_EXT_DVB_C2_DELIVERY_SYSTEM = 0x0D,
- GST_MTS_DESC_EXT_DVB_DTS_HD_AUDIO_STREAM = 0x0E,
- GST_MTS_DESC_EXT_DVB_DTS_NEUTRAL = 0x0F,
- GST_MTS_DESC_EXT_DVB_VIDEO_DEPTH_RANGE = 0x10,
- GST_MTS_DESC_EXT_DVB_T2MI = 0x11,
- GST_MTS_DESC_EXT_DVB_URI_LINKAGE = 0x13,
- } GstMpegtsDVBExtendedDescriptorType;
- /* GST_MTS_DESC_DVB_CAROUSEL_IDENTIFIER (0x13) */
- /* FIXME : Implement */
- /* GST_MTS_DESC_DVB_NETWORK_NAME (0x40) */
- gboolean gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegtsDescriptor *descriptor,
- gchar **name);
- GstMpegtsDescriptor *gst_mpegts_descriptor_from_dvb_network_name (const gchar * name);
- /* GST_MTS_DESC_DVB_STUFFING (0x42) */
- gboolean gst_mpegts_descriptor_parse_dvb_stuffing (const GstMpegtsDescriptor * descriptor,
- guint8 ** stuffing_bytes);
- /* GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM (0x43) */
- typedef struct _GstMpegtsSatelliteDeliverySystemDescriptor GstMpegtsSatelliteDeliverySystemDescriptor;
- typedef enum {
- GST_MPEGTS_MODULATION_QPSK = 0,
- GST_MPEGTS_MODULATION_QAM_16,
- GST_MPEGTS_MODULATION_QAM_32,
- GST_MPEGTS_MODULATION_QAM_64,
- GST_MPEGTS_MODULATION_QAM_128,
- GST_MPEGTS_MODULATION_QAM_256,
- GST_MPEGTS_MODULATION_QAM_AUTO,
- GST_MPEGTS_MODULATION_VSB_8,
- GST_MPEGTS_MODULATION_VSB_16,
- GST_MPEGTS_MODULATION_PSK_8,
- GST_MPEGTS_MODULATION_APSK_16,
- GST_MPEGTS_MODULATION_APSK_32,
- GST_MPEGTS_MODULATION_DQPSK,
- GST_MPEGTS_MODULATION_QAM_4_NR_,
- GST_MPEGTS_MODULATION_NONE
- } GstMpegtsModulationType;
- typedef enum {
- GST_MPEGTS_FEC_NONE = 0,
- GST_MPEGTS_FEC_1_2,
- GST_MPEGTS_FEC_2_3,
- GST_MPEGTS_FEC_3_4,
- GST_MPEGTS_FEC_4_5,
- GST_MPEGTS_FEC_5_6,
- GST_MPEGTS_FEC_6_7,
- GST_MPEGTS_FEC_7_8,
- GST_MPEGTS_FEC_8_9,
- GST_MPEGTS_FEC_AUTO,
- GST_MPEGTS_FEC_3_5,
- GST_MPEGTS_FEC_9_10,
- GST_MPEGTS_FEC_2_5
- } GstMpegtsDVBCodeRate;
- typedef enum {
- GST_MPEGTS_ROLLOFF_35 = 0,
- GST_MPEGTS_ROLLOFF_20,
- GST_MPEGTS_ROLLOFF_25,
- GST_MPEGTS_ROLLOFF_RESERVED,
- GST_MPEGTS_ROLLOFF_AUTO
- } GstMpegtsSatelliteRolloff;
- typedef enum {
- GST_MPEGTS_POLARIZATION_LINEAR_HORIZONTAL = 0,
- GST_MPEGTS_POLARIZATION_LINEAR_VERTICAL,
- GST_MPEGTS_POLARIZATION_CIRCULAR_LEFT,
- GST_MPEGTS_POLARIZATION_CIRCULAR_RIGHT
- } GstMpegtsSatellitePolarizationType;
- /**
- * GstMpegtsSatelliteDeliverySystemDescriptor:
- * @frequency: the frequency in kHz (kiloHertz)
- * @orbital_position: the orbital position in degrees
- * @west_east: If %TRUE, the satellite is in the eastern part of the orbit,
- * else in the western part.
- * @polarization: The polarization of the transmitted signal
- * @roll_off: Roll-off factor used in DVB-S2
- * @modulation_system: modulation system, %TRUE if DVB-S2, else DVB-S
- * @modulation_type: Modulation scheme used
- * @symbol_rate: Symbol rate (in symbols per second)
- * @fec_inner: inner FEC scheme used
- *
- * Satellite Delivery System Descriptor (EN 300 468 v.1.13.1)
- */
- struct _GstMpegtsSatelliteDeliverySystemDescriptor
- {
- guint32 frequency;
- gfloat orbital_position;
- gboolean west_east;
- GstMpegtsSatellitePolarizationType polarization;
- GstMpegtsSatelliteRolloff roll_off;
- gboolean modulation_system;
- GstMpegtsModulationType modulation_type;
- guint32 symbol_rate;
- GstMpegtsDVBCodeRate fec_inner;
- };
- gboolean gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegtsDescriptor *descriptor,
- GstMpegtsSatelliteDeliverySystemDescriptor *res);
- /* GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM (0x44) */
- typedef enum {
- GST_MPEGTS_CABLE_OUTER_FEC_UNDEFINED = 0,
- GST_MPEGTS_CABLE_OUTER_FEC_NONE,
- GST_MPEGTS_CABLE_OUTER_FEC_RS_204_188,
- } GstMpegtsCableOuterFECScheme;
- typedef struct _GstMpegtsCableDeliverySystemDescriptor GstMpegtsCableDeliverySystemDescriptor;
- /**
- * GstMpegtsCableDeliverySystemDescriptor:
- * @frequency: the frequency in Hz (Hertz)
- * @outer_fec: the outer FEC scheme used
- * @modulation: Modulation scheme used
- * @symbol_rate: Symbol rate (in symbols per second)
- * @fec_inner: inner FEC scheme used
- *
- * Cable Delivery System Descriptor (EN 300 468 v.1.13.1)
- */
- struct _GstMpegtsCableDeliverySystemDescriptor
- {
- guint32 frequency;
- GstMpegtsCableOuterFECScheme outer_fec;
- GstMpegtsModulationType modulation;
- guint32 symbol_rate;
- GstMpegtsDVBCodeRate fec_inner;
- };
- gboolean gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegtsDescriptor *descriptor,
- GstMpegtsCableDeliverySystemDescriptor *res);
- /* GST_MTS_DESC_DVB_BOUQUET_NAME (0x47) */
- gboolean gst_mpegts_descriptor_parse_dvb_bouquet_name (const GstMpegtsDescriptor * descriptor,
- gchar ** bouquet_name);
- /* GST_MTS_DESC_DVB_SERVICE (0x48) */
- /**
- * GstMpegtsDVBServiceType:
- *
- * The type of service of a channel.
- *
- * As specified in Table 87 of ETSI EN 300 468 v1.13.1
- */
- typedef enum {
- GST_DVB_SERVICE_RESERVED_00 = 0x00,
- GST_DVB_SERVICE_DIGITAL_TELEVISION,
- GST_DVB_SERVICE_DIGITAL_RADIO_SOUND,
- GST_DVB_SERVICE_TELETEXT,
- GST_DVB_SERVICE_NVOD_REFERENCE,
- GST_DVB_SERVICE_NVOD_TIME_SHIFTED,
- GST_DVB_SERVICE_MOSAIC,
- GST_DVB_SERVICE_FM_RADIO,
- GST_DVB_SERVICE_DVB_SRM,
- GST_DVB_SERVICE_RESERVED_09,
- GST_DVB_SERVICE_ADVANCED_CODEC_DIGITAL_RADIO_SOUND,
- GST_DVB_SERVICE_ADVANCED_CODEC_MOSAIC,
- GST_DVB_SERVICE_DATA_BROADCAST,
- GST_DVB_SERVICE_RESERVED_0D_COMMON_INTERFACE,
- GST_DVB_SERVICE_RCS_MAP,
- GST_DVB_SERVICE_RCS_FLS,
- GST_DVB_SERVICE_DVB_MHP,
- GST_DVB_SERVICE_MPEG2_HD_DIGITAL_TELEVISION,
- /* 0x12 - 015 Reserved for future use */
- GST_DVB_SERVICE_ADVANCED_CODEC_SD_DIGITAL_TELEVISION = 0x16,
- GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_TIME_SHIFTED,
- GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_REFERENCE,
- GST_DVB_SERVICE_ADVANCED_CODEC_HD_DIGITAL_TELEVISION,
- GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_TIME_SHIFTED,
- GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_REFERENCE,
- GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_DIGITAL_TELEVISION,
- GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_TIME_SHIFTED,
- GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_REFERENCE,
- /* 0x1F - 0x7f Reserved for future use */
- /* 0x80 - 0xfe user defined */
- /* 0xff Reserved for future use */
- GST_DVB_SERVICE_RESERVED_FF
- } GstMpegtsDVBServiceType;
- gboolean gst_mpegts_descriptor_parse_dvb_service (const GstMpegtsDescriptor *descriptor,
- GstMpegtsDVBServiceType *service_type,
- gchar **service_name,
- gchar **provider_name);
- GstMpegtsDescriptor *gst_mpegts_descriptor_from_dvb_service (GstMpegtsDVBServiceType service_type,
- const gchar * service_name,
- const gchar * service_provider);
- /* GST_MTS_DESC_DVB_SERVICE_LIST (0x41) */
- typedef struct _GstMpegtsDVBServiceListItem GstMpegtsDVBServiceListItem;
- /**
- * GstMpegtsDVBServiceListItem:
- * @service_id: the id of a service
- * @type: the type of a service
- */
- struct _GstMpegtsDVBServiceListItem
- {
- guint16 service_id;
- GstMpegtsDVBServiceType type;
- };
- gboolean gst_mpegts_descriptor_parse_dvb_service_list (const GstMpegtsDescriptor * descriptor,
- GPtrArray ** list);
- /* GST_MTS_DESC_DVB_LINKAGE (0x4A) */
- /**
- * GstMpegtsDVBLinkageType:
- *
- * Linkage Type (EN 300 468 v.1.13.1)
- */
- typedef enum {
- /* 0x00, 0x0F-0x7F reserved for future use */
- GST_MPEGTS_DVB_LINKAGE_RESERVED_00 = 0x00,
- GST_MPEGTS_DVB_LINKAGE_INFORMATION = 0x01,
- GST_MPEGTS_DVB_LINKAGE_EPG = 0x02,
- GST_MPEGTS_DVB_LINKAGE_CA_REPLACEMENT = 0x03,
- GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_COMPLETE_SI = 0x04,
- GST_MPEGTS_DVB_LINKAGE_SERVICE_REPLACEMENT = 0x05,
- GST_MPEGTS_DVB_LINKAGE_DATA_BROADCAST = 0x06,
- GST_MPEGTS_DVB_LINKAGE_RCS_MAP = 0x07,
- GST_MPEGTS_DVB_LINKAGE_MOBILE_HAND_OVER = 0x08,
- GST_MPEGTS_DVB_LINKAGE_SYSTEM_SOFTWARE_UPDATE = 0x09,
- GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_SSU = 0x0A,
- GST_MPEGTS_DVB_LINKAGE_IP_MAC_NOTIFICATION = 0x0B,
- GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_INT = 0x0C,
- GST_MPEGTS_DVB_LINKAGE_EVENT = 0x0D,
- GST_MPEGTS_DVB_LINKAGE_EXTENDED_EVENT = 0x0E,
- } GstMpegtsDVBLinkageType;
- typedef enum {
- GST_MPEGTS_DVB_LINKAGE_HAND_OVER_RESERVED = 0x00,
- GST_MPEGTS_DVB_LINKAGE_HAND_OVER_IDENTICAL = 0x01,
- GST_MPEGTS_DVB_LINKAGE_HAND_OVER_LOCAL_VARIATION = 0x02,
- GST_MPEGTS_DVB_LINKAGE_HAND_OVER_ASSOCIATED = 0x03,
- } GstMpegtsDVBLinkageHandOverType;
- typedef struct _GstMpegtsDVBLinkageMobileHandOver GstMpegtsDVBLinkageMobileHandOver;
- typedef struct _GstMpegtsDVBLinkageEvent GstMpegtsDVBLinkageEvent;
- typedef struct _GstMpegtsDVBLinkageExtendedEvent GstMpegtsDVBLinkageExtendedEvent;
- typedef struct _GstMpegtsDVBLinkageDescriptor GstMpegtsDVBLinkageDescriptor;
- struct _GstMpegtsDVBLinkageMobileHandOver
- {
- GstMpegtsDVBLinkageHandOverType hand_over_type;
- /* 0 = NIT, 1 = SDT */
- gboolean origin_type;
- guint16 network_id;
- guint16 initial_service_id;
- };
- struct _GstMpegtsDVBLinkageEvent
- {
- guint16 target_event_id;
- gboolean target_listed;
- gboolean event_simulcast;
- };
- struct _GstMpegtsDVBLinkageExtendedEvent
- {
- guint16 target_event_id;
- gboolean target_listed;
- gboolean event_simulcast;
- /* FIXME: */
- guint8 link_type;
- /* FIXME: */
- guint8 target_id_type;
- gboolean original_network_id_flag;
- gboolean service_id_flag;
- /* if (target_id_type == 3) */
- guint16 user_defined_id;
- /* else */
- guint16 target_transport_stream_id;
- guint16 target_original_network_id;
- guint16 target_service_id;
- };
- /**
- * GstMpegtsDVBLinkageDescriptor:
- * @transport_stream_id: the transport id
- * @original_network_id: the original network id
- * @service_id: the service id
- * @linkage_type: the type which %linkage_data has
- * @private_data_length: the length for %private_data_bytes
- * @private_data_bytes: additional data bytes
- */
- struct _GstMpegtsDVBLinkageDescriptor
- {
- guint16 transport_stream_id;
- guint16 original_network_id;
- guint16 service_id;
- GstMpegtsDVBLinkageType linkage_type;
- /*< private >*/
- gpointer linkage_data;
- /*< public >*/
- guint8 private_data_length;
- guint8 *private_data_bytes;
- };
- #define GST_TYPE_MPEGTS_DVB_LINKAGE_DESCRIPTOR ( gst_mpegts_dvb_linkage_descriptor_get_type())
- GType gst_mpegts_dvb_linkage_descriptor_get_type (void);
- void gst_mpegts_dvb_linkage_descriptor_free (GstMpegtsDVBLinkageDescriptor * source);
- const GstMpegtsDVBLinkageMobileHandOver * gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over
- (const GstMpegtsDVBLinkageDescriptor * desc);
- const GstMpegtsDVBLinkageEvent * gst_mpegts_dvb_linkage_descriptor_get_event
- (const GstMpegtsDVBLinkageDescriptor * desc);
- const GPtrArray * gst_mpegts_dvb_linkage_descriptor_get_extended_event
- (const GstMpegtsDVBLinkageDescriptor * desc);
- gboolean gst_mpegts_descriptor_parse_dvb_linkage (const GstMpegtsDescriptor * descriptor,
- GstMpegtsDVBLinkageDescriptor ** res);
- /* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
- gboolean gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegtsDescriptor *descriptor,
- gchar **language_code,
- gchar **event_name,
- gchar **text);
- /* GST_MTS_DESC_DVB_EXTENDED_EVENT (0x4E) */
- typedef struct _GstMpegtsExtendedEventDescriptor GstMpegtsExtendedEventDescriptor;
- typedef struct _GstMpegtsExtendedEventItem GstMpegtsExtendedEventItem;
- /* FIXME : Maybe make a separate method for getting a specific item entry ? */
- struct _GstMpegtsExtendedEventItem
- {
- gchar *item_description;
- gchar *item;
- };
- /**
- * GstMpegtsExtendedEventDescriptor:
- * @desctiptor_number:
- * @last_descriptor_number:
- * @language_code: NULL terminated language code.
- * @items: (element-type GstMpegtsExtendedEventItem): the #GstMpegtsExtendedEventItem
- * @text:
- *
- * Extended Event Descriptor (EN 300 468 v.1.13.1)
- */
- struct _GstMpegtsExtendedEventDescriptor
- {
- guint8 descriptor_number;
- guint8 last_descriptor_number;
- gchar *language_code;
- GPtrArray *items;
- gchar *text;
- };
- #define GST_TYPE_MPEGTS_EXTENDED_EVENT_DESCRIPTOR (gst_mpegts_extended_event_descriptor_get_type())
- GType gst_mpegts_extended_event_descriptor_get_type (void);
- void gst_mpegts_extended_event_descriptor_free (GstMpegtsExtendedEventDescriptor * source);
- gboolean gst_mpegts_descriptor_parse_dvb_extended_event (const GstMpegtsDescriptor *descriptor,
- GstMpegtsExtendedEventDescriptor **res);
- /* GST_MTS_DESC_DVB_COMPONENT (0x50) */
- #define GST_TYPE_MPEGTS_COMPONENT_DESCRIPTOR (gst_mpegts_component_descriptor_get_type ())
- typedef enum {
- GST_MPEGTS_STREAM_CONTENT_MPEG2_VIDEO = 0x01,
- GST_MPEGTS_STREAM_CONTENT_MPEG1_LAYER2_AUDIO = 0x02,
- GST_MPEGTS_STREAM_CONTENT_TELETEXT_OR_SUBTITLE = 0x03,
- GST_MPEGTS_STREAM_CONTENT_AC_3 = 0x04,
- GST_MPEGTS_STREAM_CONTENT_AVC = 0x05,
- GST_MPEGTS_STREAM_CONTENT_AAC = 0x06,
- GST_MPEGTS_STREAM_CONTENT_DTS = 0x07,
- GST_MPEGTS_STREAM_CONTENT_SRM_CPCM = 0x08
- } GstMpegtsComponentStreamContent;
- typedef struct _GstMpegtsComponentDescriptor GstMpegtsComponentDescriptor;
- struct _GstMpegtsComponentDescriptor
- {
- guint8 stream_content;
- guint8 component_type;
- guint8 component_tag;
- gchar *language_code;
- gchar *text;
- };
- GType gst_mpegts_component_descriptor_get_type (void);
- void gst_mpegts_dvb_component_descriptor_free (GstMpegtsComponentDescriptor * source);
- gboolean gst_mpegts_descriptor_parse_dvb_component (const GstMpegtsDescriptor *descriptor,
- GstMpegtsComponentDescriptor **res);
- /* GST_MTS_DESC_DVB_STREAM_IDENTIFIER (0x52) */
- gboolean gst_mpegts_descriptor_parse_dvb_stream_identifier (const GstMpegtsDescriptor *descriptor,
- guint8 *component_tag);
- /* GST_MTS_DESC_DVB_CA_IDENTIFIER (0x53) */
- gboolean gst_mpegts_descriptor_parse_dvb_ca_identifier (const GstMpegtsDescriptor * descriptor,
- GArray ** list);
- /* GST_MTS_DESC_DVB_CONTENT (0x54) */
- typedef enum {
- GST_MPEGTS_CONTENT_MOVIE_DRAMA = 0x01,
- GST_MPEGTS_CONTENT_NEWS_CURRENT_AFFAIRS = 0x02,
- GST_MPEGTS_CONTENT_SHOW_GAME_SHOW = 0x03,
- GST_MPEGTS_CONTENT_SPORTS = 0x04,
- GST_MPEGTS_CONTENT_CHILDREN_YOUTH_PROGRAM = 0x05,
- GST_MPEGTS_CONTENT_MUSIC_BALLET_DANCE = 0x06,
- GST_MPEGTS_CONTENT_ARTS_CULTURE = 0x07,
- GST_MPEGTS_CONTENT_SOCIAL_POLITICAL_ECONOMICS = 0x08,
- GST_MPEGTS_CONTENT_EDUCATION_SCIENCE_FACTUAL = 0x09,
- GST_MPEGTS_CONTENT_LEISURE_HOBBIES = 0x0A,
- GST_MPEGTS_CONTENT_SPECIAL_CHARACTERISTICS = 0x0B
- } GstMpegtsContentNibbleHi;
- typedef struct _GstMpegtsContent GstMpegtsContent;
- struct _GstMpegtsContent
- {
- GstMpegtsContentNibbleHi content_nibble_1;
- guint8 content_nibble_2;
- guint8 user_byte;
- };
- gboolean gst_mpegts_descriptor_parse_dvb_content (const GstMpegtsDescriptor *
- descriptor, GPtrArray ** content);
- /* GST_MTS_DESC_DVB_PARENTAL_RATING (0x55) */
- typedef struct _GstMpegtsDVBParentalRatingItem GstMpegtsDVBParentalRatingItem;
- /**
- * GstMpegtsDVBParentalRating:
- * @country_code: This 24-bit field identifies a country using the 3-character
- * code as specified in ISO 3166
- * @rating: the rating age
- */
- struct _GstMpegtsDVBParentalRatingItem
- {
- gchar *country_code;
- guint8 rating;
- };
- gboolean gst_mpegts_descriptor_parse_dvb_parental_rating (const GstMpegtsDescriptor
- * descriptor, GPtrArray ** rating);
- /* GST_MTS_DESC_DVB_TELETEXT (0x56) */
- /**
- * GstMpegtsDVBTeletextType:
- *
- * The type of teletext page.
- *
- * As specified in Table 100 of ETSI EN 300 468 v1.13.1
- */
- typedef enum {
- INITIAL_PAGE = 0x01,
- SUBTITLE_PAGE,
- ADDITIONAL_INFO_PAGE,
- PROGRAMME_SCHEDULE_PAGE,
- HEARING_IMPAIRED_PAGE
- } GstMpegtsDVBTeletextType;
- gboolean gst_mpegts_descriptor_parse_dvb_teletext_idx (const GstMpegtsDescriptor *
- descriptor, guint idx, gchar ** language_code,
- GstMpegtsDVBTeletextType * teletext_type, guint8 * magazine_number,
- guint8 * page_number);
- guint gst_mpegts_descriptor_parse_dvb_teletext_nb (const GstMpegtsDescriptor *
- descriptor);
- /* GST_MTS_DESC_DVB_SUBTITLING (0x59) */
- gboolean gst_mpegts_descriptor_parse_dvb_subtitling_idx (const GstMpegtsDescriptor *descriptor,
- guint idx, gchar ** lang,
- guint8 *type, guint16 *composition_page_id,
- guint16 *ancillary_page_id);
- guint gst_mpegts_descriptor_parse_dvb_subtitling_nb (const GstMpegtsDescriptor *descriptor);
- GstMpegtsDescriptor * gst_mpegts_descriptor_from_dvb_subtitling (const gchar *lang,
- guint8 type, guint16 composition, guint16 ancillary);
- /* GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM (0x5A) */
- typedef struct _GstMpegtsTerrestrialDeliverySystemDescriptor GstMpegtsTerrestrialDeliverySystemDescriptor;
- typedef enum {
- GST_MPEGTS_TRANSMISSION_MODE_2K = 0,
- GST_MPEGTS_TRANSMISSION_MODE_8K,
- GST_MPEGTS_TRANSMISSION_MODE_AUTO,
- GST_MPEGTS_TRANSMISSION_MODE_4K,
- GST_MPEGTS_TRANSMISSION_MODE_1K,
- GST_MPEGTS_TRANSMISSION_MODE_16K,
- GST_MPEGTS_TRANSMISSION_MODE_32K,
- GST_MPEGTS_TRANSMISSION_MODE_C1,
- GST_MPEGTS_TRANSMISSION_MODE_C3780
- } GstMpegtsTerrestrialTransmissionMode;
- typedef enum {
- GST_MPEGTS_GUARD_INTERVAL_1_32 = 0,
- GST_MPEGTS_GUARD_INTERVAL_1_16,
- GST_MPEGTS_GUARD_INTERVAL_1_8,
- GST_MPEGTS_GUARD_INTERVAL_1_4,
- GST_MPEGTS_GUARD_INTERVAL_AUTO,
- GST_MPEGTS_GUARD_INTERVAL_1_128,
- GST_MPEGTS_GUARD_INTERVAL_19_128,
- GST_MPEGTS_GUARD_INTERVAL_19_256,
- GST_MPEGTS_GUARD_INTERVAL_PN420,
- GST_MPEGTS_GUARD_INTERVAL_PN595,
- GST_MPEGTS_GUARD_INTERVAL_PN945
- } GstMpegtsTerrestrialGuardInterval;
- typedef enum {
- GST_MPEGTS_HIERARCHY_NONE = 0,
- GST_MPEGTS_HIERARCHY_1,
- GST_MPEGTS_HIERARCHY_2,
- GST_MPEGTS_HIERARCHY_4,
- GST_MPEGTS_HIERARCHY_AUTO
- } GstMpegtsTerrestrialHierarchy;
- /**
- * GstMpegtsTerrestrialDeliverySystemDescriptor:
- * @frequency: the frequency in Hz (Hertz)
- * @bandwidth: the bandwidth in Hz (Hertz)
- * @priority: %TRUE High Priority %FALSE Low Priority
- * @time_slicing: %TRUE no time slicing %FALSE time slicing
- * @mpe_fec: %TRUE no mpe-fec is used %FALSE mpe-fec is use
- * @constellation: the constallation
- * @hierarchy: the hierarchy
- * @code_rate_hp:
- * @code_rate_lp:
- * @guard_interval:
- * @transmission_mode:
- * @other_frequency: %TRUE more frequency are use, else not
- *
- * Terrestrial Delivery System Descriptor (EN 300 468 v.1.13.1)
- */
- struct _GstMpegtsTerrestrialDeliverySystemDescriptor
- {
- guint32 frequency;
- guint32 bandwidth;
- gboolean priority;
- gboolean time_slicing;
- gboolean mpe_fec;
- GstMpegtsModulationType constellation;
- GstMpegtsTerrestrialHierarchy hierarchy;
- GstMpegtsDVBCodeRate code_rate_hp;
- GstMpegtsDVBCodeRate code_rate_lp;
- GstMpegtsTerrestrialGuardInterval guard_interval;
- GstMpegtsTerrestrialTransmissionMode transmission_mode;
- gboolean other_frequency;
- };
- gboolean gst_mpegts_descriptor_parse_terrestrial_delivery_system (const GstMpegtsDescriptor
- *descriptor, GstMpegtsTerrestrialDeliverySystemDescriptor * res);
- /* GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME (0x5B) */
- typedef struct _GstMpegtsDvbMultilingualNetworkNameItem GstMpegtsDvbMultilingualNetworkNameItem;
- /**
- * GstMpegtsDvbMultilingualNetworkNameItem:
- * @language_code: the ISO 639 language code
- * @network_name: the network name
- *
- * a multilingual network name entry
- */
- struct _GstMpegtsDvbMultilingualNetworkNameItem
- {
- gchar *language_code;
- gchar *network_name;
- };
- gboolean gst_mpegts_descriptor_parse_dvb_multilingual_network_name (const GstMpegtsDescriptor
- *descriptor, GPtrArray ** network_name_items);
- /* GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME (0x5C) */
- typedef struct _GstMpegtsDvbMultilingualBouquetNameItem GstMpegtsDvbMultilingualBouquetNameItem;
- /**
- * GstMpegtsDvbMultilingualBouquetNameItem:
- * @language_code: the ISO 639 language code
- * @bouquet_name: the bouquet name
- *
- * a multilingual bouquet name entry
- */
- struct _GstMpegtsDvbMultilingualBouquetNameItem
- {
- gchar *language_code;
- gchar *bouquet_name;
- };
- gboolean gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name (const GstMpegtsDescriptor
- *descriptor, GPtrArray ** bouquet_name_items);
- /* GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME (0x5D) */
- typedef struct _GstMpegtsDvbMultilingualServiceNameItem GstMpegtsDvbMultilingualServiceNameItem;
- /**
- * GstMpegtsDvbMultilingualServiceNameItem:
- * @language_code: the ISO 639 language code
- * @provider_name: the provider name
- * @service_name: the service name
- *
- * a multilingual service name entry
- */
- struct _GstMpegtsDvbMultilingualServiceNameItem
- {
- gchar *language_code;
- gchar *provider_name;
- gchar *service_name;
- };
- gboolean gst_mpegts_descriptor_parse_dvb_multilingual_service_name (const GstMpegtsDescriptor
- *descriptor, GPtrArray ** service_name_items);
- /* GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT (0x5E) */
- typedef struct _GstMpegtsDvbMultilingualComponentItem GstMpegtsDvbMultilingualComponentItem;
- /**
- * GstMpegtsDvbMultilingualComponentItem:
- * @language_code: the ISO 639 language code
- * @description: the component description
- */
- struct _GstMpegtsDvbMultilingualComponentItem
- {
- gchar *language_code;
- gchar *description;
- };
- gboolean gst_mpegts_descriptor_parse_dvb_multilingual_component (const GstMpegtsDescriptor
- *descriptor, guint8 * component_tag, GPtrArray ** component_description_items);
- /* GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER (0x5F) */
- gboolean gst_mpegts_descriptor_parse_dvb_private_data_specifier (const GstMpegtsDescriptor
- * descriptor, guint32 * private_data_specifier, guint8 ** private_data,
- guint8 * length);
- /* GST_MTS_DESC_DVB_FREQUENCY_LIST (0x62) */
- gboolean gst_mpegts_descriptor_parse_dvb_frequency_list (const GstMpegtsDescriptor
- * descriptor, gboolean * offset, GArray ** list);
- /* GST_MTS_DESC_DVB_DATA_BROADCAST (0x64) */
- typedef struct _GstMpegtsDataBroadcastDescriptor GstMpegtsDataBroadcastDescriptor;
- /**
- * GstMpegtsDataBroadcastDescriptor:
- * @data_broadcast_id: the data broadcast id
- * @component_tag: the component tag
- * @selector_bytes: the selector byte field
- * @language_code: language of @text
- * @text: description of data broadcast
- */
- struct _GstMpegtsDataBroadcastDescriptor
- {
- guint16 data_broadcast_id;
- guint8 component_tag;
- guint8 length;
- guint8 *selector_bytes;
- gchar *language_code;
- gchar *text;
- };
- #define GST_TYPE_MPEGTS_DVB_DATA_BROADCAST_DESCRIPTOR (gst_mpegts_dvb_data_broadcast_descriptor_get_type ())
- GType gst_mpegts_dvb_data_broadcast_descriptor_get_type (void);
- void gst_mpegts_dvb_data_broadcast_descriptor_free (GstMpegtsDataBroadcastDescriptor * source);
- gboolean gst_mpegts_descriptor_parse_dvb_data_broadcast (const GstMpegtsDescriptor
- *descriptor, GstMpegtsDataBroadcastDescriptor ** res);
- /* GST_MTS_DESC_DVB_SCRAMBLING (0x65) */
- typedef enum
- {
- GST_MPEGTS_DVB_SCRAMBLING_MODE_RESERVED = 0x00,
- GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA1 = 0x01,
- GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA2 = 0x02,
- GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_STANDARD = 0x03,
- GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_MINIMAL_ENHANCED = 0x04,
- GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_FULL_ENHANCED = 0x05,
- /* 0x06 - 0x0f reserved for future use */
- GST_MPEGTS_DVB_SCRAMBLING_MODE_CISSA = 0x10,
- /* 0x11 - 0x1f reserved for future DVB-CISSA versions */
- GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_0 = 0x70,
- GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_F = 0x7f,
- } GstMpegtsDVBScramblingModeType;
- gboolean gst_mpegts_descriptor_parse_dvb_scrambling (const GstMpegtsDescriptor * descriptor,
- GstMpegtsDVBScramblingModeType * scrambling_mode);
- /* GST_MTS_DESC_DVB_DATA_BROADCAST_ID (0x66) */
- gboolean gst_mpegts_descriptor_parse_dvb_data_broadcast_id (const GstMpegtsDescriptor
- * descriptor, guint16 * data_broadcast_id, guint8 ** id_selector_bytes, guint8 * len);
- /* GST_MTS_DESC_DVB_AC3 (0x6a) */
- /* FIXME : Implement */
- /* GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM (0x7F && 0x04) */
- typedef struct _GstMpegtsT2DeliverySystemCellExtension GstMpegtsT2DeliverySystemCellExtension;
- /**
- * GstMpegtsT2DeliverySystemCellExtension:
- * @cell_id_extension: id of the sub cell
- * @transposer_frequency: centre frequency of the sub cell in Hz
- */
- struct _GstMpegtsT2DeliverySystemCellExtension
- {
- guint8 cell_id_extension;
- guint32 transposer_frequency;
- };
- typedef struct _GstMpegtsT2DeliverySystemCell GstMpegtsT2DeliverySystemCell;
- /**
- * GstMpegtsT2DeliverySystemCell:
- * @cell_id: id of the cell
- * @centre_frequencies: (element-type guint32): centre frequencies in Hz
- * @sub_cells: (element-type GstMpegtsT2DeliverySystemCellExtension):
- */
- struct _GstMpegtsT2DeliverySystemCell
- {
- guint16 cell_id;
- GArray *centre_frequencies;
- GPtrArray *sub_cells;
- };
- typedef struct _GstMpegtsT2DeliverySystemDescriptor GstMpegtsT2DeliverySystemDescriptor;
- /**
- * GstMpegtsT2DeliverySystemDescriptor:
- * @plp_id:
- * @t2_system_id:
- * @siso_miso:
- * @bandwidth:
- * @guard_interval:
- * @transmission_mode:
- * @other_frequency:
- * @tfs:
- * @cells: (element-type GstMpegtsT2DeliverySystemCell):
- *
- * describe DVB-T2 transmissions according to EN 302 755
- */
- struct _GstMpegtsT2DeliverySystemDescriptor
- {
- guint8 plp_id;
- guint16 t2_system_id;
- /* FIXME: */
- guint8 siso_miso;
- guint32 bandwidth;
- GstMpegtsTerrestrialGuardInterval guard_interval;
- GstMpegtsTerrestrialTransmissionMode transmission_mode;
- gboolean other_frequency;
- gboolean tfs;
- GPtrArray *cells;
- };
- #define GST_TYPE_MPEGTS_T2_DELIVERY_SYSTEM_DESCRIPTOR (gst_mpegts_t2_delivery_system_descriptor_get_type ())
- GType gst_mpegts_t2_delivery_system_descriptor_get_type (void);
- void gst_mpegts_t2_delivery_system_descriptor_free (GstMpegtsT2DeliverySystemDescriptor * source);
- gboolean gst_mpegts_descriptor_parse_dvb_t2_delivery_system (const GstMpegtsDescriptor
- *descriptor, GstMpegtsT2DeliverySystemDescriptor ** res);
- G_END_DECLS
- #endif /* GST_MPEGTS_DESCRIPTOR_H */
|