DVB variants of MPEG-TS sections

## DVB variants of MPEG-TS sections DVB variants of MPEG-TS sections — Sections for the various DVB specifications |

## Synopsis

    #include <gst/mpegts/mpegts.h>

    enum                GstMpegTsSectionDVBTableID;

    struct              GstMpegTsNIT;
    struct              GstMpegTsNITStream;
    const GstMpegTsNIT * gst_mpegts_section_get_nit         (GstMpegTsSection *section);

    struct              GstMpegTsBAT;
    struct              GstMpegTsBATStream;

    struct              GstMpegTsSDT;
    struct              GstMpegTsSDTService;
    const GstMpegTsSDT * gst_mpegts_section_get_sdt         (GstMpegTsSection *section);

    struct              GstMpegTsEIT;
    struct              GstMpegTsEITEvent;
    enum                GstMpegTsRunningStatus;
    const GstMpegTsEIT * gst_mpegts_section_get_eit         (GstMpegTsSection *section);

    GstDateTime *       gst_mpegts_section_get_tdt          (GstMpegTsSection *section);

    struct              GstMpegTsTOT;
    const GstMpegTsTOT * gst_mpegts_section_get_tot         (GstMpegTsSection *section);

## Object Hierarchy

      GEnum
       +----GstMpegTsRunningStatus

## Description

## Details

### enum GstMpegTsSectionDVBTableID

    typedef enum {
      /* EN 300 468 (DVB) v 1.12.1 */
      GST_MTS_TABLE_ID_NETWORK_INFORMATION_ACTUAL_NETWORK = 0x40,
      GST_MTS_TABLE_ID_NETWORK_INFORMATION_OTHER_NETWORK = 0x41,
      GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_ACTUAL_TS = 0x42,
      GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_OTHER_TS		= 0x46,
      GST_MTS_TABLE_ID_BOUQUET_ASSOCIATION			= 0x4A,
      GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT = 0x4E,
      GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_PRESENT = 0x4F,
      GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_1 = 0x50,
      GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_N = 0x5F,
      GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_1 = 0x60,
      GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_N = 0x6F,
      GST_MTS_TABLE_ID_TIME_DATE				= 0x70,
      GST_MTS_TABLE_ID_RUNNING_STATUS			= 0x71,
      GST_MTS_TABLE_ID_STUFFING				= 0x72,
      GST_MTS_TABLE_ID_TIME_OFFSET				= 0x73,

      /* TS 102 812 (MHP v1.1.3) */
      GST_MTS_TABLE_ID_APPLICATION_INFORMATION_TABLE = 0x74,

      /* TS 102 323 (DVB TV Anytime v1.5.1) */
      GST_MTS_TABLE_ID_CONTAINER				= 0x75,
      GST_MTS_TABLE_ID_RELATED_CONTENT			= 0x76,
      GST_MTS_TABLE_ID_CONTENT_IDENTIFIER			= 0x77,

      /* EN 301 192 (DVB specification for data broadcasting) */
      GST_MTS_TABLE_ID_MPE_FEC				= 0x78,

      /* TS 102 323 (DVB TV Anytime v1.5.1) */
      GST_MTS_TABLE_ID_RESOLUTION_NOTIFICATION		= 0x79,

      /* TS 102 772 (DVB-SH Multi-Protocol Encapsulation) */
      GST_MTS_TABLE_ID_MPE_IFEC				= 0x7A,

      /* EN 300 468 (DVB) v 1.12.1 */
      GST_MTS_TABLE_ID_DISCONTINUITY_INFORMATION		= 0x7E,
      GST_MTS_TABLE_ID_SELECTION_INFORMATION		= 0x7F,

      /* ETR 289 (DVB Support for use of scrambling and CA) */
      GST_MTS_TABLE_ID_CA_MESSAGE_ECM_0			= 0x80,
      GST_MTS_TABLE_ID_CA_MESSAGE_ECM_1			= 0x81,
      GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_1		= 0x82,
      GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_N		= 0x8F,

      /* ... */

      /* EN 301 790 (DVB interaction channel for satellite distribution channels) */
      GST_MTS_TABLE_ID_SCT					= 0xA0,
      GST_MTS_TABLE_ID_FCT					= 0xA1,
      GST_MTS_TABLE_ID_TCT					= 0xA2,
      GST_MTS_TABLE_ID_SPT					= 0xA3,
      GST_MTS_TABLE_ID_CMT					= 0xA4,
      GST_MTS_TABLE_ID_TBTP					= 0xA5,
      GST_MTS_TABLE_ID_PCR_PACKET_PAYLOAD			= 0xA6,
      GST_MTS_TABLE_ID_TRANSMISSION_MODE_SUPPORT_PAYLOAD = 0xAA,
      GST_MTS_TABLE_ID_TIM					= 0xB0,
      GST_MTS_TABLE_ID_LL_FEC_PARITY_DATA_TABLE		= 0xB1
    } GstMpegTsSectionDVBTableID;

Values for a GstMpegTsSection table_id.

These are the registered DVB table_id variants.

see also: GstMpegTsSectionTableID

`GST_MTS_TABLE_ID_NETWORK_INFORMATION_ACTUAL_NETWORK` |
`GST_MTS_TABLE_ID_NETWORK_INFORMATION_OTHER_NETWORK` |
`GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_ACTUAL_TS` |
`GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_OTHER_TS` |
`GST_MTS_TABLE_ID_BOUQUET_ASSOCIATION` |
`GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT` |
`GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_PRESENT` |
`GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_1` |
`GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_N` |
`GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_1` |
`GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_N` |
`GST_MTS_TABLE_ID_TIME_DATE` |
`GST_MTS_TABLE_ID_RUNNING_STATUS` |
`GST_MTS_TABLE_ID_STUFFING` |
`GST_MTS_TABLE_ID_TIME_OFFSET` |
`GST_MTS_TABLE_ID_APPLICATION_INFORMATION_TABLE` |
`GST_MTS_TABLE_ID_CONTAINER` |
`GST_MTS_TABLE_ID_RELATED_CONTENT` |
`GST_MTS_TABLE_ID_CONTENT_IDENTIFIER` |
`GST_MTS_TABLE_ID_MPE_FEC` |
`GST_MTS_TABLE_ID_RESOLUTION_NOTIFICATION` |
`GST_MTS_TABLE_ID_MPE_IFEC` |
`GST_MTS_TABLE_ID_DISCONTINUITY_INFORMATION` |
`GST_MTS_TABLE_ID_SELECTION_INFORMATION` |
`GST_MTS_TABLE_ID_CA_MESSAGE_ECM_0` |
`GST_MTS_TABLE_ID_CA_MESSAGE_ECM_1` |
`GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_1` |
`GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_N` |
`GST_MTS_TABLE_ID_SCT` |
`GST_MTS_TABLE_ID_FCT` |
`GST_MTS_TABLE_ID_TCT` |
`GST_MTS_TABLE_ID_SPT` |
`GST_MTS_TABLE_ID_CMT` |
`GST_MTS_TABLE_ID_TBTP` |
`GST_MTS_TABLE_ID_PCR_PACKET_PAYLOAD` |
`GST_MTS_TABLE_ID_TRANSMISSION_MODE_SUPPORT_PAYLOAD` |
`GST_MTS_TABLE_ID_TIM` |
`GST_MTS_TABLE_ID_LL_FEC_PARITY_DATA_TABLE` |

### struct GstMpegTsNIT

    struct GstMpegTsNIT {
      gboolean   actual_network;

      GPtrArray  *descriptors;

      GPtrArray *streams;
    };

Network Information Table (ISO/IEC 13818-1 / EN 300 468)

The network_id is contained in the subtable_extension field of the container GstMpegTsSection.

gboolean `actual_network`; | Whether this NIT corresponds to the actual stream
GPtrArray *`descriptors`; | the global descriptors. [element-type GstMpegTsDescriptor]
GPtrArray *`streams`; | the streams. [element-type GstMpegTsNITStream]

### struct GstMpegTsNITStream

    struct GstMpegTsNITStream {
      guint16  transport_stream_id;
      guint16  original_network_id;

      GPtrArray  *descriptors;
    };

guint16 `transport_stream_id`; |
guint16 `original_network_id`; |
GPtrArray *`descriptors`; | . [element-type GstMpegTsDescriptor]

### gst_mpegts_section_get_nit ()

    const GstMpegTsNIT * gst_mpegts_section_get_nit         (GstMpegTsSection *section);

Returns the GstMpegTsNIT contained in the `section`.

`section` : | a GstMpegTsSection of type `GST_MPEGTS_SECTION_NIT`
Returns : | The GstMpegTsNIT contained in the section, or `NULL` if an error happened.

### struct GstMpegTsBAT

    struct GstMpegTsBAT {
      GPtrArray     *descriptors;

      GPtrArray  *streams;
    };

`descriptors`: (element-type GstMpegTsDescriptor): `streams`: (element-type GstMpegTsBATStream):

DVB Bouquet Association Table (EN 300 468)

### struct GstMpegTsBATStream

    struct GstMpegTsBATStream {
      guint16   transport_stream_id;
      guint16   original_network_id;

      GPtrArray   *descriptors;
    };

### struct GstMpegTsSDT

    struct GstMpegTsSDT {
      guint16    original_network_id;
      gboolean   actual_ts;

      GPtrArray *services;
    };

`services`: (element-type GstMpegTsSDTService): List of services

Service Description Table (EN 300 468)

### struct GstMpegTsSDTService

    struct GstMpegTsSDTService {
      guint16    service_id;

      gboolean   EIT_schedule_flag;
      gboolean   EIT_present_following_flag;
      GstMpegTsRunningStatus running_status;
      gboolean   free_CA_mode;

      GPtrArray    *descriptors;
    };

`descriptors`: (element-type GstMpegTsDescriptor): List of descriptors

### gst_mpegts_section_get_sdt ()

    const GstMpegTsSDT * gst_mpegts_section_get_sdt         (GstMpegTsSection *section);

Returns the GstMpegTsSDT contained in the `section`.

`section` : | a GstMpegTsSection of type `GST_MPEGTS_SECTION_SDT`
Returns : | The GstMpegTsSDT contained in the section, or `NULL` if an error happened.

### struct GstMpegTsEIT

    struct GstMpegTsEIT {
      guint16        transport_stream_id;
      guint16        original_network_id;
      guint8         segment_last_section_number;
      guint8         last_table_id;

      gboolean       actual_stream;
      gboolean       present_following;

      GPtrArray     *events;
    };

`events`: (element-type GstMpegTsEITEvent): List of events

Event Information Table (EN 300 468)

### struct GstMpegTsEITEvent

    struct GstMpegTsEITEvent {
      guint16      event_id;

      GstDateTime *start_time;
      guint32      duration;

      GstMpegTsRunningStatus running_status;
      gboolean     free_CA_mode;

      GPtrArray      *descriptors;
    };

`descriptors`: (element-type GstMpegTsDescriptor): List of descriptors

Event from a `GstMpegTsEIT`

### enum GstMpegTsRunningStatus

    typedef enum {
      GST_MPEGTS_RUNNING_STATUS_UNDEFINED = 0,
      GST_MPEGTS_RUNNING_STATUS_NOT_RUNNING,
      GST_MPEGTS_RUNNING_STATUS_STARTS_IN_FEW_SECONDS,
      GST_MPEGTS_RUNNING_STATUS_PAUSING,
      GST_MPEGTS_RUNNING_STATUS_RUNNING,
      GST_MPEGTS_RUNNING_STATUS_OFF_AIR
    } GstMpegTsRunningStatus;

Running status of a service.

Corresponds to table 6 of ETSI EN 300 468 (v1.13.0)

`GST_MPEGTS_RUNNING_STATUS_UNDEFINED` |
`GST_MPEGTS_RUNNING_STATUS_NOT_RUNNING` |
`GST_MPEGTS_RUNNING_STATUS_STARTS_IN_FEW_SECONDS` |
`GST_MPEGTS_RUNNING_STATUS_PAUSING` |
`GST_MPEGTS_RUNNING_STATUS_RUNNING` |
`GST_MPEGTS_RUNNING_STATUS_OFF_AIR` |

### gst_mpegts_section_get_eit ()

    const GstMpegTsEIT * gst_mpegts_section_get_eit         (GstMpegTsSection *section);

Returns the GstMpegTsEIT contained in the `section`.

`section` : | a GstMpegTsSection of type `GST_MPEGTS_SECTION_EIT`
Returns : | The GstMpegTsEIT contained in the section, or `NULL` if an error happened.

### gst_mpegts_section_get_tdt ()

    GstDateTime *       gst_mpegts_section_get_tdt          (GstMpegTsSection *section);

Returns the GstDateTime of the TDT

`section` : | a GstMpegTsSection of type `GST_MPEGTS_SECTION_TDT`
Returns : | The GstDateTime contained in the section, or `NULL` if an error happened. Release with gst_date_time_unref when done.

### struct GstMpegTsTOT

    struct GstMpegTsTOT {
      GstDateTime   *utc_time;

      GPtrArray        *descriptors;
    };

`descriptors`: (element-type GstMpegTsDescriptor): List of descriptors

Time Offset Table (EN 300 468)

### gst_mpegts_section_get_tot ()

    const GstMpegTsTOT * gst_mpegts_section_get_tot         (GstMpegTsSection *section);

Returns the GstMpegTsTOT contained in the `section`.

`section` : | a GstMpegTsSection of type `GST_MPEGTS_SECTION_TOT`
Returns : | The GstMpegTsTOT contained in the section, or `NULL` if an error happened.