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);
GstMpegtsNIT *      gst_mpegts_nit_new                  (void);
GstMpegtsNITStream * gst_mpegts_nit_stream_new          (void);
GstMpegtsSection *  gst_mpegts_section_from_nit         (GstMpegtsNIT *nit);

struct              GstMpegtsBAT;
struct              GstMpegtsBATStream;
const GstMpegtsBAT * gst_mpegts_section_get_bat         (GstMpegtsSection *section);

struct              GstMpegtsSDT;
struct              GstMpegtsSDTService;
const GstMpegtsSDT * gst_mpegts_section_get_sdt         (GstMpegtsSection *section);
GstMpegtsSDT *      gst_mpegts_sdt_new                  (void);
GstMpegtsSDTService * gst_mpegts_sdt_service_new        (void);
GstMpegtsSection *  gst_mpegts_section_from_sdt         (GstMpegtsSDT *sdt);

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;
  guint16    network_id;

  GPtrArray  *descriptors;

  GPtrArray *streams;
};

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

gboolean actual_network;

Whether this NIT corresponds to the actual stream

guint16 network_id;

ID of the network that this NIT describes

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.

gst_mpegts_nit_new ()

GstMpegtsNIT *      gst_mpegts_nit_new                  (void);

Allocates and initializes a GstMpegtsNIT.

Returns :

A newly allocated GstMpegtsNIT. [transfer full]

gst_mpegts_nit_stream_new ()

GstMpegtsNITStream * gst_mpegts_nit_stream_new          (void);

Allocates and initializes a GstMpegtsNITStream

Returns :

A newly allocated GstMpegtsNITStream. [transfer full]

gst_mpegts_section_from_nit ()

GstMpegtsSection *  gst_mpegts_section_from_nit         (GstMpegtsNIT *nit);

Ownership of nit is taken. The data in nit is managed by the GstMpegtsSection

nit :

a GstMpegtsNIT to create the GstMpegtsSection from. [transfer full]

Returns :

the GstMpegtsSection. [transfer full]

struct GstMpegtsBAT

struct GstMpegtsBAT {
  GPtrArray  *descriptors;

  GPtrArray  *streams;
};

DVB Bouquet Association Table (EN 300 468)

GPtrArray *descriptors;

. [element-type GstMpegtsDescriptor]

GPtrArray *streams;

. [element-type GstMpegtsBATStream]

struct GstMpegtsBATStream

struct GstMpegtsBATStream {
  guint16   transport_stream_id;
  guint16   original_network_id;

  GPtrArray   *descriptors;
};

gst_mpegts_section_get_bat ()

const GstMpegtsBAT * gst_mpegts_section_get_bat         (GstMpegtsSection *section);

Returns the GstMpegtsBAT contained in the section.

section :

a GstMpegtsSection of type GST_MPEGTS_SECTION_BAT

Returns :

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

struct GstMpegtsSDT

struct GstMpegtsSDT {
  guint16    original_network_id;
  gboolean   actual_ts;
  guint16    transport_stream_id;

  GPtrArray *services;
};

Service Description Table (EN 300 468)

guint16 original_network_id;

Network ID of the originating delivery system

gboolean actual_ts;

True if the table describes this transport stream

guint16 transport_stream_id;

ID of this transport stream

GPtrArray *services;

List of services. [element-type GstMpegtsSDTService]

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;
};

guint16 service_id;

The program number this table belongs to

gboolean EIT_schedule_flag;

EIT schedule information is present in this transport stream

gboolean EIT_present_following_flag;

EIT present/following information is present in this transport stream

GstMpegtsRunningStatus running_status;

Status of this service

gboolean free_CA_mode;

True if one or more streams is controlled by a CA system

GPtrArray *descriptors;

List of descriptors. [element-type GstMpegtsDescriptor]

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.

gst_mpegts_sdt_new ()

GstMpegtsSDT *      gst_mpegts_sdt_new                  (void);

Allocates and initializes a GstMpegtsSDT.

Returns :

A newly allocated GstMpegtsSDT. [transfer full]

gst_mpegts_sdt_service_new ()

GstMpegtsSDTService * gst_mpegts_sdt_service_new        (void);

Allocates and initializes a GstMpegtsSDTService.

Returns :

A newly allocated GstMpegtsSDTService. [transfer full]

gst_mpegts_section_from_sdt ()

GstMpegtsSection *  gst_mpegts_section_from_sdt         (GstMpegtsSDT *sdt);

Ownership of sdt is taken. The data in sdt is managed by the GstMpegtsSection

sdt :

a GstMpegtsSDT to create the GstMpegtsSection from. [transfer full]

Returns :

the GstMpegtsSection. [transfer full]

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;
};

Event Information Table (EN 300 468)

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;

List of events. [element-type GstMpegtsEITEvent]

struct GstMpegtsEITEvent

struct GstMpegtsEITEvent {
  guint16      event_id;

  GstDateTime *start_time;
  guint32      duration;

  GstMpegtsRunningStatus running_status;
  gboolean     free_CA_mode;

  GPtrArray   *descriptors;
};

Event from a GstMpegtsEIT

guint16 event_id;

GstDateTime *start_time;

guint32 duration;

GstMpegtsRunningStatus running_status;

gboolean free_CA_mode;

GPtrArray *descriptors;

List of descriptors. [element-type GstMpegtsDescriptor]

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;
};

Time Offset Table (EN 300 468)

GstDateTime *utc_time;

GPtrArray *descriptors;

List of descriptors. [element-type GstMpegtsDescriptor]

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.