mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 20:42:30 +00:00
libs/mpegts: Rename GstMpegTS => GstMpegTs
Sorry for this :( But this makes it more in sync with expected type naming in gobject (i.e. CamelCase and not CamelMAYBECase). Also split descriptor type enums into the different variants: * ISO H.222.0 / 13818-1 (i.e. standard mpeg-ts) * DVB * ATSC * ISDB * miscellaneous This will avoid future clashes when specs use the same descriptor type
This commit is contained in:
parent
dc160e7ca7
commit
c1366efcd6
6 changed files with 336 additions and 327 deletions
|
@ -14,11 +14,11 @@ gst_mpeg_ts_cable_outer_fec_scheme_get_type
|
|||
gst_mpeg_ts_modulation_type_get_type
|
||||
gst_mpeg_ts_satellite_polarization_type_get_type
|
||||
gst_mpeg_ts_satellite_rolloff_get_type
|
||||
gst_mpeg_tsdvb_code_rate_get_type
|
||||
gst_mpeg_ts_dvb_code_rate_get_type
|
||||
gst_mpeg_ts_descriptor_type_get_type
|
||||
gst_mpeg_ts_iso639_audio_type_get_type
|
||||
gst_mpeg_ts_running_status_get_type
|
||||
gst_mpeg_tsdvb_service_type_get_type
|
||||
gst_mpeg_ts_dvb_service_type_get_type
|
||||
|
||||
|
||||
gst_insert_bin_get_type
|
|
@ -51,7 +51,7 @@ GstMpegts-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstmpegts-@GST_API_
|
|||
GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
|
||||
$(INTROSPECTION_SCANNER) -v --namespace GstMpegts \
|
||||
--nsversion=@GST_API_VERSION@ \
|
||||
--identifier-prefix=GstMpegTS \
|
||||
--identifier-prefix=GstMpegTs \
|
||||
--symbol-prefix=gst_mpegts \
|
||||
--symbol-prefix=gst \
|
||||
--warn-all -v \
|
||||
|
|
|
@ -455,7 +455,7 @@ failed:
|
|||
*
|
||||
* Note: The data provided in @buffer will not be copied.
|
||||
*
|
||||
* Returns: (transfer full) (element-type GstMpegTSDescriptor): an
|
||||
* Returns: (transfer full) (element-type GstMpegTsDescriptor): an
|
||||
* array of the parsed descriptors or %NULL if there was an error.
|
||||
* Release with #g_array_unref when done with it.
|
||||
*/
|
||||
|
@ -469,7 +469,7 @@ gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len)
|
|||
|
||||
/* fast-path */
|
||||
if (buf_len == 0)
|
||||
return g_array_new (FALSE, FALSE, sizeof (GstMpegTSDescriptor));
|
||||
return g_array_new (FALSE, FALSE, sizeof (GstMpegTsDescriptor));
|
||||
|
||||
data = buffer;
|
||||
|
||||
|
@ -496,12 +496,12 @@ gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
res = g_array_sized_new (FALSE, FALSE, sizeof (GstMpegTSDescriptor), nb_desc);
|
||||
res = g_array_sized_new (FALSE, FALSE, sizeof (GstMpegTsDescriptor), nb_desc);
|
||||
|
||||
data = buffer;
|
||||
|
||||
for (i = 0; i < nb_desc; i++) {
|
||||
GstMpegTSDescriptor *desc = &g_array_index (res, GstMpegTSDescriptor, i);
|
||||
GstMpegTsDescriptor *desc = &g_array_index (res, GstMpegTsDescriptor, i);
|
||||
|
||||
desc->descriptor_data = data;
|
||||
desc->descriptor_tag = *data++;
|
||||
|
@ -525,8 +525,8 @@ gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len)
|
|||
|
||||
/**
|
||||
* gst_mpegts_find_descriptor:
|
||||
* @descriptors: (element-type GstMpegTSDescriptor) (transfer none): an array
|
||||
* of #GstMpegTSDescriptor
|
||||
* @descriptors: (element-type GstMpegTsDescriptor) (transfer none): an array
|
||||
* of #GstMpegTsDescriptor
|
||||
* @tag: the tag to look for
|
||||
*
|
||||
* Finds the first descriptor of type @tag in the array.
|
||||
|
@ -536,7 +536,7 @@ gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len)
|
|||
*
|
||||
* Returns: (transfer none): the first descriptor matchin @tag, else %NULL.
|
||||
*/
|
||||
const GstMpegTSDescriptor *
|
||||
const GstMpegTsDescriptor *
|
||||
gst_mpegts_find_descriptor (GArray * descriptors, guint8 tag)
|
||||
{
|
||||
guint i, nb_desc;
|
||||
|
@ -545,20 +545,20 @@ gst_mpegts_find_descriptor (GArray * descriptors, guint8 tag)
|
|||
|
||||
nb_desc = descriptors->len;
|
||||
for (i = 0; i < nb_desc; i++) {
|
||||
GstMpegTSDescriptor *desc =
|
||||
&g_array_index (descriptors, GstMpegTSDescriptor, i);
|
||||
GstMpegTsDescriptor *desc =
|
||||
&g_array_index (descriptors, GstMpegTsDescriptor, i);
|
||||
if (desc->descriptor_tag == tag)
|
||||
return (const GstMpegTSDescriptor *) desc;
|
||||
return (const GstMpegTsDescriptor *) desc;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static GstMpegTSDescriptor *
|
||||
_copy_descriptor (GstMpegTSDescriptor * desc)
|
||||
static GstMpegTsDescriptor *
|
||||
_copy_descriptor (GstMpegTsDescriptor * desc)
|
||||
{
|
||||
GstMpegTSDescriptor *copy;
|
||||
GstMpegTsDescriptor *copy;
|
||||
|
||||
copy = g_new0 (GstMpegTSDescriptor, 1);
|
||||
copy = g_new0 (GstMpegTsDescriptor, 1);
|
||||
copy->descriptor_tag = desc->descriptor_tag;
|
||||
copy->descriptor_tag_extension = desc->descriptor_tag_extension;
|
||||
copy->descriptor_length = desc->descriptor_length;
|
||||
|
@ -572,20 +572,20 @@ _copy_descriptor (GstMpegTSDescriptor * desc)
|
|||
* above function. That is why we free the descriptor data (unlike the
|
||||
* descriptors created in _parse_descriptors()) */
|
||||
static void
|
||||
_free_descriptor (GstMpegTSDescriptor * desc)
|
||||
_free_descriptor (GstMpegTsDescriptor * desc)
|
||||
{
|
||||
g_free ((gpointer) desc->descriptor_data);
|
||||
g_free (desc);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSDescriptor, gst_mpegts_descriptor,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsDescriptor, gst_mpegts_descriptor,
|
||||
(GBoxedCopyFunc) _copy_descriptor, (GBoxedFreeFunc) _free_descriptor);
|
||||
|
||||
/* GST_MTS_DESC_ISO_639_LANGUAGE (0x0A) */
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_iso_639_language:
|
||||
* @descriptor: a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegTSDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTSISO639LanguageDescriptor to fill
|
||||
* @descriptor: a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegTsDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTsISO639LanguageDescriptor to fill
|
||||
*
|
||||
* Extracts the iso 639-2 language information from @descriptor.
|
||||
*
|
||||
|
@ -595,8 +595,8 @@ G_DEFINE_BOXED_TYPE (GstMpegTSDescriptor, gst_mpegts_descriptor,
|
|||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTSDescriptor *
|
||||
descriptor, GstMpegTSISO639LanguageDescriptor * res)
|
||||
gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTsDescriptor *
|
||||
descriptor, GstMpegTsISO639LanguageDescriptor * res)
|
||||
{
|
||||
guint i;
|
||||
guint8 *data;
|
||||
|
@ -622,7 +622,7 @@ gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTSDescriptor *
|
|||
/* GST_MTS_DESC_DVB_NETWORK_NAME (0x40) */
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_dvb_network_name:
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_NETWORK_NAME #GstMpegTSDescriptor
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_NETWORK_NAME #GstMpegTsDescriptor
|
||||
* @name: (out) (transfer full): the extracted name
|
||||
*
|
||||
* Parses out the dvb network name from the @descriptor:
|
||||
|
@ -630,7 +630,7 @@ gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTSDescriptor *
|
|||
* Returns: %TRUE if the parsing happened correctly, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegTSDescriptor *
|
||||
gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegTsDescriptor *
|
||||
descriptor, gchar ** name)
|
||||
{
|
||||
g_return_val_if_fail (descriptor != NULL
|
||||
|
@ -645,16 +645,16 @@ gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegTSDescriptor *
|
|||
/* GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM (0x43) */
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_satellite_delivery_system:
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM #GstMpegTSDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTSSatelliteDeliverySystemDescriptor to fill
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM #GstMpegTsDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTsSatelliteDeliverySystemDescriptor to fill
|
||||
*
|
||||
* Extracts the satellite delivery system information from @descriptor.
|
||||
*
|
||||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegTSDescriptor
|
||||
* descriptor, GstMpegTSSatelliteDeliverySystemDescriptor * res)
|
||||
gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegTsDescriptor
|
||||
* descriptor, GstMpegTsSatelliteDeliverySystemDescriptor * res)
|
||||
{
|
||||
guint8 *data;
|
||||
guint8 tmp;
|
||||
|
@ -722,16 +722,16 @@ gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegTSDescriptor
|
|||
/* GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM (0x44) */
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_cable_delivery_system:
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM #GstMpegTSDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTSCableDeliverySystemDescriptor to fill
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM #GstMpegTsDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTsCableDeliverySystemDescriptor to fill
|
||||
*
|
||||
* Extracts the cable delivery system information from @descriptor.
|
||||
*
|
||||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegTSDescriptor *
|
||||
descriptor, GstMpegTSCableDeliverySystemDescriptor * res)
|
||||
gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegTsDescriptor *
|
||||
descriptor, GstMpegTsCableDeliverySystemDescriptor * res)
|
||||
{
|
||||
guint8 *data;
|
||||
|
||||
|
@ -785,7 +785,7 @@ gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegTSDescriptor *
|
|||
/* GST_MTS_DESC_DVB_SERVICE (0x48) */
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_dvb_service:
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_SERVICE #GstMpegTSDescriptor
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_SERVICE #GstMpegTsDescriptor
|
||||
* @service_type: (out) (allow-none): the service type
|
||||
* @service_name: (out) (transfer full) (allow-none): the service name
|
||||
* @provider_name: (out) (transfer full) (allow-none): the provider name
|
||||
|
@ -795,8 +795,8 @@ gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegTSDescriptor *
|
|||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_dvb_service (const GstMpegTSDescriptor *
|
||||
descriptor, GstMpegTSDVBServiceType * service_type, gchar ** service_name,
|
||||
gst_mpegts_descriptor_parse_dvb_service (const GstMpegTsDescriptor *
|
||||
descriptor, GstMpegTsDVBServiceType * service_type, gchar ** service_name,
|
||||
gchar ** provider_name)
|
||||
{
|
||||
guint8 *data;
|
||||
|
@ -822,7 +822,7 @@ gst_mpegts_descriptor_parse_dvb_service (const GstMpegTSDescriptor *
|
|||
/* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_dvb_short_event:
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_SHORT_EVENT #GstMpegTSDescriptor
|
||||
* @descriptor: a %GST_MTS_DESC_DVB_SHORT_EVENT #GstMpegTsDescriptor
|
||||
* @language_code: (out) (transfer full) (allow-none): the language code
|
||||
* @event_name: (out) (transfer full) (allow-none): the event name
|
||||
* @text: (out) (transfer full) (allow-none): the event text
|
||||
|
@ -832,7 +832,7 @@ gst_mpegts_descriptor_parse_dvb_service (const GstMpegTSDescriptor *
|
|||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegTSDescriptor *
|
||||
gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegTsDescriptor *
|
||||
descriptor, gchar ** language_code, gchar ** event_name, gchar ** text)
|
||||
{
|
||||
guint8 *data;
|
||||
|
@ -858,16 +858,16 @@ gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegTSDescriptor *
|
|||
|
||||
/**
|
||||
* gst_mpegts_descriptor_parse_logical_channel:
|
||||
* @descriptor: a %GST_MTS_DESC_DTG_LOGICAL_CHANNEL #GstMpegTSDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTSLogicalChannelDescriptor to fill
|
||||
* @descriptor: a %GST_MTS_DESC_DTG_LOGICAL_CHANNEL #GstMpegTsDescriptor
|
||||
* @res: (out) (transfer none): the #GstMpegTsLogicalChannelDescriptor to fill
|
||||
*
|
||||
* Extracts the logical channels from @descriptor.
|
||||
*
|
||||
* Returns: %TRUE if parsing succeeded, else %FALSE.
|
||||
*/
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_logical_channel (const GstMpegTSDescriptor *
|
||||
descriptor, GstMpegTSLogicalChannelDescriptor * res)
|
||||
gst_mpegts_descriptor_parse_logical_channel (const GstMpegTsDescriptor *
|
||||
descriptor, GstMpegTsLogicalChannelDescriptor * res)
|
||||
{
|
||||
guint i;
|
||||
guint8 *data;
|
||||
|
|
|
@ -60,9 +60,9 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* GstMpegTSDescriptorType:
|
||||
* GstMpegTsDescriptorType:
|
||||
*
|
||||
* The type of #GstMpegTSDescriptor
|
||||
* The type of #GstMpegTsDescriptor
|
||||
*
|
||||
* Consult the relevant specifications for more details.
|
||||
*/
|
||||
|
@ -130,7 +130,9 @@ typedef enum {
|
|||
GST_MTS_DESC_STEREOSCOPIC_VIDEO_INFO = 0x36,
|
||||
|
||||
/* 55-63 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Reserved */
|
||||
} GstMpegTsDescriptorType;
|
||||
|
||||
typedef enum {
|
||||
/* 64-127 DVB tags ETSI EN 300 468
|
||||
* (Specification for Service Information (SI) in DVB systems)
|
||||
*/
|
||||
|
@ -195,13 +197,18 @@ typedef enum {
|
|||
GST_MTS_DESC_DVB_ENHANCED_AC3 = 0x7A,
|
||||
GST_MTS_DESC_DVB_DTS = 0x7B,
|
||||
GST_MTS_DESC_DVB_AAC = 0x7C,
|
||||
/* 0x7D and 0x7E are reserved for future use */
|
||||
GST_MTS_DESC_DVB_XAIT_LOCATION = 0x7D,
|
||||
GST_MTS_DESC_DVB_FTA_CONTENT_MANAGEMENT = 0x7E,
|
||||
GST_MTS_DESC_DVB_EXTENSION = 0x7F,
|
||||
} GstMpegTsDVBDescriptorType;
|
||||
|
||||
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;
|
||||
|
||||
typedef enum {
|
||||
/* ATSC A/65 2009 */
|
||||
GST_MTS_DESC_ATSC_STUFFING = 0x80,
|
||||
GST_MTS_DESC_ATSC_AC3 = 0x83,
|
||||
|
@ -228,7 +235,9 @@ typedef enum {
|
|||
GST_MTS_DESC_ATSC_MODULE_LINK = 0xB4,
|
||||
GST_MTS_DESC_ATSC_CRC32 = 0xB5,
|
||||
GST_MTS_DESC_ATSC_GROUP_LINK = 0xB8,
|
||||
} GstMpegTsATSCDescriptorType;
|
||||
|
||||
typedef enum {
|
||||
/* ISDB ARIB B10 v4.6 */
|
||||
GST_MTS_DESC_ISDB_HIERARCHICAL_TRANSMISSION = 0xC0,
|
||||
GST_MTS_DESC_ISDB_DIGITAL_COPY_CONTROL = 0xC1,
|
||||
|
@ -264,15 +273,15 @@ typedef enum {
|
|||
/* ... */
|
||||
GST_MTS_DESC_ISDB_SERVICE_GROUP = 0xe0
|
||||
|
||||
} GstMpegTSDescriptorType;
|
||||
} GstMpegTsISDBDescriptorType;
|
||||
|
||||
typedef struct _GstMpegTSDescriptor GstMpegTSDescriptor;
|
||||
typedef struct _GstMpegTsDescriptor GstMpegTsDescriptor;
|
||||
|
||||
#define GST_TYPE_MPEGTS_DESCRIPTOR (gst_mpegts_descriptor_get_type())
|
||||
GType gst_mpegts_descriptor_get_type (void);
|
||||
|
||||
/**
|
||||
* GstMpegTSDescriptor:
|
||||
* GstMpegTsDescriptor:
|
||||
* @descriptor_tag: the type of descriptor
|
||||
* @descriptor_tag_extension: the extended type (if @descriptor_tag is 0x7f)
|
||||
* @descriptor_length: the length of the descriptor content (excluding tag/length field)
|
||||
|
@ -280,9 +289,9 @@ GType gst_mpegts_descriptor_get_type (void);
|
|||
*
|
||||
* Mpeg-TS descriptor (ISO/IEC 13818-1).
|
||||
*/
|
||||
struct _GstMpegTSDescriptor
|
||||
struct _GstMpegTsDescriptor
|
||||
{
|
||||
GstMpegTSDescriptorType descriptor_tag;
|
||||
guint8 descriptor_tag;
|
||||
guint8 descriptor_tag_extension;
|
||||
guint8 descriptor_length;
|
||||
const guint8 *descriptor_data;
|
||||
|
@ -290,12 +299,12 @@ struct _GstMpegTSDescriptor
|
|||
|
||||
GArray *gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len);
|
||||
|
||||
const GstMpegTSDescriptor * gst_mpegts_find_descriptor (GArray *descriptors,
|
||||
const GstMpegTsDescriptor * gst_mpegts_find_descriptor (GArray *descriptors,
|
||||
guint8 tag);
|
||||
|
||||
/* GST_MTS_DESC_ISO_639_LANGUAGE (0x0A) */
|
||||
/**
|
||||
* GstMpegTSISO639AudioType:
|
||||
* GstMpegTsISO639AudioType:
|
||||
*
|
||||
* Type of audio streams
|
||||
*
|
||||
|
@ -306,32 +315,32 @@ typedef enum {
|
|||
GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS,
|
||||
GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED,
|
||||
GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY
|
||||
} GstMpegTSIso639AudioType;
|
||||
} GstMpegTsIso639AudioType;
|
||||
|
||||
/* FIXME: Make two methods. One for getting the number of languages,
|
||||
* and the other for getting the (allocated, null-terminated) language
|
||||
* and audio type */
|
||||
typedef struct _GstMpegTSISO639LanguageDescriptor GstMpegTSISO639LanguageDescriptor;
|
||||
struct _GstMpegTSISO639LanguageDescriptor
|
||||
typedef struct _GstMpegTsISO639LanguageDescriptor GstMpegTsISO639LanguageDescriptor;
|
||||
struct _GstMpegTsISO639LanguageDescriptor
|
||||
{
|
||||
guint nb_language;
|
||||
gchar language[64][3];
|
||||
GstMpegTSIso639AudioType audio_type[64];
|
||||
GstMpegTsIso639AudioType audio_type[64];
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTSDescriptor *descriptor,
|
||||
GstMpegTSISO639LanguageDescriptor *res);
|
||||
gboolean gst_mpegts_descriptor_parse_iso_639_language (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsISO639LanguageDescriptor *res);
|
||||
|
||||
|
||||
/* GST_MTS_DESC_DVB_CAROUSEL_IDENTIFIER (0x13) */
|
||||
/* FIXME : Implement */
|
||||
|
||||
/* GST_MTS_DESC_DVB_NETWORK_NAME (0x40) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegTSDescriptor *descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_network_name (const GstMpegTsDescriptor *descriptor,
|
||||
gchar **name);
|
||||
|
||||
/* GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM (0x43) */
|
||||
typedef struct _GstMpegTSSatelliteDeliverySystemDescriptor GstMpegTSSatelliteDeliverySystemDescriptor;
|
||||
typedef struct _GstMpegTsSatelliteDeliverySystemDescriptor GstMpegTsSatelliteDeliverySystemDescriptor;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_MODULATION_QPSK = 0,
|
||||
|
@ -349,7 +358,7 @@ typedef enum {
|
|||
GST_MPEGTS_MODULATION_DQPSK,
|
||||
GST_MPEGTS_MODULATION_QAM_4_NR_,
|
||||
GST_MPEGTS_MODULATION_NONE
|
||||
} GstMpegTSModulationType;
|
||||
} GstMpegTsModulationType;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_FEC_NONE = 0,
|
||||
|
@ -365,7 +374,7 @@ typedef enum {
|
|||
GST_MPEGTS_FEC_3_5,
|
||||
GST_MPEGTS_FEC_9_10,
|
||||
GST_MPEGTS_FEC_2_5
|
||||
} GstMpegTSDVBCodeRate;
|
||||
} GstMpegTsDVBCodeRate;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_ROLLOFF_35 = 0,
|
||||
|
@ -373,17 +382,17 @@ typedef enum {
|
|||
GST_MPEGTS_ROLLOFF_25,
|
||||
GST_MPEGTS_ROLLOFF_RESERVED,
|
||||
GST_MPEGTS_ROLLOFF_AUTO
|
||||
} GstMpegTSSatelliteRolloff;
|
||||
} GstMpegTsSatelliteRolloff;
|
||||
|
||||
typedef enum {
|
||||
GST_MPEGTS_POLARIZATION_LINEAR_HORIZONTAL = 0,
|
||||
GST_MPEGTS_POLARIZATION_LINEAR_VERTICAL,
|
||||
GST_MPEGTS_POLARIZATION_CIRCULAR_LEFT,
|
||||
GST_MPEGTS_POLARIZATION_CIRCULAR_RIGHT
|
||||
} GstMpegTSSatellitePolarizationType;
|
||||
} GstMpegTsSatellitePolarizationType;
|
||||
|
||||
/**
|
||||
* GstMpegTSSatelliteDeliverySystemDescriptor:
|
||||
* GstMpegTsSatelliteDeliverySystemDescriptor:
|
||||
* @frequency: the frequency in kHz (kiloHertz)
|
||||
* @orbital_position: the orbital position in degrees
|
||||
* @west_east: If %TRUE, the satellite is in the eastern part of the orbit,
|
||||
|
@ -397,23 +406,23 @@ typedef enum {
|
|||
*
|
||||
* Satellite Delivery System Descriptor (EN 300 468 v.1.13.1)
|
||||
*/
|
||||
struct _GstMpegTSSatelliteDeliverySystemDescriptor
|
||||
struct _GstMpegTsSatelliteDeliverySystemDescriptor
|
||||
{
|
||||
guint32 frequency;
|
||||
gfloat orbital_position;
|
||||
gboolean west_east;
|
||||
GstMpegTSSatellitePolarizationType polarization;
|
||||
GstMpegTsSatellitePolarizationType polarization;
|
||||
|
||||
GstMpegTSSatelliteRolloff roll_off;
|
||||
GstMpegTsSatelliteRolloff roll_off;
|
||||
gboolean modulation_system;
|
||||
GstMpegTSModulationType modulation_type;
|
||||
GstMpegTsModulationType modulation_type;
|
||||
|
||||
guint32 symbol_rate;
|
||||
GstMpegTSDVBCodeRate fec_inner;
|
||||
GstMpegTsDVBCodeRate fec_inner;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegTSDescriptor *descriptor,
|
||||
GstMpegTSSatelliteDeliverySystemDescriptor *res);
|
||||
gboolean gst_mpegts_descriptor_parse_satellite_delivery_system (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsSatelliteDeliverySystemDescriptor *res);
|
||||
|
||||
|
||||
/* FIXME : Implement */
|
||||
|
@ -423,11 +432,11 @@ typedef enum {
|
|||
GST_MPEGTS_CABLE_OUTER_FEC_UNDEFINED = 0,
|
||||
GST_MPEGTS_CABLE_OUTER_FEC_NONE,
|
||||
GST_MPEGTS_CABLE_OUTER_FEC_RS_204_188,
|
||||
} GstMpegTSCableOuterFECScheme;
|
||||
} GstMpegTsCableOuterFECScheme;
|
||||
|
||||
typedef struct _GstMpegTSCableDeliverySystemDescriptor GstMpegTSCableDeliverySystemDescriptor;
|
||||
typedef struct _GstMpegTsCableDeliverySystemDescriptor GstMpegTsCableDeliverySystemDescriptor;
|
||||
/**
|
||||
* GstMpegTSCableDeliverySystemDescriptor:
|
||||
* GstMpegTsCableDeliverySystemDescriptor:
|
||||
* @frequency: the frequency in Hz (Hertz)
|
||||
* @outer_fec: the outer FEC scheme used
|
||||
* @modulation: Modulation scheme used
|
||||
|
@ -436,22 +445,22 @@ typedef struct _GstMpegTSCableDeliverySystemDescriptor GstMpegTSCableDeliverySys
|
|||
*
|
||||
* Cable Delivery System Descriptor (EN 300 468 v.1.13.1)
|
||||
*/
|
||||
struct _GstMpegTSCableDeliverySystemDescriptor
|
||||
struct _GstMpegTsCableDeliverySystemDescriptor
|
||||
{
|
||||
guint32 frequency;
|
||||
GstMpegTSCableOuterFECScheme outer_fec;
|
||||
GstMpegTSModulationType modulation;
|
||||
GstMpegTsCableOuterFECScheme outer_fec;
|
||||
GstMpegTsModulationType modulation;
|
||||
|
||||
guint32 symbol_rate;
|
||||
GstMpegTSDVBCodeRate fec_inner;
|
||||
GstMpegTsDVBCodeRate fec_inner;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegTSDescriptor *descriptor,
|
||||
GstMpegTSCableDeliverySystemDescriptor *res);
|
||||
gboolean gst_mpegts_descriptor_parse_cable_delivery_system (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsCableDeliverySystemDescriptor *res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_SERVICE (0x48) */
|
||||
/**
|
||||
* GstMpegTSDVBServiceType:
|
||||
* GstMpegTsDVBServiceType:
|
||||
*
|
||||
* The type of service of a channel.
|
||||
*
|
||||
|
@ -490,47 +499,47 @@ typedef enum {
|
|||
/* 0x80 - 0xfe user defined */
|
||||
/* 0xff Reserved for future use */
|
||||
GST_DVB_SERVICE_RESERVED_FF
|
||||
} GstMpegTSDVBServiceType;
|
||||
} GstMpegTsDVBServiceType;
|
||||
|
||||
/* FIXME : enum type for service_type ? */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_service (const GstMpegTSDescriptor *descriptor,
|
||||
GstMpegTSDVBServiceType *service_type,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_service (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsDVBServiceType *service_type,
|
||||
gchar **service_name,
|
||||
gchar **provider_name);
|
||||
|
||||
/* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegTSDescriptor *descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegTsDescriptor *descriptor,
|
||||
gchar **language_code,
|
||||
gchar **event_name,
|
||||
gchar **text);
|
||||
|
||||
/* GST_MTS_DESC_DVB_EXTENDED_EVENT (0x4E) */
|
||||
typedef struct _GstMpegTSExtendedEventDescriptor GstMpegTSExtendedEventDescriptor;
|
||||
typedef struct _GstMpegTSExtendedEventItem GstMpegTSExtendedEventItem;
|
||||
typedef struct _GstMpegTsExtendedEventDescriptor GstMpegTsExtendedEventDescriptor;
|
||||
typedef struct _GstMpegTsExtendedEventItem GstMpegTsExtendedEventItem;
|
||||
|
||||
/* FIXME : Maybe make a separate method for getting a specific item entry ? */
|
||||
struct _GstMpegTSExtendedEventItem
|
||||
struct _GstMpegTsExtendedEventItem
|
||||
{
|
||||
gchar *item_description;
|
||||
gchar *item;
|
||||
};
|
||||
|
||||
struct _GstMpegTSExtendedEventDescriptor
|
||||
struct _GstMpegTsExtendedEventDescriptor
|
||||
{
|
||||
guint8 descriptor_number;
|
||||
guint8 last_descriptor_number;
|
||||
gchar language_code[3];
|
||||
guint8 nb_items;
|
||||
GstMpegTSExtendedEventItem items[128];
|
||||
GstMpegTsExtendedEventItem items[128];
|
||||
gchar *text;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_extended_event (const GstMpegTSDescriptor *descriptor,
|
||||
GstMpegTSExtendedEventDescriptor *res);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_extended_event (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsExtendedEventDescriptor *res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_COMPONENT (0x50) */
|
||||
typedef struct _GstMpegTSComponentDescriptor GstMpegTSComponentDescriptor;
|
||||
struct _GstMpegTSComponentDescriptor
|
||||
typedef struct _GstMpegTsComponentDescriptor GstMpegTsComponentDescriptor;
|
||||
struct _GstMpegTsComponentDescriptor
|
||||
{
|
||||
guint8 stream_content;
|
||||
guint8 component_type;
|
||||
|
@ -540,11 +549,11 @@ struct _GstMpegTSComponentDescriptor
|
|||
gchar *text;
|
||||
};
|
||||
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_component (const GstMpegTSDescriptor *descriptor,
|
||||
GstMpegTSComponentDescriptor *res);
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_component (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsComponentDescriptor *res);
|
||||
|
||||
/* GST_MTS_DESC_DVB_STREAM_IDENTIFIER (0x52) */
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_stream_identifier (const GstMpegTSDescriptor *descriptor,
|
||||
gboolean gst_mpegts_descriptor_parse_dvb_stream_identifier (const GstMpegTsDescriptor *descriptor,
|
||||
guint8 *component_tag);
|
||||
|
||||
/* GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM (0x5A) */
|
||||
|
@ -564,26 +573,26 @@ gboolean gst_mpegts_descriptor_parse_dvb_stream_identifier (const GstMpegTSDescr
|
|||
|
||||
|
||||
/* GST_MTS_DESC_DTG_LOGICAL_CHANNEL (0x83) */
|
||||
typedef struct _GstMpegTSLogicalChannelDescriptor GstMpegTSLogicalChannelDescriptor;
|
||||
typedef struct _GstMpegTSLogicalChannel GstMpegTSLogicalChannel;
|
||||
typedef struct _GstMpegTsLogicalChannelDescriptor GstMpegTsLogicalChannelDescriptor;
|
||||
typedef struct _GstMpegTsLogicalChannel GstMpegTsLogicalChannel;
|
||||
|
||||
struct _GstMpegTSLogicalChannel
|
||||
struct _GstMpegTsLogicalChannel
|
||||
{
|
||||
guint16 service_id;
|
||||
gboolean visible_service;
|
||||
guint16 logical_channel_number;
|
||||
};
|
||||
|
||||
struct _GstMpegTSLogicalChannelDescriptor
|
||||
struct _GstMpegTsLogicalChannelDescriptor
|
||||
{
|
||||
guint nb_channels;
|
||||
GstMpegTSLogicalChannel channels[64];
|
||||
GstMpegTsLogicalChannel channels[64];
|
||||
};
|
||||
|
||||
/* FIXME : Maybe make two methods. One for getting the number of channels,
|
||||
* and the other for getting the content for one channel ? */
|
||||
gboolean
|
||||
gst_mpegts_descriptor_parse_logical_channel (const GstMpegTSDescriptor *descriptor,
|
||||
GstMpegTSLogicalChannelDescriptor *res);
|
||||
gst_mpegts_descriptor_parse_logical_channel (const GstMpegTsDescriptor *descriptor,
|
||||
GstMpegTsLogicalChannelDescriptor *res);
|
||||
|
||||
#endif /* GST_MPEGTS_DESCRIPTOR_H */
|
||||
|
|
|
@ -70,7 +70,7 @@ static GQuark QUARK_SECTION;
|
|||
|
||||
static GType _gst_mpegts_section_type = 0;
|
||||
#define MPEG_TYPE_TS_SECTION (_gst_mpegts_section_type)
|
||||
GST_DEFINE_MINI_OBJECT_TYPE (GstMpegTSSection, gst_mpegts_section);
|
||||
GST_DEFINE_MINI_OBJECT_TYPE (GstMpegTsSection, gst_mpegts_section);
|
||||
|
||||
static const guint32 crc_tab[256] = {
|
||||
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
|
||||
|
@ -171,7 +171,7 @@ _parse_utc_time (guint8 * data)
|
|||
* GENERIC MPEG-TS SECTION
|
||||
*/
|
||||
static void
|
||||
_gst_mpegts_section_free (GstMpegTSSection * section)
|
||||
_gst_mpegts_section_free (GstMpegTsSection * section)
|
||||
{
|
||||
GST_DEBUG ("Freeing section type %d", section->section_type);
|
||||
|
||||
|
@ -183,14 +183,14 @@ _gst_mpegts_section_free (GstMpegTSSection * section)
|
|||
break;
|
||||
case GST_MPEGTS_SECTION_PMT:
|
||||
{
|
||||
GstMpegTSPMT *pmt = (GstMpegTSPMT *) section->cached_parsed;
|
||||
GstMpegTsPMT *pmt = (GstMpegTsPMT *) section->cached_parsed;
|
||||
g_array_unref (pmt->descriptors);
|
||||
g_ptr_array_unref (pmt->streams);
|
||||
break;
|
||||
}
|
||||
case GST_MPEGTS_SECTION_TOT:
|
||||
{
|
||||
GstMpegTSTOT *tot = (GstMpegTSTOT *) section->cached_parsed;
|
||||
GstMpegTsTOT *tot = (GstMpegTsTOT *) section->cached_parsed;
|
||||
gst_date_time_unref (tot->utc_time);
|
||||
g_array_unref (tot->descriptors);
|
||||
break;
|
||||
|
@ -203,20 +203,20 @@ _gst_mpegts_section_free (GstMpegTSSection * section)
|
|||
break;
|
||||
case GST_MPEGTS_SECTION_NIT:
|
||||
{
|
||||
GstMpegTSNIT *nit = (GstMpegTSNIT *) section->cached_parsed;
|
||||
GstMpegTsNIT *nit = (GstMpegTsNIT *) section->cached_parsed;
|
||||
g_array_unref (nit->descriptors);
|
||||
g_ptr_array_unref (nit->streams);
|
||||
break;
|
||||
}
|
||||
case GST_MPEGTS_SECTION_EIT:
|
||||
{
|
||||
GstMpegTSEIT *eit = (GstMpegTSEIT *) section->cached_parsed;
|
||||
GstMpegTsEIT *eit = (GstMpegTsEIT *) section->cached_parsed;
|
||||
g_ptr_array_unref (eit->events);
|
||||
break;
|
||||
}
|
||||
case GST_MPEGTS_SECTION_SDT:
|
||||
{
|
||||
GstMpegTSSDT *sdt = (GstMpegTSSDT *) section->cached_parsed;
|
||||
GstMpegTsSDT *sdt = (GstMpegTsSDT *) section->cached_parsed;
|
||||
|
||||
g_ptr_array_unref (sdt->services);
|
||||
break;
|
||||
|
@ -227,15 +227,15 @@ _gst_mpegts_section_free (GstMpegTSSection * section)
|
|||
}
|
||||
if (section->data)
|
||||
g_free (section->data);
|
||||
g_slice_free (GstMpegTSSection, section);
|
||||
g_slice_free (GstMpegTsSection, section);
|
||||
}
|
||||
|
||||
static GstMpegTSSection *
|
||||
_gst_mpegts_section_copy (GstMpegTSSection * section)
|
||||
static GstMpegTsSection *
|
||||
_gst_mpegts_section_copy (GstMpegTsSection * section)
|
||||
{
|
||||
GstMpegTSSection *copy;
|
||||
GstMpegTsSection *copy;
|
||||
|
||||
copy = g_slice_new0 (GstMpegTSSection);
|
||||
copy = g_slice_new0 (GstMpegTsSection);
|
||||
gst_mini_object_init (GST_MINI_OBJECT_CAST (copy), 0, MPEG_TYPE_TS_SECTION,
|
||||
(GstMiniObjectCopyFunction) _gst_mpegts_section_copy, NULL,
|
||||
(GstMiniObjectFreeFunction) _gst_mpegts_section_free);
|
||||
|
@ -266,15 +266,15 @@ _gst_mpegts_section_copy (GstMpegTSSection * section)
|
|||
* gst_message_parse_mpegts_section:
|
||||
* @message: a #GstMessage
|
||||
*
|
||||
* Returns the #GstMpegTSSection contained in a message.
|
||||
* Returns the #GstMpegTsSection contained in a message.
|
||||
*
|
||||
* Returns: (transfer full): the contained #GstMpegTSSection, or %NULL.
|
||||
* Returns: (transfer full): the contained #GstMpegTsSection, or %NULL.
|
||||
*/
|
||||
GstMpegTSSection *
|
||||
GstMpegTsSection *
|
||||
gst_message_parse_mpegts_section (GstMessage * message)
|
||||
{
|
||||
const GstStructure *st;
|
||||
GstMpegTSSection *section;
|
||||
GstMpegTsSection *section;
|
||||
|
||||
if (message->type != GST_MESSAGE_ELEMENT)
|
||||
return NULL;
|
||||
|
@ -291,15 +291,15 @@ gst_message_parse_mpegts_section (GstMessage * message)
|
|||
/**
|
||||
* gst_message_new_mpegts_section:
|
||||
* @parent: (transfer none): The creator of the message
|
||||
* @section: (transfer none): The #GstMpegTSSection to put in a message
|
||||
* @section: (transfer none): The #GstMpegTsSection to put in a message
|
||||
*
|
||||
* Creates a new #GstMessage for a @GstMpegTSSection.
|
||||
* Creates a new #GstMessage for a @GstMpegTsSection.
|
||||
*
|
||||
* Returns: (transfer full): The new #GstMessage to be posted, or %NULL if the
|
||||
* section is not valid.
|
||||
*/
|
||||
GstMessage *
|
||||
gst_message_new_mpegts_section (GstObject * parent, GstMpegTSSection * section)
|
||||
gst_message_new_mpegts_section (GstObject * parent, GstMpegTsSection * section)
|
||||
{
|
||||
GstMessage *msg;
|
||||
GstStructure *st;
|
||||
|
@ -334,7 +334,7 @@ gst_message_new_mpegts_section (GstObject * parent, GstMpegTSSection * section)
|
|||
quark = QUARK_TOT;
|
||||
break;
|
||||
default:
|
||||
GST_WARNING ("Creating message for unknown GstMpegTSSection");
|
||||
GST_WARNING ("Creating message for unknown GstMpegTsSection");
|
||||
quark = QUARK_SECTION;
|
||||
break;
|
||||
}
|
||||
|
@ -350,11 +350,11 @@ gst_message_new_mpegts_section (GstObject * parent, GstMpegTSSection * section)
|
|||
|
||||
/* Program Association Table */
|
||||
static GArray *
|
||||
_parse_pat (GstMpegTSSection * section)
|
||||
_parse_pat (GstMpegTsSection * section)
|
||||
{
|
||||
GArray *pat;
|
||||
guint16 i = 0, nb_programs;
|
||||
GstMpegTSPatProgram *program;
|
||||
GstMpegTsPatProgram *program;
|
||||
guint8 *data, *end;
|
||||
|
||||
/* Skip already parsed data */
|
||||
|
@ -366,11 +366,11 @@ _parse_pat (GstMpegTSSection * section)
|
|||
/* Initialize program list */
|
||||
nb_programs = (end - 4 - data) / 4;
|
||||
pat =
|
||||
g_array_sized_new (FALSE, FALSE, sizeof (GstMpegTSPatProgram),
|
||||
g_array_sized_new (FALSE, FALSE, sizeof (GstMpegTsPatProgram),
|
||||
nb_programs);
|
||||
|
||||
while (data < end - 4) {
|
||||
program = &g_array_index (pat, GstMpegTSPatProgram, i);
|
||||
program = &g_array_index (pat, GstMpegTsPatProgram, i);
|
||||
program->program_number = GST_READ_UINT16_BE (data);
|
||||
data += 2;
|
||||
|
||||
|
@ -393,21 +393,21 @@ _parse_pat (GstMpegTSSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_pat:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_PAT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_PAT
|
||||
*
|
||||
* Parses a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).
|
||||
*
|
||||
* Returns the array of #GstMpegTSPatProgram contained in the section.
|
||||
* 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.
|
||||
*
|
||||
* Returns: (transfer container) (element-type GstMpegTSPatProgram): The
|
||||
* #GstMpegTSPatProgram contained in the section, or %NULL if an error
|
||||
* Returns: (transfer container) (element-type GstMpegTsPatProgram): The
|
||||
* #GstMpegTsPatProgram contained in the section, or %NULL if an error
|
||||
* happened. Release with #g_ptr_array_unref when done.
|
||||
*/
|
||||
GArray *
|
||||
gst_mpegts_section_get_pat (GstMpegTSSection * section)
|
||||
gst_mpegts_section_get_pat (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_PAT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -439,45 +439,45 @@ parse_failure:
|
|||
|
||||
/* Program Map Table */
|
||||
|
||||
static GstMpegTSPMTStream *
|
||||
_gst_mpegts_pmt_stream_copy (GstMpegTSPMTStream * pmt)
|
||||
static GstMpegTsPMTStream *
|
||||
_gst_mpegts_pmt_stream_copy (GstMpegTsPMTStream * pmt)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_pmt_stream_free (GstMpegTSPMTStream * pmt)
|
||||
_gst_mpegts_pmt_stream_free (GstMpegTsPMTStream * pmt)
|
||||
{
|
||||
g_array_unref (pmt->descriptors);
|
||||
g_slice_free (GstMpegTSPMTStream, pmt);
|
||||
g_slice_free (GstMpegTsPMTStream, pmt);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSPMTStream, gst_mpegts_pmt_stream,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsPMTStream, gst_mpegts_pmt_stream,
|
||||
(GBoxedCopyFunc) _gst_mpegts_pmt_stream_copy,
|
||||
(GFreeFunc) _gst_mpegts_pmt_stream_free);
|
||||
|
||||
static GstMpegTSPMT *
|
||||
_gst_mpegts_pmt_copy (GstMpegTSPMT * pmt)
|
||||
static GstMpegTsPMT *
|
||||
_gst_mpegts_pmt_copy (GstMpegTsPMT * pmt)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_pmt_free (GstMpegTSPMT * pmt)
|
||||
_gst_mpegts_pmt_free (GstMpegTsPMT * pmt)
|
||||
{
|
||||
/* FIXME: IMPLEMENT */
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSPMT, gst_mpegts_pmt,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsPMT, gst_mpegts_pmt,
|
||||
(GBoxedCopyFunc) _gst_mpegts_pmt_copy, (GFreeFunc) _gst_mpegts_pmt_free);
|
||||
|
||||
|
||||
static GstMpegTSPMT *
|
||||
_parse_pmt (GstMpegTSSection * section)
|
||||
static GstMpegTsPMT *
|
||||
_parse_pmt (GstMpegTsSection * section)
|
||||
{
|
||||
GstMpegTSPMT *pmt = NULL;
|
||||
GstMpegTsPMT *pmt = NULL;
|
||||
guint i = 0, allocated_streams = 8;
|
||||
guint8 *data, *end;
|
||||
guint program_info_length;
|
||||
|
@ -490,7 +490,7 @@ _parse_pmt (GstMpegTSSection * section)
|
|||
goto error;
|
||||
}
|
||||
|
||||
pmt = g_slice_new0 (GstMpegTSPMT);
|
||||
pmt = g_slice_new0 (GstMpegTsPMT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -525,7 +525,7 @@ _parse_pmt (GstMpegTSSection * section)
|
|||
/* parse entries, cycle until there's space for another entry (at least 5
|
||||
* bytes) plus the CRC */
|
||||
while (data <= end - 4 - 5) {
|
||||
GstMpegTSPMTStream *stream = g_slice_new0 (GstMpegTSPMTStream);
|
||||
GstMpegTsPMTStream *stream = g_slice_new0 (GstMpegTsPMTStream);
|
||||
|
||||
g_ptr_array_add (pmt->streams, stream);
|
||||
|
||||
|
@ -566,15 +566,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_pmt:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_PMT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_PMT
|
||||
*
|
||||
* Returns the #GstMpegTSPMT contained in the @section.
|
||||
* Returns the #GstMpegTsPMT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTSPMT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegTsPMT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTSPMT *
|
||||
gst_mpegts_section_get_pmt (GstMpegTSSection * section)
|
||||
const GstMpegTsPMT *
|
||||
gst_mpegts_section_get_pmt (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_PMT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -588,7 +588,7 @@ gst_mpegts_section_get_pmt (GstMpegTSSection * section)
|
|||
goto parse_failure;
|
||||
}
|
||||
|
||||
return (const GstMpegTSPMT *) section->cached_parsed;
|
||||
return (const GstMpegTsPMT *) section->cached_parsed;
|
||||
|
||||
bad_crc:
|
||||
{
|
||||
|
@ -606,7 +606,7 @@ parse_failure:
|
|||
|
||||
/* Conditional Access Table */
|
||||
static GArray *
|
||||
_parse_cat (GstMpegTSSection * section)
|
||||
_parse_cat (GstMpegTsSection * section)
|
||||
{
|
||||
guint8 *data;
|
||||
guint desc_len;
|
||||
|
@ -621,17 +621,17 @@ _parse_cat (GstMpegTSSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_cat:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_CAT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_CAT
|
||||
*
|
||||
* Returns the array of #GstMpegTSDescriptor contained in the Condtional
|
||||
* Returns the array of #GstMpegTsDescriptor contained in the Condtional
|
||||
* Access Table.
|
||||
*
|
||||
* Returns: (transfer container) (element-type GstMpegTSDescriptor): The
|
||||
* #GstMpegTSDescriptor contained in the section, or %NULL if an error
|
||||
* Returns: (transfer container) (element-type GstMpegTsDescriptor): The
|
||||
* #GstMpegTsDescriptor contained in the section, or %NULL if an error
|
||||
* happened. Release with #g_array_unref when done.
|
||||
*/
|
||||
GArray *
|
||||
gst_mpegts_section_get_cat (GstMpegTSSection * section)
|
||||
gst_mpegts_section_get_cat (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_CAT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -654,16 +654,16 @@ parse_failure:
|
|||
/* Transport Stream Description Table (TSDT) */
|
||||
/**
|
||||
* gst_mpegts_section_get_tsdt:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_TSDT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_TSDT
|
||||
*
|
||||
* Returns the array of #GstMpegTSDescriptor contained in the section
|
||||
* Returns the array of #GstMpegTsDescriptor contained in the section
|
||||
*
|
||||
* Returns: (transfer container) (element-type GstMpegTSDescriptor): The
|
||||
* #GstMpegTSDescriptor contained in the section, or %NULL if an error
|
||||
* Returns: (transfer container) (element-type GstMpegTsDescriptor): The
|
||||
* #GstMpegTsDescriptor contained in the section, or %NULL if an error
|
||||
* happened. Release with #g_array_unref when done.
|
||||
*/
|
||||
GArray *
|
||||
gst_mpegts_section_get_tsdt (GstMpegTSSection * section)
|
||||
gst_mpegts_section_get_tsdt (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_TSDT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -677,43 +677,43 @@ gst_mpegts_section_get_tsdt (GstMpegTSSection * section)
|
|||
|
||||
|
||||
/* Event Information Table */
|
||||
static GstMpegTSEIT *
|
||||
_gst_mpegts_eit_copy (GstMpegTSEIT * eit)
|
||||
static GstMpegTsEIT *
|
||||
_gst_mpegts_eit_copy (GstMpegTsEIT * eit)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_eit_free (GstMpegTSEIT * eit)
|
||||
_gst_mpegts_eit_free (GstMpegTsEIT * eit)
|
||||
{
|
||||
/* FIXME: IMPLEMENT */
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSEIT, gst_mpegts_eit,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsEIT, gst_mpegts_eit,
|
||||
(GBoxedCopyFunc) _gst_mpegts_eit_copy, (GFreeFunc) _gst_mpegts_eit_free);
|
||||
|
||||
static GstMpegTSEITEvent *
|
||||
_gst_mpegts_eit_event_copy (GstMpegTSEITEvent * eit)
|
||||
static GstMpegTsEITEvent *
|
||||
_gst_mpegts_eit_event_copy (GstMpegTsEITEvent * eit)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_eit_event_free (GstMpegTSEITEvent * eit)
|
||||
_gst_mpegts_eit_event_free (GstMpegTsEITEvent * eit)
|
||||
{
|
||||
/* FIXME: IMPLEMENT */
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSEITEvent, gst_mpegts_eit_event,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsEITEvent, gst_mpegts_eit_event,
|
||||
(GBoxedCopyFunc) _gst_mpegts_eit_event_copy,
|
||||
(GFreeFunc) _gst_mpegts_eit_event_free);
|
||||
|
||||
static GstMpegTSEIT *
|
||||
_parse_eit (GstMpegTSSection * section)
|
||||
static GstMpegTsEIT *
|
||||
_parse_eit (GstMpegTsSection * section)
|
||||
{
|
||||
GstMpegTSEIT *eit = NULL;
|
||||
GstMpegTsEIT *eit = NULL;
|
||||
guint i = 0, allocated_events = 12;
|
||||
guint8 *data, *end, *duration_ptr;
|
||||
guint16 descriptors_loop_length;
|
||||
|
@ -725,7 +725,7 @@ _parse_eit (GstMpegTSSection * section)
|
|||
goto error;
|
||||
}
|
||||
|
||||
eit = g_slice_new0 (GstMpegTSEIT);
|
||||
eit = g_slice_new0 (GstMpegTsEIT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -750,7 +750,7 @@ _parse_eit (GstMpegTSSection * section)
|
|||
(GDestroyNotify) _gst_mpegts_eit_event_free);
|
||||
|
||||
while (data < end - 4) {
|
||||
GstMpegTSEITEvent *event;
|
||||
GstMpegTsEITEvent *event;
|
||||
|
||||
/* 12 is the minimum entry size + CRC */
|
||||
if (end - data < 12 + 4) {
|
||||
|
@ -759,7 +759,7 @@ _parse_eit (GstMpegTSSection * section)
|
|||
goto error;
|
||||
}
|
||||
|
||||
event = g_slice_new0 (GstMpegTSEITEvent);
|
||||
event = g_slice_new0 (GstMpegTsEITEvent);
|
||||
g_ptr_array_add (eit->events, event);
|
||||
|
||||
event->event_id = GST_READ_UINT16_BE (data);
|
||||
|
@ -807,15 +807,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_eit:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_EIT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_EIT
|
||||
*
|
||||
* Returns the #GstMpegTSEIT contained in the @section.
|
||||
* Returns the #GstMpegTsEIT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTSEIT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegTsEIT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTSEIT *
|
||||
gst_mpegts_section_get_eit (GstMpegTSSection * section)
|
||||
const GstMpegTsEIT *
|
||||
gst_mpegts_section_get_eit (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_EIT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -829,7 +829,7 @@ gst_mpegts_section_get_eit (GstMpegTSSection * section)
|
|||
goto parse_failure;
|
||||
}
|
||||
|
||||
return (const GstMpegTSEIT *) section->cached_parsed;
|
||||
return (const GstMpegTsEIT *) section->cached_parsed;
|
||||
|
||||
bad_crc:
|
||||
{
|
||||
|
@ -845,61 +845,61 @@ parse_failure:
|
|||
}
|
||||
|
||||
/* Bouquet Association Table */
|
||||
static GstMpegTSBAT *
|
||||
_gst_mpegts_bat_copy (GstMpegTSBAT * bat)
|
||||
static GstMpegTsBAT *
|
||||
_gst_mpegts_bat_copy (GstMpegTsBAT * bat)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_bat_free (GstMpegTSBAT * bat)
|
||||
_gst_mpegts_bat_free (GstMpegTsBAT * bat)
|
||||
{
|
||||
/* FIXME: IMPLEMENT */
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSBAT, gst_mpegts_bat,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsBAT, gst_mpegts_bat,
|
||||
(GBoxedCopyFunc) _gst_mpegts_bat_copy, (GFreeFunc) _gst_mpegts_bat_free);
|
||||
|
||||
/* Network Information Table */
|
||||
static GstMpegTSNIT *
|
||||
_gst_mpegts_nit_copy (GstMpegTSNIT * nit)
|
||||
static GstMpegTsNIT *
|
||||
_gst_mpegts_nit_copy (GstMpegTsNIT * nit)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_nit_free (GstMpegTSNIT * nit)
|
||||
_gst_mpegts_nit_free (GstMpegTsNIT * nit)
|
||||
{
|
||||
/* FIXME: IMPLEMENT */
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSNIT, gst_mpegts_nit,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsNIT, gst_mpegts_nit,
|
||||
(GBoxedCopyFunc) _gst_mpegts_nit_copy, (GFreeFunc) _gst_mpegts_nit_free);
|
||||
|
||||
static GstMpegTSNITStream *
|
||||
_gst_mpegts_nit_stream_copy (GstMpegTSNITStream * nit)
|
||||
static GstMpegTsNITStream *
|
||||
_gst_mpegts_nit_stream_copy (GstMpegTsNITStream * nit)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_nit_stream_free (GstMpegTSNITStream * nit)
|
||||
_gst_mpegts_nit_stream_free (GstMpegTsNITStream * nit)
|
||||
{
|
||||
g_array_unref (nit->descriptors);
|
||||
g_slice_free (GstMpegTSNITStream, nit);
|
||||
g_slice_free (GstMpegTsNITStream, nit);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSNITStream, gst_mpegts_nit_stream,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsNITStream, gst_mpegts_nit_stream,
|
||||
(GBoxedCopyFunc) _gst_mpegts_nit_stream_copy,
|
||||
(GFreeFunc) _gst_mpegts_nit_stream_free);
|
||||
|
||||
static GstMpegTSNIT *
|
||||
_parse_nit (GstMpegTSSection * section)
|
||||
static GstMpegTsNIT *
|
||||
_parse_nit (GstMpegTsSection * section)
|
||||
{
|
||||
GstMpegTSNIT *nit = NULL;
|
||||
GstMpegTsNIT *nit = NULL;
|
||||
guint i = 0, j, allocated_streams = 12;
|
||||
guint8 *data, *end, *entry_begin;
|
||||
guint16 descriptors_loop_length, transport_stream_loop_length;
|
||||
|
@ -913,7 +913,7 @@ _parse_nit (GstMpegTSSection * section)
|
|||
goto error;
|
||||
}
|
||||
|
||||
nit = g_slice_new0 (GstMpegTSNIT);
|
||||
nit = g_slice_new0 (GstMpegTsNIT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -953,7 +953,7 @@ _parse_nit (GstMpegTSSection * section)
|
|||
|
||||
/* read up to the CRC */
|
||||
while (transport_stream_loop_length - 4 > 0) {
|
||||
GstMpegTSNITStream *stream = g_slice_new0 (GstMpegTSNITStream);
|
||||
GstMpegTsNITStream *stream = g_slice_new0 (GstMpegTsNITStream);
|
||||
|
||||
g_ptr_array_add (nit->streams, stream);
|
||||
|
||||
|
@ -994,8 +994,8 @@ _parse_nit (GstMpegTSSection * section)
|
|||
/* At least notify the descriptors we are not handling :( */
|
||||
|
||||
for (j = 0; j < stream->descriptors->len; j++) {
|
||||
GstMpegTSDescriptor *desc =
|
||||
&g_array_index (stream->descriptors, GstMpegTSDescriptor, j);
|
||||
GstMpegTsDescriptor *desc =
|
||||
&g_array_index (stream->descriptors, GstMpegTsDescriptor, j);
|
||||
|
||||
switch (desc->descriptor_tag) {
|
||||
case GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM:
|
||||
|
@ -1030,15 +1030,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_nit:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_NIT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_NIT
|
||||
*
|
||||
* Returns the #GstMpegTSNIT contained in the @section.
|
||||
* Returns the #GstMpegTsNIT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTSNIT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegTsNIT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTSNIT *
|
||||
gst_mpegts_section_get_nit (GstMpegTSSection * section)
|
||||
const GstMpegTsNIT *
|
||||
gst_mpegts_section_get_nit (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_NIT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -1052,7 +1052,7 @@ gst_mpegts_section_get_nit (GstMpegTSSection * section)
|
|||
goto parse_failure;
|
||||
}
|
||||
|
||||
return (const GstMpegTSNIT *) section->cached_parsed;
|
||||
return (const GstMpegTsNIT *) section->cached_parsed;
|
||||
|
||||
bad_crc:
|
||||
{
|
||||
|
@ -1070,45 +1070,45 @@ parse_failure:
|
|||
|
||||
/* Service Description Table (SDT) */
|
||||
|
||||
static GstMpegTSSDT *
|
||||
_gst_mpegts_sdt_copy (GstMpegTSSDT * sdt)
|
||||
static GstMpegTsSDT *
|
||||
_gst_mpegts_sdt_copy (GstMpegTsSDT * sdt)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_sdt_free (GstMpegTSSDT * sdt)
|
||||
_gst_mpegts_sdt_free (GstMpegTsSDT * sdt)
|
||||
{
|
||||
/* FIXME: IMPLEMENT */
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSSDT, gst_mpegts_sdt,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsSDT, gst_mpegts_sdt,
|
||||
(GBoxedCopyFunc) _gst_mpegts_sdt_copy, (GFreeFunc) _gst_mpegts_sdt_free);
|
||||
|
||||
static GstMpegTSSDTService *
|
||||
_gst_mpegts_sdt_service_copy (GstMpegTSSDTService * sdt)
|
||||
static GstMpegTsSDTService *
|
||||
_gst_mpegts_sdt_service_copy (GstMpegTsSDTService * sdt)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_sdt_service_free (GstMpegTSSDTService * sdt)
|
||||
_gst_mpegts_sdt_service_free (GstMpegTsSDTService * sdt)
|
||||
{
|
||||
g_array_unref (sdt->descriptors);
|
||||
g_slice_free (GstMpegTSSDTService, sdt);
|
||||
g_slice_free (GstMpegTsSDTService, sdt);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSSDTService, gst_mpegts_sdt_service,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsSDTService, gst_mpegts_sdt_service,
|
||||
(GBoxedCopyFunc) _gst_mpegts_sdt_service_copy,
|
||||
(GFreeFunc) _gst_mpegts_sdt_service_free);
|
||||
|
||||
|
||||
static GstMpegTSSDT *
|
||||
_parse_sdt (GstMpegTSSection * section)
|
||||
static GstMpegTsSDT *
|
||||
_parse_sdt (GstMpegTsSection * section)
|
||||
{
|
||||
GstMpegTSSDT *sdt = NULL;
|
||||
GstMpegTsSDT *sdt = NULL;
|
||||
guint i = 0, allocated_services = 8;
|
||||
guint8 *data, *end, *entry_begin;
|
||||
guint tmp;
|
||||
|
@ -1124,7 +1124,7 @@ _parse_sdt (GstMpegTSSection * section)
|
|||
goto error;
|
||||
}
|
||||
|
||||
sdt = g_slice_new0 (GstMpegTSSDT);
|
||||
sdt = g_slice_new0 (GstMpegTsSDT);
|
||||
|
||||
data = section->data;
|
||||
end = data + section->section_length;
|
||||
|
@ -1147,7 +1147,7 @@ _parse_sdt (GstMpegTSSection * section)
|
|||
|
||||
/* read up to the CRC */
|
||||
while (sdt_info_length - 4 > 0) {
|
||||
GstMpegTSSDTService *service = g_slice_new0 (GstMpegTSSDTService);
|
||||
GstMpegTsSDTService *service = g_slice_new0 (GstMpegTsSDTService);
|
||||
g_ptr_array_add (sdt->services, service);
|
||||
|
||||
entry_begin = data;
|
||||
|
@ -1207,15 +1207,15 @@ error:
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_sdt:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_SDT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_SDT
|
||||
*
|
||||
* Returns the #GstMpegTSSDT contained in the @section.
|
||||
* Returns the #GstMpegTsSDT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTSSDT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegTsSDT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTSSDT *
|
||||
gst_mpegts_section_get_sdt (GstMpegTSSection * section)
|
||||
const GstMpegTsSDT *
|
||||
gst_mpegts_section_get_sdt (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_SDT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -1229,7 +1229,7 @@ gst_mpegts_section_get_sdt (GstMpegTSSection * section)
|
|||
goto parse_failure;
|
||||
}
|
||||
|
||||
return (const GstMpegTSSDT *) section->cached_parsed;
|
||||
return (const GstMpegTsSDT *) section->cached_parsed;
|
||||
|
||||
bad_crc:
|
||||
{
|
||||
|
@ -1246,7 +1246,7 @@ parse_failure:
|
|||
|
||||
/* Time and Date Table (TDT) */
|
||||
static GstDateTime *
|
||||
_parse_tdt (GstMpegTSSection * section)
|
||||
_parse_tdt (GstMpegTsSection * section)
|
||||
{
|
||||
/* FIXME : Add length check */
|
||||
return _parse_utc_time (section->data + 3);
|
||||
|
@ -1254,7 +1254,7 @@ _parse_tdt (GstMpegTSSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_tdt:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_TDT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_TDT
|
||||
*
|
||||
* Returns the #GstDateTime of the TDT
|
||||
*
|
||||
|
@ -1262,7 +1262,7 @@ _parse_tdt (GstMpegTSSection * section)
|
|||
* if an error happened. Release with #gst_date_time_unref when done.
|
||||
*/
|
||||
GstDateTime *
|
||||
gst_mpegts_section_get_tdt (GstMpegTSSection * section)
|
||||
gst_mpegts_section_get_tdt (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_TDT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -1284,34 +1284,34 @@ parse_failure:
|
|||
|
||||
|
||||
/* Time Offset Table (TOT) */
|
||||
static GstMpegTSTOT *
|
||||
_gst_mpegts_tot_copy (GstMpegTSTOT * tot)
|
||||
static GstMpegTsTOT *
|
||||
_gst_mpegts_tot_copy (GstMpegTsTOT * tot)
|
||||
{
|
||||
/* FIXME : IMPLEMENT */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gst_mpegts_tot_free (GstMpegTSTOT * tot)
|
||||
_gst_mpegts_tot_free (GstMpegTsTOT * tot)
|
||||
{
|
||||
/* FIXME: IMPLEMENT */
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTSTOT, gst_mpegts_tot,
|
||||
G_DEFINE_BOXED_TYPE (GstMpegTsTOT, gst_mpegts_tot,
|
||||
(GBoxedCopyFunc) _gst_mpegts_tot_copy, (GFreeFunc) _gst_mpegts_tot_free);
|
||||
|
||||
static GstMpegTSTOT *
|
||||
_parse_tot (GstMpegTSSection * section)
|
||||
static GstMpegTsTOT *
|
||||
_parse_tot (GstMpegTsSection * section)
|
||||
{
|
||||
guint8 *data;
|
||||
GstMpegTSTOT *tot;
|
||||
GstMpegTsTOT *tot;
|
||||
guint16 desc_len;
|
||||
|
||||
/* FIXME : Check minimum length */
|
||||
|
||||
GST_DEBUG ("TOT");
|
||||
|
||||
tot = g_slice_new0 (GstMpegTSTOT);
|
||||
tot = g_slice_new0 (GstMpegTsTOT);
|
||||
|
||||
tot->utc_time = _parse_utc_time (section->data + 3);
|
||||
|
||||
|
@ -1326,15 +1326,15 @@ _parse_tot (GstMpegTSSection * section)
|
|||
|
||||
/**
|
||||
* gst_mpegts_section_get_tot:
|
||||
* @section: a #GstMpegTSSection of type %GST_MPEGTS_SECTION_TOT
|
||||
* @section: a #GstMpegTsSection of type %GST_MPEGTS_SECTION_TOT
|
||||
*
|
||||
* Returns the #GstMpegTSTOT contained in the @section.
|
||||
* Returns the #GstMpegTsTOT contained in the @section.
|
||||
*
|
||||
* Returns: The #GstMpegTSTOT contained in the section, or %NULL if an error
|
||||
* Returns: The #GstMpegTsTOT contained in the section, or %NULL if an error
|
||||
* happened.
|
||||
*/
|
||||
const GstMpegTSTOT *
|
||||
gst_mpegts_section_get_tot (GstMpegTSSection * section)
|
||||
const GstMpegTsTOT *
|
||||
gst_mpegts_section_get_tot (GstMpegTsSection * section)
|
||||
{
|
||||
g_return_val_if_fail (section->section_type == GST_MPEGTS_SECTION_TOT, NULL);
|
||||
g_return_val_if_fail (section->cached_parsed || section->data, NULL);
|
||||
|
@ -1348,7 +1348,7 @@ gst_mpegts_section_get_tot (GstMpegTSSection * section)
|
|||
goto parse_failure;
|
||||
}
|
||||
|
||||
return (const GstMpegTSTOT *) section->cached_parsed;
|
||||
return (const GstMpegTsTOT *) section->cached_parsed;
|
||||
|
||||
bad_crc:
|
||||
{
|
||||
|
@ -1396,8 +1396,8 @@ gst_mpegts_initialize (void)
|
|||
__initialize_descriptors ();
|
||||
}
|
||||
|
||||
static GstMpegTSSectionType
|
||||
_identify_section (GstMpegTSSectionTableID table_id)
|
||||
static GstMpegTsSectionType
|
||||
_identify_section (GstMpegTsSectionTableID table_id)
|
||||
{
|
||||
switch (table_id) {
|
||||
case GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION:
|
||||
|
@ -1435,7 +1435,7 @@ _identify_section (GstMpegTSSectionTableID table_id)
|
|||
* should contain the table_id field).
|
||||
* @data_size: size of the @data argument.
|
||||
*
|
||||
* Creates a new #GstMpegTSSection from the provided @data.
|
||||
* 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
|
||||
|
@ -1444,13 +1444,13 @@ _identify_section (GstMpegTSSectionTableID table_id)
|
|||
* Note: it is the responsibility of the caller to ensure @data does point
|
||||
* to the beginning of the section.
|
||||
*
|
||||
* Returns: (transfer full): A new #GstMpegTSSection if the data was valid,
|
||||
* Returns: (transfer full): A new #GstMpegTsSection if the data was valid,
|
||||
* else %NULL
|
||||
*/
|
||||
GstMpegTSSection *
|
||||
GstMpegTsSection *
|
||||
gst_mpegts_section_new (guint16 pid, guint8 * data, gsize data_size)
|
||||
{
|
||||
GstMpegTSSection *res = NULL;
|
||||
GstMpegTsSection *res = NULL;
|
||||
guint8 tmp;
|
||||
guint16 section_length;
|
||||
|
||||
|
@ -1459,7 +1459,7 @@ gst_mpegts_section_new (guint16 pid, guint8 * data, gsize data_size)
|
|||
if (G_UNLIKELY (data_size < section_length + 3))
|
||||
goto short_packet;
|
||||
|
||||
res = g_slice_new0 (GstMpegTSSection);
|
||||
res = g_slice_new0 (GstMpegTsSection);
|
||||
gst_mini_object_init (GST_MINI_OBJECT_CAST (res), 0, MPEG_TYPE_TS_SECTION,
|
||||
(GstMiniObjectCopyFunction) _gst_mpegts_section_copy, NULL,
|
||||
(GstMiniObjectFreeFunction) _gst_mpegts_section_free);
|
||||
|
|
|
@ -27,17 +27,17 @@
|
|||
#include <gst/gst.h>
|
||||
#include <gst/mpegts/gstmpegtsdescriptor.h>
|
||||
|
||||
typedef struct _GstMpegTSSection GstMpegTSSection;
|
||||
typedef struct _GstMpegTsSection GstMpegTsSection;
|
||||
|
||||
#define GST_TYPE_MPEGTS_SECTION (gst_mpegts_section_get_type())
|
||||
#define GST_MPEGTS_SECTION(section) ((GstMpegTSSection*) section)
|
||||
#define GST_MPEGTS_SECTION(section) ((GstMpegTsSection*) section)
|
||||
|
||||
#define GST_MPEGTS_SECTION_TYPE(section) (GST_MPEGTS_SECTION (section)->section_type)
|
||||
|
||||
GType gst_mpegts_section_get_type (void);
|
||||
|
||||
/**
|
||||
* GstMpegTSSectionType:
|
||||
* GstMpegTsSectionType:
|
||||
* @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)
|
||||
|
@ -51,7 +51,7 @@ GType gst_mpegts_section_get_type (void);
|
|||
* @GST_MPEGTS_SECTION_TOT: Time Offset Table (EN 300 468)
|
||||
* @GST_MPEGTS_SECTION_LAST:
|
||||
*
|
||||
* Types of #GstMpegTSSection that the library handles.
|
||||
* Types of #GstMpegTsSection that the library handles.
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEGTS_SECTION_UNKNOWN = 0,
|
||||
|
@ -66,7 +66,7 @@ typedef enum {
|
|||
GST_MPEGTS_SECTION_TDT,
|
||||
GST_MPEGTS_SECTION_TOT,
|
||||
GST_MPEGTS_SECTION_LAST
|
||||
} GstMpegTSSectionType;
|
||||
} GstMpegTsSectionType;
|
||||
|
||||
/* FIXME : How do we deal with clashing table_id for the various standards:
|
||||
* * ISO/IEC 13818-1 and ITU H.222.0 : Takes precedence over all
|
||||
|
@ -79,9 +79,9 @@ typedef enum {
|
|||
* Do we create a different enum for variants ?
|
||||
*/
|
||||
/**
|
||||
* GstMpegTSSectionTableID:
|
||||
* GstMpegTsSectionTableID:
|
||||
*
|
||||
* Values for a #GstMpegTSSection table_id
|
||||
* Values for a #GstMpegTsSection table_id
|
||||
*/
|
||||
typedef enum {
|
||||
/* ITU H.222.0 / IEC 13818-1 */
|
||||
|
@ -188,10 +188,10 @@ typedef enum {
|
|||
/* Unset */
|
||||
GST_MTS_TABLE_ID_UNSET = 0xFF
|
||||
|
||||
} GstMpegTSSectionTableID;
|
||||
} GstMpegTsSectionTableID;
|
||||
|
||||
/**
|
||||
* GstMpegTSSection:
|
||||
* GstMpegTsSection:
|
||||
* @section_type: The type of section
|
||||
* @pid: The pid on which this section was found
|
||||
* @table_id: The table id of this section
|
||||
|
@ -205,16 +205,16 @@ typedef enum {
|
|||
*
|
||||
* Mpeg-TS Section Information (SI) (ISO/IEC 13818-1)
|
||||
*/
|
||||
struct _GstMpegTSSection
|
||||
struct _GstMpegTsSection
|
||||
{
|
||||
/*< private >*/
|
||||
GstMiniObject parent;
|
||||
|
||||
/*< public >*/
|
||||
GstMpegTSSectionType section_type;
|
||||
GstMpegTsSectionType section_type;
|
||||
|
||||
guint16 pid;
|
||||
GstMpegTSSectionTableID table_id;
|
||||
GstMpegTsSectionTableID table_id;
|
||||
|
||||
guint16 subtable_extension;
|
||||
guint8 version_number;
|
||||
|
@ -243,7 +243,7 @@ struct _GstMpegTSSection
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTSRunningStatus:
|
||||
* GstMpegTsRunningStatus:
|
||||
*
|
||||
* Running status of a service.
|
||||
*
|
||||
|
@ -257,46 +257,46 @@ typedef enum
|
|||
GST_MPEGTS_RUNNING_STATUS_PAUSING,
|
||||
GST_MPEGTS_RUNNING_STATUS_RUNNING,
|
||||
GST_MPEGTS_RUNNING_STATUS_OFF_AIR
|
||||
} GstMpegTSRunningStatus;
|
||||
} GstMpegTsRunningStatus;
|
||||
|
||||
|
||||
/* PAT */
|
||||
typedef struct _GstMpegTSPatProgram GstMpegTSPatProgram;
|
||||
typedef struct _GstMpegTsPatProgram GstMpegTsPatProgram;
|
||||
/**
|
||||
* GstMpegTSPatProgram:
|
||||
* GstMpegTsPatProgram:
|
||||
* @program_number: the program number
|
||||
* @network_or_program_map_PID: the network of program map PID
|
||||
*
|
||||
* A program entry from a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).
|
||||
*/
|
||||
struct _GstMpegTSPatProgram
|
||||
struct _GstMpegTsPatProgram
|
||||
{
|
||||
guint16 program_number;
|
||||
guint16 network_or_program_map_PID;
|
||||
};
|
||||
|
||||
GArray *gst_mpegts_section_get_pat (GstMpegTSSection *section);
|
||||
GArray *gst_mpegts_section_get_pat (GstMpegTsSection *section);
|
||||
|
||||
/* CAT */
|
||||
|
||||
GArray *gst_mpegts_section_get_cat (GstMpegTSSection *section);
|
||||
GArray *gst_mpegts_section_get_cat (GstMpegTsSection *section);
|
||||
|
||||
/* PMT */
|
||||
typedef struct _GstMpegTSPMTStream GstMpegTSPMTStream;
|
||||
typedef struct _GstMpegTSPMT GstMpegTSPMT;
|
||||
typedef struct _GstMpegTsPMTStream GstMpegTsPMTStream;
|
||||
typedef struct _GstMpegTsPMT GstMpegTsPMT;
|
||||
#define GST_TYPE_MPEGTS_PMT (gst_mpegts_pmt_get_type())
|
||||
#define GST_TYPE_MPEGTS_PMT_STREAM (gst_mpegts_pmt_stream_get_type())
|
||||
|
||||
/**
|
||||
* GstMpegTSPMTStream:
|
||||
* GstMpegTsPMTStream:
|
||||
* @stream_type: the type of stream
|
||||
* @pid: the PID of the stream
|
||||
* @descriptors: (element-type GstMpegTSDescriptor): the descriptors of the
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): the descriptors of the
|
||||
* stream
|
||||
*
|
||||
* An individual stream definition.
|
||||
*/
|
||||
struct _GstMpegTSPMTStream
|
||||
struct _GstMpegTsPMTStream
|
||||
{
|
||||
guint8 stream_type;
|
||||
guint16 pid;
|
||||
|
@ -305,17 +305,17 @@ struct _GstMpegTSPMTStream
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTSPMT:
|
||||
* GstMpegTsPMT:
|
||||
* @pcr_pid: PID of the stream containing PCR
|
||||
* @descriptors: (element-type GstMpegTSDescriptor): array of #GstMpegTSDescriptor
|
||||
* @streams: (element-type GstMpegTSPMTStream): Array of #GstMpegTSPMTStream
|
||||
* @descriptors: (element-type GstMpegTsDescriptor): array of #GstMpegTsDescriptor
|
||||
* @streams: (element-type GstMpegTsPMTStream): Array of #GstMpegTsPMTStream
|
||||
*
|
||||
* Program Map Table (ISO/IEC 13818-1).
|
||||
*
|
||||
* The program_number is contained in the subtable_extension field of the
|
||||
* container #GstMpegTSSection.
|
||||
* container #GstMpegTsSection.
|
||||
*/
|
||||
struct _GstMpegTSPMT
|
||||
struct _GstMpegTsPMT
|
||||
{
|
||||
guint16 pcr_pid;
|
||||
|
||||
|
@ -326,28 +326,28 @@ struct _GstMpegTSPMT
|
|||
GType gst_mpegts_pmt_get_type (void);
|
||||
GType gst_mpegts_pmt_stream_get_type (void);
|
||||
|
||||
const GstMpegTSPMT *gst_mpegts_section_get_pmt (GstMpegTSSection *section);
|
||||
const GstMpegTsPMT *gst_mpegts_section_get_pmt (GstMpegTsSection *section);
|
||||
|
||||
/* TSDT */
|
||||
|
||||
GArray *gst_mpegts_section_get_tsdt (GstMpegTSSection *section);
|
||||
GArray *gst_mpegts_section_get_tsdt (GstMpegTsSection *section);
|
||||
|
||||
/* NIT */
|
||||
|
||||
typedef struct _GstMpegTSNITStream GstMpegTSNITStream;
|
||||
typedef struct _GstMpegTSNIT GstMpegTSNIT;
|
||||
typedef struct _GstMpegTsNITStream GstMpegTsNITStream;
|
||||
typedef struct _GstMpegTsNIT GstMpegTsNIT;
|
||||
|
||||
#define GST_TYPE_MPEGTS_NIT (gst_mpegts_nit_get_type())
|
||||
#define GST_TYPE_MPEGTS_NIT_STREAM (gst_mpegts_nit_stream_get_type())
|
||||
|
||||
/**
|
||||
* GstMpegTSNITStream:
|
||||
* GstMpegTsNITStream:
|
||||
* @transport_stream_id:
|
||||
* @original_network_id:
|
||||
* @descriptors: (element-type GstMpegTSDescriptor)
|
||||
* @descriptors: (element-type GstMpegTsDescriptor)
|
||||
*
|
||||
*/
|
||||
struct _GstMpegTSNITStream
|
||||
struct _GstMpegTsNITStream
|
||||
{
|
||||
guint16 transport_stream_id;
|
||||
guint16 original_network_id;
|
||||
|
@ -356,17 +356,17 @@ struct _GstMpegTSNITStream
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTSNIT:
|
||||
* GstMpegTsNIT:
|
||||
* @actual_network: Whether this NIT corresponds to the actual stream
|
||||
* @descriptors: (element-type GstMpegTSDescriptor) the global descriptors
|
||||
* @streams: (element-type GstMpegTSNITStream) the streams
|
||||
* @descriptors: (element-type GstMpegTsDescriptor) the global descriptors
|
||||
* @streams: (element-type GstMpegTsNITStream) the 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.
|
||||
* container #GstMpegTsSection.
|
||||
*/
|
||||
struct _GstMpegTSNIT
|
||||
struct _GstMpegTsNIT
|
||||
{
|
||||
gboolean actual_network;
|
||||
|
||||
|
@ -378,16 +378,16 @@ struct _GstMpegTSNIT
|
|||
GType gst_mpegts_nit_get_type (void);
|
||||
GType gst_mpegts_nit_stream_get_type (void);
|
||||
|
||||
const GstMpegTSNIT *gst_mpegts_section_get_nit (GstMpegTSSection *section);
|
||||
const GstMpegTsNIT *gst_mpegts_section_get_nit (GstMpegTsSection *section);
|
||||
|
||||
/* BAT */
|
||||
|
||||
typedef struct _GstMpegTSBATStream GstMpegTSBATStream;
|
||||
typedef struct _GstMpegTSBAT GstMpegTSBAT;
|
||||
typedef struct _GstMpegTsBATStream GstMpegTsBATStream;
|
||||
typedef struct _GstMpegTsBAT GstMpegTsBAT;
|
||||
|
||||
#define GST_TYPE_MPEGTS_BAT (gst_mpegts_bat_get_type())
|
||||
|
||||
struct _GstMpegTSBATStream
|
||||
struct _GstMpegTsBATStream
|
||||
{
|
||||
guint16 transport_stream_id;
|
||||
guint16 original_network_id;
|
||||
|
@ -396,11 +396,11 @@ struct _GstMpegTSBATStream
|
|||
};
|
||||
|
||||
/**
|
||||
* GstMpegTSBAT:
|
||||
* GstMpegTsBAT:
|
||||
*
|
||||
* DVB Bouquet Association Table (EN 300 468)
|
||||
*/
|
||||
struct _GstMpegTSBAT
|
||||
struct _GstMpegTsBAT
|
||||
{
|
||||
gboolean actual_network;
|
||||
|
||||
|
@ -415,27 +415,27 @@ GType gst_mpegts_bat_get_type (void);
|
|||
#define GST_TYPE_MPEGTS_SDT (gst_mpegts_sdt_get_type())
|
||||
#define GST_TYPE_MPEGTS_SDT_SERVICE (gst_mpegts_sdt_service_get_type())
|
||||
|
||||
typedef struct _GstMpegTSSDTService GstMpegTSSDTService;
|
||||
typedef struct _GstMpegTSSDT GstMpegTSSDT;
|
||||
typedef struct _GstMpegTsSDTService GstMpegTsSDTService;
|
||||
typedef struct _GstMpegTsSDT GstMpegTsSDT;
|
||||
|
||||
struct _GstMpegTSSDTService
|
||||
struct _GstMpegTsSDTService
|
||||
{
|
||||
guint16 service_id;
|
||||
|
||||
gboolean EIT_schedule_flag;
|
||||
gboolean EIT_present_following_flag;
|
||||
GstMpegTSRunningStatus running_status;
|
||||
GstMpegTsRunningStatus running_status;
|
||||
gboolean free_CA_mode;
|
||||
|
||||
GArray *descriptors;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpegTSSDT:
|
||||
* GstMpegTsSDT:
|
||||
*
|
||||
* Service Description Table (EN 300 468)
|
||||
*/
|
||||
struct _GstMpegTSSDT
|
||||
struct _GstMpegTsSDT
|
||||
{
|
||||
guint16 original_network_id;
|
||||
gboolean actual_ts;
|
||||
|
@ -446,40 +446,40 @@ struct _GstMpegTSSDT
|
|||
GType gst_mpegts_sdt_get_type (void);
|
||||
GType gst_mpegts_sdt_service_get_type (void);
|
||||
|
||||
const GstMpegTSSDT *gst_mpegts_section_get_sdt (GstMpegTSSection *section);
|
||||
const GstMpegTsSDT *gst_mpegts_section_get_sdt (GstMpegTsSection *section);
|
||||
|
||||
/* EIT */
|
||||
|
||||
#define GST_TYPE_MPEGTS_EIT (gst_mpegts_eit_get_type())
|
||||
#define GST_TYPE_MPEGTS_EIT_EVENT (gst_mpegts_eit_event_get_type())
|
||||
|
||||
typedef struct _GstMpegTSEITEvent GstMpegTSEITEvent;
|
||||
typedef struct _GstMpegTSEIT GstMpegTSEIT;
|
||||
typedef struct _GstMpegTsEITEvent GstMpegTsEITEvent;
|
||||
typedef struct _GstMpegTsEIT GstMpegTsEIT;
|
||||
|
||||
/**
|
||||
* GstMpegTSEITEvent:
|
||||
* GstMpegTsEITEvent:
|
||||
*
|
||||
* Event from a @GstMpegTSEIT
|
||||
* Event from a @GstMpegTsEIT
|
||||
*/
|
||||
struct _GstMpegTSEITEvent
|
||||
struct _GstMpegTsEITEvent
|
||||
{
|
||||
guint16 event_id;
|
||||
|
||||
GstDateTime *start_time;
|
||||
guint32 duration;
|
||||
|
||||
GstMpegTSRunningStatus running_status;
|
||||
GstMpegTsRunningStatus running_status;
|
||||
gboolean free_CA_mode;
|
||||
|
||||
GArray *descriptors;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpegTSEIT:
|
||||
* GstMpegTsEIT:
|
||||
*
|
||||
* Event Information Table (EN 300 468)
|
||||
*/
|
||||
struct _GstMpegTSEIT
|
||||
struct _GstMpegTsEIT
|
||||
{
|
||||
guint16 transport_stream_id;
|
||||
guint16 original_network_id;
|
||||
|
@ -495,21 +495,21 @@ struct _GstMpegTSEIT
|
|||
GType gst_mpegts_eit_get_type (void);
|
||||
GType gst_mpegts_eit_event_get_type (void);
|
||||
|
||||
const GstMpegTSEIT *gst_mpegts_section_get_eit (GstMpegTSSection *section);
|
||||
const GstMpegTsEIT *gst_mpegts_section_get_eit (GstMpegTsSection *section);
|
||||
|
||||
/* TDT */
|
||||
GstDateTime *gst_mpegts_section_get_tdt (GstMpegTSSection *section);
|
||||
GstDateTime *gst_mpegts_section_get_tdt (GstMpegTsSection *section);
|
||||
|
||||
/* TOT */
|
||||
|
||||
typedef struct _GstMpegTSTOT GstMpegTSTOT;
|
||||
typedef struct _GstMpegTsTOT GstMpegTsTOT;
|
||||
#define GST_TYPE_MPEGTS_TOT (gst_mpegts_tot_get_type())
|
||||
/**
|
||||
* GstMpegTSTOT:
|
||||
* GstMpegTsTOT:
|
||||
*
|
||||
* Time Offset Table (EN 300 468)
|
||||
*/
|
||||
struct _GstMpegTSTOT
|
||||
struct _GstMpegTsTOT
|
||||
{
|
||||
GstDateTime *utc_time;
|
||||
|
||||
|
@ -517,18 +517,18 @@ struct _GstMpegTSTOT
|
|||
};
|
||||
|
||||
GType gst_mpegts_tot_get_type (void);
|
||||
const GstMpegTSTOT *gst_mpegts_section_get_tot (GstMpegTSSection *section);
|
||||
const GstMpegTsTOT *gst_mpegts_section_get_tot (GstMpegTsSection *section);
|
||||
|
||||
/* generic */
|
||||
|
||||
#define gst_mpegts_section_ref(section) ((GstMpegTSSection*) gst_mini_object_ref (GST_MINI_OBJECT_CAST (section)))
|
||||
#define gst_mpegts_section_ref(section) ((GstMpegTsSection*) gst_mini_object_ref (GST_MINI_OBJECT_CAST (section)))
|
||||
#define gst_mpegts_section_unref(section) (gst_mini_object_unref (GST_MINI_OBJECT_CAST (section)))
|
||||
|
||||
GstMessage *gst_message_new_mpegts_section (GstObject *parent, GstMpegTSSection *section);
|
||||
GstMessage *gst_message_new_mpegts_section (GstObject *parent, GstMpegTsSection *section);
|
||||
|
||||
GstMpegTSSection *gst_message_parse_mpegts_section (GstMessage *message);
|
||||
GstMpegTsSection *gst_message_parse_mpegts_section (GstMessage *message);
|
||||
|
||||
GstMpegTSSection *gst_mpegts_section_new (guint16 pid,
|
||||
GstMpegTsSection *gst_mpegts_section_new (guint16 pid,
|
||||
guint8 * data,
|
||||
gsize data_size);
|
||||
|
||||
|
|
Loading…
Reference in a new issue