## Base MPEG-TS sections

Base MPEG-TS sections — Sections for ITU H.222.0 | ISO/IEC 13818-1

## Functions

#define | GST_MPEGTS_SECTION_TYPE()
GstMessage * | gst_message_new_mpegts_section ()
GstMpegtsSection * | gst_message_parse_mpegts_section ()
gboolean | gst_mpegts_section_send_event ()
GstMpegtsSection * | gst_event_parse_mpegts_section ()
guint8 * | gst_mpegts_section_packetize ()
GstMpegtsSection * | gst_mpegts_section_new ()
#define | gst_mpegts_section_ref()
#define | gst_mpegts_section_unref()
GPtrArray * | gst_mpegts_section_get_pat ()
GPtrArray * | gst_mpegts_pat_new ()
GstMpegtsPatProgram * | gst_mpegts_pat_program_new ()
GstMpegtsSection * | gst_mpegts_section_from_pat ()
const GstMpegtsPMT * | gst_mpegts_section_get_pmt ()
GstMpegtsPMT * | gst_mpegts_pmt_new ()
GstMpegtsPMTStream * | gst_mpegts_pmt_stream_new ()
GstMpegtsSection * | gst_mpegts_section_from_pmt ()
GPtrArray * | gst_mpegts_section_get_tsdt ()
GPtrArray * | gst_mpegts_section_get_cat ()

## Types and Values

struct | GstMpegtsSection
enum | GstMpegtsSectionTableID
enum | GstMpegtsSectionType
struct | GstMpegtsPatProgram
struct | GstMpegtsPMT
struct | GstMpegtsPMTStream
enum | GstMpegtsStreamType

## Object Hierarchy

        GBoxed
        ╰── GstMpegtsSection
        GEnum
        ├── GstMpegtsSectionTableID
        ├── GstMpegtsSectionType
        ╰── GstMpegtsStreamType

## Includes

    #include <gst/mpegts/mpegts.h>

## Description

For more details, refer to the ITU H.222.0 or ISO/IEC 13818-1 specifications and other specifications mentionned in the documentation.

## Functions

### GST_MPEGTS_SECTION_TYPE()

    #define GST_MPEGTS_SECTION_TYPE(section) (GST_MPEGTS_SECTION (section)->section_type)

### gst_message_new_mpegts_section ()

    GstMessage *
    gst_message_new_mpegts_section (GstObject *parent,
                                    GstMpegtsSection *section);

Creates a new GstMessage for a `GstMpegtsSection` .

#### Parameters

parent | The creator of the message. | [transfer none]
section | The GstMpegtsSection to put in a message. | [transfer none]

#### Returns

The new GstMessage to be posted, or `NULL` if the section is not valid.

[transfer full]

### gst_message_parse_mpegts_section ()

    GstMpegtsSection *
    gst_message_parse_mpegts_section (GstMessage *message);

Returns the GstMpegtsSection contained in a message.

#### Parameters

message | a GstMessage |

#### Returns

the contained GstMpegtsSection, or `NULL`.

[transfer full]

### gst_mpegts_section_send_event ()

    gboolean
    gst_mpegts_section_send_event (GstMpegtsSection *section,
                                   GstElement *element);

Creates a custom GstEvent with a `GstMpegtsSection` . The GstEvent is sent to the `element` GstElement.

#### Parameters

element | The GstElement to send to section event to. | [transfer none]
section | The GstMpegtsSection to put in the event. | [transfer none]

#### Returns

`TRUE` if the event is sent

### gst_event_parse_mpegts_section ()

    GstMpegtsSection *
    gst_event_parse_mpegts_section (GstEvent *event);

Extracts the GstMpegtsSection contained in the `event` GstEvent

#### Parameters

event | GstEvent containing a GstMpegtsSection. | [transfer none]

#### Returns

The extracted GstMpegtsSection.

[transfer full]

### gst_mpegts_section_packetize ()

    guint8 *
    gst_mpegts_section_packetize (GstMpegtsSection *section,
                                  gsize *output_size);

If the data in `section` has aldready been packetized, the data pointer is returned immediately. Otherwise, the data field is allocated and populated.

#### Parameters

section | the GstMpegtsSection that holds the data. | [transfer none]
output_size | gsize to hold the size of the data. | [out]

#### Returns

pointer to section data, or `NULL` on fail.

[transfer none]

### gst_mpegts_section_new ()

    GstMpegtsSection *
    gst_mpegts_section_new (guint16 pid,
                            guint8 *data,
                            gsize data_size);

Creates a new GstMpegtsSection from the provided `data` .

Note: Ensuring `data` is big enough to contain the full section is the responsibility of the caller. If it is not big enough, `NULL` will be returned.

Note: it is the responsibility of the caller to ensure `data` does point to the beginning of the section.

#### Parameters

pid | the PID to which this section belongs |
data | a pointer to the beginning of the section (i.e. the first byte should contain the table_id field). | [transfer full]
data_size | size of the `data` argument. |

#### Returns

A new GstMpegtsSection if the data was valid, else `NULL`.

[transfer full]

### gst_mpegts_section_ref()

    #define gst_mpegts_section_ref(section)   ((GstMpegtsSection*) gst_mini_object_ref (GST_MINI_OBJECT_CAST (section)))

### gst_mpegts_section_unref()

    #define gst_mpegts_section_unref(section) (gst_mini_object_unref (GST_MINI_OBJECT_CAST (section)))

### gst_mpegts_section_get_pat ()

    GPtrArray *
    gst_mpegts_section_get_pat (GstMpegtsSection *section);

Parses a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).

Returns the array of GstMpegtsPatProgram contained in the section.

Note: The PAT "transport_id" field corresponds to the "subtable_extension" field of the provided `section` .

#### Parameters

section | a GstMpegtsSection of type `GST_MPEGTS_SECTION_PAT` |

#### Returns

The GstMpegtsPatProgram contained in the section, or `NULL` if an error happened. Release with g_ptr_array_unref when done.

[transfer container][element-type GstMpegtsPatProgram]

### gst_mpegts_pat_new ()

    GPtrArray *
    gst_mpegts_pat_new (void);

Allocates a new GPtrArray for GstMpegtsPatProgram

#### Returns

A newly allocated GPtrArray.

[transfer full][element-type GstMpegtsPatProgram]

### gst_mpegts_pat_program_new ()

    GstMpegtsPatProgram *
    gst_mpegts_pat_program_new (void);

Allocates a new GstMpegtsPatProgram.

#### Returns

A newly allocated GstMpegtsPatProgram.

[transfer full]

### gst_mpegts_section_from_pat ()

    GstMpegtsSection *
    gst_mpegts_section_from_pat (GPtrArray *programs,
                                 guint16 ts_id);

Creates a PAT GstMpegtsSection from the `programs` array of GstMpegtsPatPrograms

#### Parameters

programs | an array of GstMpegtsPatProgram. | [transfer full][element-type GstMpegtsPatProgram]
ts_id | Transport stream ID of the PAT |

#### Returns

a GstMpegtsSection.

[transfer full]

### gst_mpegts_section_get_pmt ()

    const GstMpegtsPMT *
    gst_mpegts_section_get_pmt (GstMpegtsSection *section);

Returns the GstMpegtsPMT contained in the `section` .

#### Parameters

section | a GstMpegtsSection of type `GST_MPEGTS_SECTION_PMT` |

#### Returns

The GstMpegtsPMT contained in the section, or `NULL` if an error happened.

### gst_mpegts_pmt_new ()

    GstMpegtsPMT *
    gst_mpegts_pmt_new (void);

Allocates and initializes a new GstMpegtsPMT.

#### Returns

GstMpegtsPMT.

[transfer full]

### gst_mpegts_pmt_stream_new ()

    GstMpegtsPMTStream *
    gst_mpegts_pmt_stream_new (void);

Allocates and initializes a new GstMpegtsPMTStream.

#### Returns

GstMpegtsPMTStream.

[transfer full]

### gst_mpegts_section_from_pmt ()

    GstMpegtsSection *
    gst_mpegts_section_from_pmt (GstMpegtsPMT *pmt,
                                 guint16 pid);

Creates a GstMpegtsSection from `pmt` that is bound to `pid`

#### Parameters

pmt | a GstMpegtsPMT to create a GstMpegtsSection from. | [transfer full]
pid | The PID that the GstMpegtsPMT belongs to |

#### Returns

GstMpegtsSection.

[transfer full]

### gst_mpegts_section_get_tsdt ()

    GPtrArray *
    gst_mpegts_section_get_tsdt (GstMpegtsSection *section);

Returns the array of GstMpegtsDescriptor contained in the section

#### Parameters

section | a GstMpegtsSection of type `GST_MPEGTS_SECTION_TSDT` |

#### Returns

The GstMpegtsDescriptor contained in the section, or `NULL` if an error happened. Release with g_array_unref when done.

[transfer container][element-type GstMpegtsDescriptor]

### gst_mpegts_section_get_cat ()

    GPtrArray *
    gst_mpegts_section_get_cat (GstMpegtsSection *section);

Returns the array of GstMpegtsDescriptor contained in the Condtional Access Table.

#### Parameters

section | a GstMpegtsSection of type `GST_MPEGTS_SECTION_CAT` |

#### Returns

The GstMpegtsDescriptor contained in the section, or `NULL` if an error happened. Release with g_array_unref when done.

[transfer container][element-type GstMpegtsDescriptor]

## Types and Values

### struct GstMpegtsSection

    struct GstMpegtsSection {
      GstMpegtsSectionType   section_type;

      guint16       pid;
      guint8        table_id;

      guint16       subtable_extension;
      guint8        version_number;

      gboolean      current_next_indicator;

      guint8        section_number;
      guint8        last_section_number;

      guint32       crc;
    };

Mpeg-TS Section Information (SI) (ISO/IEC 13818-1)

#### Members

GstMpegtsSectionType `section_type`; | The type of section |
guint16 `pid`; | The pid on which this section was found |
guint8 `table_id`; | The table id of this section |
guint16 `subtable_extension`; | This meaning differs per section. See the documentation of the parsed section type for the meaning of this field |
guint8 `version_number`; | Version of the section. |
gboolean `current_next_indicator`; | Applies to current/next stream or not |
guint8 `section_number`; | Number of the section (if multiple) |
guint8 `last_section_number`; | Number of the last expected section (if multiple) |
guint32 `crc`; | CRC |

### enum GstMpegtsSectionTableID

Values for a GstMpegtsSection table_id

These are the registered ITU H.222.0 | ISO/IEC 13818-1 table_id variants.

see also GstMpegtsSectionATSCTableID, GstMpegtsSectionDVBTableID, and GstMpegtsSectionSCTETableID

#### Members

GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION |  |
GST_MTS_TABLE_ID_CONDITIONAL_ACCESS |  |
GST_MTS_TABLE_ID_TS_PROGRAM_MAP |  |
GST_MTS_TABLE_ID_TS_DESCRIPTION |  |
GST_MTS_TABLE_ID_14496_SCENE_DESCRIPTION |  |
GST_MTS_TABLE_ID_14496_OBJET_DESCRIPTOR |  |
GST_MTS_TABLE_ID_METADATA |  |
GST_MTS_TABLE_ID_IPMP_CONTROL_INFORMATION |  |
GST_MTS_TABLE_ID_DSM_CC_MULTIPROTO_ENCAPSULATED_DATA |  |
GST_MTS_TABLE_ID_DSM_CC_U_N_MESSAGES |  |
GST_MTS_TABLE_ID_DSM_CC_DOWNLOAD_DATA_MESSAGES |  |
GST_MTS_TABLE_ID_DSM_CC_STREAM_DESCRIPTORS |  |
GST_MTS_TABLE_ID_DSM_CC_PRIVATE_DATA |  |
GST_MTS_TABLE_ID_DSM_CC_ADDRESSABLE_SECTIONS |  |
GST_MTS_TABLE_ID_UNSET |  |

### enum GstMpegtsSectionType

Types of GstMpegtsSection that the library handles.

#### Members

GST_MPEGTS_SECTION_UNKNOWN | Unknown section type |
GST_MPEGTS_SECTION_PAT | Program Association Table (ISO/IEC 13818-1) |
GST_MPEGTS_SECTION_PMT | Program Map Table (ISO/IEC 13818-1) |
GST_MPEGTS_SECTION_CAT | Conditional Access Table (ISO/IEC 13818-1) |
GST_MPEGTS_SECTION_TSDT | Transport Stream Description Table (ISO/IEC 13818-1) |
GST_MPEGTS_SECTION_EIT | Event Information Table (EN 300 468) |
GST_MPEGTS_SECTION_NIT | Network Information Table (ISO/IEC 13818-1 / EN 300 468) |
GST_MPEGTS_SECTION_BAT | Bouquet Association Table ((EN 300 468) |
GST_MPEGTS_SECTION_SDT | Service Description Table (EN 300 468) |
GST_MPEGTS_SECTION_TDT | Time and Date Table (EN 300 468) |
GST_MPEGTS_SECTION_TOT | Time Offset Table (EN 300 468) |
GST_MPEGTS_SECTION_ATSC_TVCT | ATSC Terrestrial Virtual Channel Table (A65) |
GST_MPEGTS_SECTION_ATSC_CVCT | ATSC Cable Virtual Channel Table (A65) |
GST_MPEGTS_SECTION_ATSC_MGT | ATSC Master Guide Table (A65) |
GST_MPEGTS_SECTION_ATSC_ETT | ATSC Extended Text Table (A65) |
GST_MPEGTS_SECTION_ATSC_EIT | ATSC Event Information Table (A65) |
GST_MPEGTS_SECTION_ATSC_STT | ATSC System Time Table (A65) |

### struct GstMpegtsPatProgram

    struct GstMpegtsPatProgram {
      guint16 program_number;
      guint16 network_or_program_map_PID;
    };

A program entry from a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).

#### Members

guint16 `program_number`; | the program number |
guint16 `network_or_program_map_PID`; | the network of program map PID |

### struct GstMpegtsPMT

    struct GstMpegtsPMT {
      guint16    pcr_pid;
      guint16    program_number;

      GPtrArray *descriptors;
      GPtrArray *streams;
    };

Program Map Table (ISO/IEC 13818-1).

The program_number is contained in the subtable_extension field of the container GstMpegtsSection.

#### Members

guint16 `pcr_pid`; | PID of the stream containing PCR |
guint16 `program_number`; |  |
GPtrArray *`descriptors`; | array of GstMpegtsDescriptor. | [element-type GstMpegtsDescriptor]
GPtrArray *`streams`; | Array of GstMpegtsPMTStream. | [element-type GstMpegtsPMTStream]

### struct GstMpegtsPMTStream

    struct GstMpegtsPMTStream {
      guint8      stream_type;
      guint16     pid;

      GPtrArray  *descriptors;
    };

An individual stream definition.

#### Members

guint8 `stream_type`; | the type of stream. See GstMpegtsStreamType |
guint16 `pid`; | the PID of the stream |
GPtrArray *`descriptors`; | the descriptors of the stream. | [element-type GstMpegtsDescriptor]

### enum GstMpegtsStreamType

Type of mpeg-ts stream type.

These values correspond to the base standard registered types. Depending on the variant of mpeg-ts being used (Bluray, ATSC, DVB, ...), other types might also be used, but will not conflict with these.

Corresponds to table 2-34 of ITU H.222.0 | ISO/IEC 13818-1

#### Members

GST_MPEGTS_STREAM_TYPE_RESERVED_00 | ITU-T | ISO/IEC Reserved |
GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1 | ISO/IEC 11172-2 Video |
GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2 | Rec. ITU-T H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream |
GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1 | ISO/IEC 11172-3 Audio |
GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2 | ISO/IEC 13818-3 Audio |
GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS | private sections |
GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS | PES packets containing private data |
GST_MPEGTS_STREAM_TYPE_MHEG | ISO/IEC 13522 MHEG |
GST_MPEGTS_STREAM_TYPE_DSM_CC | Annex A DSM-CC |
GST_MPEGTS_STREAM_TYPE_H_222_1 | Rec. ITU-T H.222.1 |
GST_MPEGTS_STREAM_TYPE_DSMCC_A | ISO/IEC 13818-6 type A |
GST_MPEGTS_STREAM_TYPE_DSMCC_B | ISO/IEC 13818-6 type B |
GST_MPEGTS_STREAM_TYPE_DSMCC_C | ISO/IEC 13818-6 type C |
GST_MPEGTS_STREAM_TYPE_DSMCC_D | ISO/IEC 13818-6 type D |
GST_MPEGTS_STREAM_TYPE_AUXILIARY | auxiliary streams |
GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS | ISO/IEC 13818-7 Audio with ADTS transport syntax |
GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4 | ISO/IEC 14496-2 Visual |
GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM | ISO/IEC 14496-3 Audio with the LATM transport syntax as defined in ISO/IEC 14496-3 |
GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS | ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in PES packets |
GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS | ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in ISO/IEC 14496_sections |
GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD | ISO/IEC 13818-6 Synchronized Download Protocol |
GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS | Metadata carried in PES packets |
GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS | Metadata carried in metadata_sections |
GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL | Metadata carried in ISO/IEC 13818-6 Data Carousel |
GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL | Metadata carried in ISO/IEC 13818-6 Object Carousel |
GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD | Metadata carried in ISO/IEC 13818-6 Synchronized Download Protocol |
GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP | IPMP stream (defined in ISO/IEC 13818-11, MPEG-2 IPMP) |
GST_MPEGTS_STREAM_TYPE_VIDEO_H264 | AVC video stream conforming to one or more profiles defined in Annex A of Rec. ITU-T H.264 | ISO/IEC 14496-10 or AVC video sub-bitstream of SVC as defined in 2.1.78 or MVC base view sub-bitstream, as defined in 2.1.85, or AVC video sub-bitstream of MVC, as defined in 2.1.88 |
GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN | ISO/IEC 14496-3 Audio, without using any additional transport syntax, such as DST, ALS and SLS |
GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT | ISO/IEC 14496-17 Text |
GST_MPEGTS_STREAM_TYPE_VIDEO_RVC | Auxiliary video stream as defined in ISO/IEC 23002-3 |
GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM | SVC video sub-bitstream of an AVC video stream conforming to one or more profiles defined in Annex G of Rec. ITU-T H.264 | ISO/IEC 14496-10 |
GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM | MVC video sub-bitstream of an AVC video stream conforming to one or more profiles defined in Annex H of Rec. ITU-T H.264 | ISO/IEC 14496-10 |
GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K | Video stream conforming to one or more profiles as defined in Rec. ITU-T T.800 | ISO/IEC 15444-1 |
GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW | Additional view Rec. ITU-T H.262 | ISO/IEC 13818-2 video stream for service-compatible stereoscopic 3D services |
GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW | Additional view Rec. ITU-T H.264 | ISO/IEC 14496-10 video stream conforming to one or more profiles defined in Annex A for service-compatible stereoscopic 3D services |
GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC |  |
GST_MPEGTS_STREAM_TYPE_IPMP_STREAM | IPMP stream |