## Base MPEG-TS descriptors

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

## Functions

const GstMpegtsDescriptor * | gst_mpegts_find_descriptor ()
GPtrArray * | gst_mpegts_parse_descriptors ()
GstMpegtsDescriptor * | gst_mpegts_descriptor_from_custom ()
GstMpegtsDescriptor * | gst_mpegts_descriptor_from_registration ()
gboolean | gst_mpegts_descriptor_parse_iso_639_language ()
gboolean | gst_mpegts_descriptor_parse_iso_639_language_idx ()
guint | gst_mpegts_descriptor_parse_iso_639_language_nb ()
void | gst_mpegts_iso_639_language_descriptor_free ()
gboolean | gst_mpegts_descriptor_parse_logical_channel ()

## Types and Values

struct | GstMpegtsDescriptor
enum | GstMpegtsDescriptorType
enum | GstMpegtsMiscDescriptorType
struct | GstMpegtsISO639LanguageDescriptor
enum | GstMpegtsIso639AudioType
struct | GstMpegtsLogicalChannel
struct | GstMpegtsLogicalChannelDescriptor

## Object Hierarchy

        GBoxed
        ╰── GstMpegtsDescriptor
        GEnum
        ├── GstMpegtsDescriptorType
        ╰── GstMpegtsIso639AudioType

## Includes

    #include <gst/mpegts/mpegts.h>

## Description

These are the base descriptor types and methods.

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_find_descriptor ()

    const GstMpegtsDescriptor *
    gst_mpegts_find_descriptor (GPtrArray *descriptors,
                                guint8 tag);

Finds the first descriptor of type `tag` in the array.

Note: To look for descriptors that can be present more than once in an array of descriptors, iterate the GArray manually.

#### Parameters

descriptors | an array of GstMpegtsDescriptor. | [element-type GstMpegtsDescriptor][transfer none]
tag | the tag to look for |

#### Returns

the first descriptor matchin `tag` , else `NULL`.

[transfer none]

### gst_mpegts_parse_descriptors ()

    GPtrArray *
    gst_mpegts_parse_descriptors (guint8 *buffer,
                                  gsize buf_len);

Parses the descriptors present in `buffer` and returns them as an array.

Note: The data provided in `buffer` will not be copied.

#### Parameters

buffer | descriptors to parse. | [transfer none]
buf_len | Size of `buffer` |

#### Returns

an array of the parsed descriptors or `NULL` if there was an error. Release with g_array_unref when done with it.

[transfer full][element-type GstMpegtsDescriptor]

### gst_mpegts_descriptor_from_custom ()

    GstMpegtsDescriptor *
    gst_mpegts_descriptor_from_custom (guint8 tag,
                                       const guint8 *data,
                                       gsize length);

Creates a GstMpegtsDescriptor with custom `tag` and `data`

#### Parameters

tag | descriptor tag |
data | descriptor data (after tag and length field). | [transfer none]
length | length of `data` |

#### Returns

GstMpegtsDescriptor

### gst_mpegts_descriptor_from_registration ()

    GstMpegtsDescriptor *
    gst_mpegts_descriptor_from_registration
                                   (const gchar *format_identifier,
                                    guint8 *additional_info,
                                    gsize additional_info_length);

Creates a `GST_MTS_DESC_REGISTRATION` GstMpegtsDescriptor

Return: GstMpegtsDescriptor, `NULL` on failure

#### Parameters

format_identifier | a 4 character format identifier string. | [transfer none]
additional_info | pointer to optional additional info. | [transfer none][allow-none]
additional_info_length | length of the optional `additional_info` |

### gst_mpegts_descriptor_parse_iso_639_language ()

    gboolean
    gst_mpegts_descriptor_parse_iso_639_language
                                   (const GstMpegtsDescriptor *descriptor,
                                    GstMpegtsISO639LanguageDescriptor **res);

Extracts the iso 639-2 language information from `descriptor` .

Note: Use gst_tag_get_language_code if you want to get the the ISO 639-1 language code from the returned ISO 639-2 one.

#### Parameters

descriptor | a `GST_MTS_DESC_ISO_639_LANGUAGE` GstMpegtsDescriptor |
res | the GstMpegtsISO639LanguageDescriptor to fill. | [out][transfer full]

#### Returns

`TRUE` if parsing succeeded, else `FALSE`.

### gst_mpegts_descriptor_parse_iso_639_language_idx ()

    gboolean
    gst_mpegts_descriptor_parse_iso_639_language_idx
                                   (const GstMpegtsDescriptor *descriptor,
                                    guint idx,
                                    gchar **lang,
                                    GstMpegtsIso639AudioType *audio_type);

Extracts the iso 639-2 language information from specific table id in `descriptor` .

Note: Use gst_tag_get_language_code if you want to get the the ISO 639-1 language code from the returned ISO 639-2 one.

#### Parameters

descriptor | a `GST_MTS_DESC_ISO_639_LANGUAGE` GstMpegtsDescriptor |
idx | Table id of the language to parse |
lang | 4-byte gchar array to hold the language code. | [out][transfer full]
audio_type | the GstMpegtsIso639AudioType to set. | [out][transfer none][allow-none]

#### Returns

`TRUE` if parsing succeeded, else `FALSE`.

### gst_mpegts_descriptor_parse_iso_639_language_nb ()

    guint
    gst_mpegts_descriptor_parse_iso_639_language_nb
                                   (const GstMpegtsDescriptor *descriptor);

#### Parameters

descriptor | a `GST_MTS_DESC_ISO_639_LANGUAGE` GstMpegtsDescriptor |

#### Returns

The number of languages in `descriptor`

### gst_mpegts_iso_639_language_descriptor_free ()

    void
    gst_mpegts_iso_639_language_descriptor_free
                                   (GstMpegtsISO639LanguageDescriptor *desc);

### gst_mpegts_descriptor_parse_logical_channel ()

    gboolean
    gst_mpegts_descriptor_parse_logical_channel
                                   (const GstMpegtsDescriptor *descriptor,
                                    GstMpegtsLogicalChannelDescriptor *res);

Extracts the logical channels from `descriptor` .

#### Parameters

descriptor | a `GST_MTS_DESC_DTG_LOGICAL_CHANNEL` GstMpegtsDescriptor |
res | the GstMpegtsLogicalChannelDescriptor to fill. | [out][transfer none]

#### Returns

`TRUE` if parsing succeeded, else `FALSE`.

## Types and Values

### struct GstMpegtsDescriptor

    struct GstMpegtsDescriptor {
      guint8 tag;
      guint8 tag_extension;
      guint8 length;
      guint8 *data;
    };

Mpeg-TS descriptor (ISO/IEC 13818-1).

#### Members

guint8 `tag`; | the type of descriptor |
guint8 `tag_extension`; | the extended type (if `descriptor_tag` is 0x7f) |
guint8 `length`; | the length of the descriptor content (excluding tag/length field) |
guint8 *`data`; | the full descriptor data (including tag, extension, length). The first two bytes are the `tag` and `length` . |

### enum GstMpegtsDescriptorType

The type of GstMpegtsDescriptor

These values correspond to the registered descriptor type from the base MPEG-TS specifications (ITU H.222.0 | ISO/IEC 13818-1).

Consult the relevant specifications for more details.

#### Members

GST_MTS_DESC_RESERVED_00 |  |
GST_MTS_DESC_RESERVED_01 |  |
GST_MTS_DESC_VIDEO_STREAM |  |
GST_MTS_DESC_AUDIO_STREAM |  |
GST_MTS_DESC_HIERARCHY |  |
GST_MTS_DESC_REGISTRATION |  |
GST_MTS_DESC_DATA_STREAM_ALIGNMENT |  |
GST_MTS_DESC_TARGET_BACKGROUND_GRID |  |
GST_MTS_DESC_VIDEO_WINDOW |  |
GST_MTS_DESC_CA |  |
GST_MTS_DESC_ISO_639_LANGUAGE |  |
GST_MTS_DESC_SYSTEM_CLOCK |  |
GST_MTS_DESC_MULTIPLEX_BUFFER_UTILISATION |  |
GST_MTS_DESC_COPYRIGHT |  |
GST_MTS_DESC_MAXIMUM_BITRATE |  |
GST_MTS_DESC_PRIVATE_DATA_INDICATOR |  |
GST_MTS_DESC_SMOOTHING_BUFFER |  |
GST_MTS_DESC_STD |  |
GST_MTS_DESC_IBP |  |
GST_MTS_DESC_DSMCC_CAROUSEL_IDENTIFIER |  |
GST_MTS_DESC_DSMCC_ASSOCIATION_TAG |  |
GST_MTS_DESC_DSMCC_DEFERRED_ASSOCIATION_TAG |  |
GST_MTS_DESC_DSMCC_NPT_REFERENCE |  |
GST_MTS_DESC_DSMCC_NPT_ENDPOINT |  |
GST_MTS_DESC_DSMCC_STREAM_MODE |  |
GST_MTS_DESC_DSMCC_STREAM_EVENT |  |
GST_MTS_DESC_MPEG4_VIDEO |  |
GST_MTS_DESC_MPEG4_AUDIO |  |
GST_MTS_DESC_IOD |  |
GST_MTS_DESC_SL |  |
GST_MTS_DESC_FMC |  |
GST_MTS_DESC_EXTERNAL_ES_ID |  |
GST_MTS_DESC_MUX_CODE |  |
GST_MTS_DESC_FMX_BUFFER_SIZE |  |
GST_MTS_DESC_MULTIPLEX_BUFFER |  |
GST_MTS_DESC_CONTENT_LABELING |  |
GST_MTS_DESC_METADATA_POINTER |  |
GST_MTS_DESC_METADATA |  |
GST_MTS_DESC_METADATA_STD |  |
GST_MTS_DESC_AVC_VIDEO |  |
GST_MTS_DESC_IPMP |  |
GST_MTS_DESC_AVC_TIMING_AND_HRD |  |
GST_MTS_DESC_MPEG2_AAC_AUDIO |  |
GST_MTS_DESC_FLEX_MUX_TIMING |  |
GST_MTS_DESC_MPEG4_TEXT |  |
GST_MTS_DESC_MPEG4_AUDIO_EXTENSION |  |
GST_MTS_DESC_AUXILIARY_VIDEO_STREAM |  |
GST_MTS_DESC_SVC_EXTENSION |  |
GST_MTS_DESC_MVC_EXTENSION |  |
GST_MTS_DESC_J2K_VIDEO |  |
GST_MTS_DESC_MVC_OPERATION_POINT |  |
GST_MTS_DESC_MPEG2_STEREOSCOPIC_VIDEO_FORMAT |  |
GST_MTS_DESC_STEREOSCOPIC_PROGRAM_INFO |  |
GST_MTS_DESC_STEREOSCOPIC_VIDEO_INFO |  |

### enum GstMpegtsMiscDescriptorType

The type of GstMpegtsDescriptor

These values correspond to miscellaneous descriptor types that are not yet identified from known specifications.

#### Members

GST_MTS_DESC_AC3_AUDIO_STREAM |  |
GST_MTS_DESC_DTG_LOGICAL_CHANNEL |  |

### struct GstMpegtsISO639LanguageDescriptor

    struct GstMpegtsISO639LanguageDescriptor {
      guint                    nb_language;
      gchar                    *language[64];
      GstMpegtsIso639AudioType audio_type[64];
    };

### enum GstMpegtsIso639AudioType

#### Members

GST_MPEGTS_AUDIO_TYPE_UNDEFINED |  |
GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS |  |
GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED |  |
GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY |  |

### struct GstMpegtsLogicalChannel

    struct GstMpegtsLogicalChannel {
      guint16   service_id;
      gboolean  visible_service;
      guint16   logical_channel_number;
    };

### struct GstMpegtsLogicalChannelDescriptor

    struct GstMpegtsLogicalChannelDescriptor {
      guint                   nb_channels;
      GstMpegtsLogicalChannel channels[64];
    };