Base MPEG-TS descriptors

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

Synopsis

#include <gst/mpegts/mpegts.h>

struct              GstMpegTsDescriptor;
enum                GstMpegTsDescriptorType;
enum                GstMpegTsMiscDescriptorType;
const GstMpegTsDescriptor * gst_mpegts_find_descriptor  (GPtrArray *descriptors,
                                                         guint8 tag);
GPtrArray *         gst_mpegts_parse_descriptors        (guint8 *buffer,
                                                         gsize buf_len);

struct              GstMpegTsISO639LanguageDescriptor;
enum                GstMpegTsIso639AudioType;
gboolean            gst_mpegts_descriptor_parse_iso_639_language
                                                        (const GstMpegTsDescriptor *descriptor,
                                                         GstMpegTsISO639LanguageDescriptor *res);
gboolean            gst_mpegts_descriptor_parse_dvb_stream_identifier
                                                        (const GstMpegTsDescriptor *descriptor,
                                                         guint8 *component_tag);

struct              GstMpegTsLogicalChannel;
struct              GstMpegTsLogicalChannelDescriptor;
gboolean            gst_mpegts_descriptor_parse_logical_channel
                                                        (const GstMpegTsDescriptor *descriptor,
                                                         GstMpegTsLogicalChannelDescriptor *res);

Object Hierarchy

  GBoxed
   +----GstMpegTsDescriptor
  GEnum
   +----GstMpegTsDescriptorType
  GEnum
   +----GstMpegTsIso639AudioType

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.

Details

struct GstMpegTsDescriptor

struct GstMpegTsDescriptor {
  guint8 tag;
  guint8 tag_extension;
  guint8 length;
  const guint8 *data;
};

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

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)

const guint8 *data;

the full descriptor data (including tag, extension, length). The first two bytes are the tag and tag_extension.

enum GstMpegTsDescriptorType

typedef enum {
  /* 0-18 ISO/IEC 13818-1 (H222.0 06/2012) */
  GST_MTS_DESC_RESERVED_00                      = 0x00,
  GST_MTS_DESC_RESERVED_01                      = 0x01,
  GST_MTS_DESC_VIDEO_STREAM                     = 0x02,
  GST_MTS_DESC_AUDIO_STREAM                     = 0x03,
  GST_MTS_DESC_HIERARCHY                        = 0x04,
  GST_MTS_DESC_REGISTRATION                     = 0x05,
  GST_MTS_DESC_DATA_STREAM_ALIGNMENT            = 0x06,
  GST_MTS_DESC_TARGET_BACKGROUND_GRID           = 0x07,
  GST_MTS_DESC_VIDEO_WINDOW                     = 0x08,
  GST_MTS_DESC_CA                               = 0x09,
  GST_MTS_DESC_ISO_639_LANGUAGE                 = 0x0A,
  GST_MTS_DESC_SYSTEM_CLOCK                     = 0x0B,
  GST_MTS_DESC_MULTIPLEX_BUFFER_UTILISATION     = 0x0C,
  GST_MTS_DESC_COPYRIGHT                        = 0x0D,
  GST_MTS_DESC_MAXIMUM_BITRATE                  = 0x0E,
  GST_MTS_DESC_PRIVATE_DATA_INDICATOR           = 0x0F,
  GST_MTS_DESC_SMOOTHING_BUFFER                 = 0x10,
  GST_MTS_DESC_STD                              = 0x11,
  GST_MTS_DESC_IBP                              = 0x12,

  /* 19-26 Defined in ISO/IEC 13818-6 (Extensions for DSM-CC) */
  GST_MTS_DESC_DSMCC_CAROUSEL_IDENTIFIER        = 0x13,
  GST_MTS_DESC_DSMCC_ASSOCIATION_TAG            = 0x14,
  GST_MTS_DESC_DSMCC_DEFERRED_ASSOCIATION_TAG   = 0x15,
  /* 0x16 is reserved (so far) */
  GST_MTS_DESC_DSMCC_NPT_REFERENCE              = 0x17,
  GST_MTS_DESC_DSMCC_NPT_ENDPOINT               = 0x18,
  GST_MTS_DESC_DSMCC_STREAM_MODE                = 0x19,
  GST_MTS_DESC_DSMCC_STREAM_EVENT               = 0x1A,

  /* 27-54 Later additions to ISO/IEC 13818-1 (H222.0 06/2012) */
  GST_MTS_DESC_MPEG4_VIDEO                      = 0x1B,
  GST_MTS_DESC_MPEG4_AUDIO                      = 0x1C,
  GST_MTS_DESC_IOD                              = 0x1D,
  GST_MTS_DESC_SL                               = 0x1E,
  GST_MTS_DESC_FMC                              = 0x1F,
  GST_MTS_DESC_EXTERNAL_ES_ID                   = 0x20,
  GST_MTS_DESC_MUX_CODE                         = 0x21,
  GST_MTS_DESC_FMX_BUFFER_SIZE                  = 0x22,
  GST_MTS_DESC_MULTIPLEX_BUFFER                 = 0x23,
  GST_MTS_DESC_CONTENT_LABELING                 = 0x24,
  GST_MTS_DESC_METADATA_POINTER                 = 0x25,
  GST_MTS_DESC_METADATA                         = 0x26,
  GST_MTS_DESC_METADATA_STD                     = 0x27,
  GST_MTS_DESC_AVC_VIDEO                        = 0x28,
  /* defined in ISO/IEC 13818-11, MPEG-2 IPMP */
  GST_MTS_DESC_IPMP                             = 0x29,
  GST_MTS_DESC_AVC_TIMING_AND_HRD               = 0x2A,
  GST_MTS_DESC_MPEG2_AAC_AUDIO                  = 0x2B,
  GST_MTS_DESC_FLEX_MUX_TIMING                  = 0x2C,
  GST_MTS_DESC_MPEG4_TEXT                       = 0x2D,
  GST_MTS_DESC_MPEG4_AUDIO_EXTENSION            = 0x2E,
  GST_MTS_DESC_AUXILIARY_VIDEO_STREAM           = 0x2F,
  GST_MTS_DESC_SVC_EXTENSION                    = 0x30,
  GST_MTS_DESC_MVC_EXTENSION                    = 0x31,
  GST_MTS_DESC_J2K_VIDEO                        = 0x32,
  GST_MTS_DESC_MVC_OPERATION_POINT              = 0x33,
  GST_MTS_DESC_MPEG2_STEREOSCOPIC_VIDEO_FORMAT  = 0x34,
  GST_MTS_DESC_STEREOSCOPIC_PROGRAM_INFO        = 0x35,
  GST_MTS_DESC_STEREOSCOPIC_VIDEO_INFO          = 0x36,

  /* 55-63 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Reserved */
} 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.

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

typedef enum {
  /* 0x80 - 0xFE are user defined */
  GST_MTS_DESC_AC3_AUDIO_STREAM                 = 0x81,
  GST_MTS_DESC_DTG_LOGICAL_CHANNEL              = 0x83,    /* from DTG D-Book */
} GstMpegTsMiscDescriptorType;

The type of GstMpegTsDescriptor

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

GST_MTS_DESC_AC3_AUDIO_STREAM

GST_MTS_DESC_DTG_LOGICAL_CHANNEL


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.

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.

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]

struct GstMpegTsISO639LanguageDescriptor

struct GstMpegTsISO639LanguageDescriptor {
  guint                    nb_language;
  gchar                    language[64][3];
  GstMpegTsIso639AudioType audio_type[64];
};

enum GstMpegTsIso639AudioType

typedef enum {
  GST_MPEGTS_AUDIO_TYPE_UNDEFINED = 0,
  GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS,
  GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED,
  GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY
} GstMpegTsIso639AudioType;

GST_MPEGTS_AUDIO_TYPE_UNDEFINED

GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS

GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED

GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY


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.

descriptor :

a GST_MTS_DESC_ISO_639_LANGUAGE GstMpegTsDescriptor

res :

the GstMpegTsISO639LanguageDescriptor to fill. [out][transfer none]

Returns :

TRUE if parsing succeeded, else FALSE.

gst_mpegts_descriptor_parse_dvb_stream_identifier ()

gboolean            gst_mpegts_descriptor_parse_dvb_stream_identifier
                                                        (const GstMpegTsDescriptor *descriptor,
                                                         guint8 *component_tag);

struct GstMpegTsLogicalChannel

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

struct GstMpegTsLogicalChannelDescriptor

struct GstMpegTsLogicalChannelDescriptor {
  guint                   nb_channels;
  GstMpegTsLogicalChannel channels[64];
};

gst_mpegts_descriptor_parse_logical_channel ()

gboolean            gst_mpegts_descriptor_parse_logical_channel
                                                        (const GstMpegTsDescriptor *descriptor,
                                                         GstMpegTsLogicalChannelDescriptor *res);

Extracts the logical channels from descriptor.

descriptor :

a GST_MTS_DESC_DTG_LOGICAL_CHANNEL GstMpegTsDescriptor

res :

the GstMpegTsLogicalChannelDescriptor to fill. [out][transfer none]

Returns :

TRUE if parsing succeeded, else FALSE.