summaryrefslogtreecommitdiffstats
path: root/gst/mpegdemux/mpegtspacketizer.c
diff options
context:
space:
mode:
authorDave Robillard <dave@drobilla.net>2009-07-10 20:40:11 -0400
committerDave Robillard <dave@drobilla.net>2009-07-10 20:40:11 -0400
commitba89c9e518ded3d919461903a444799a5115c34f (patch)
tree4b5429dcf1cdb5fe63b214d771d4ad76109ef099 /gst/mpegdemux/mpegtspacketizer.c
parentcaba48f261421d397900471b19350da2e5a4a4e5 (diff)
parentd607daaf183eb3e068ec53bbf373ea3a63991aa9 (diff)
downloadgst-plugins-bad-ba89c9e518ded3d919461903a444799a5115c34f.tar.gz
gst-plugins-bad-ba89c9e518ded3d919461903a444799a5115c34f.tar.bz2
gst-plugins-bad-ba89c9e518ded3d919461903a444799a5115c34f.zip
Merge branch 'master' of git://anongit.freedesktop.org/gstreamer/gst-plugins-bad into fdo
Diffstat (limited to 'gst/mpegdemux/mpegtspacketizer.c')
-rw-r--r--gst/mpegdemux/mpegtspacketizer.c41
1 files changed, 38 insertions, 3 deletions
diff --git a/gst/mpegdemux/mpegtspacketizer.c b/gst/mpegdemux/mpegtspacketizer.c
index c9fc325f..5ed71f0c 100644
--- a/gst/mpegdemux/mpegtspacketizer.c
+++ b/gst/mpegdemux/mpegtspacketizer.c
@@ -507,10 +507,48 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer * packetizer,
GstMPEGDescriptor *desc =
gst_mpeg_descriptor_parse (data, stream_info_length);
if (desc != NULL) {
+ guint8 *desc_data;
if (gst_mpeg_descriptor_find (desc, DESC_DVB_AC3)) {
gst_structure_set (stream_info, "has-ac3", G_TYPE_BOOLEAN, TRUE,
NULL);
}
+ desc_data = gst_mpeg_descriptor_find (desc, DESC_DVB_DATA_BROADCAST_ID);
+ if (desc_data) {
+ guint16 data_broadcast_id;
+ data_broadcast_id =
+ DESC_DVB_DATA_BROADCAST_ID_data_broadcast_id (desc_data);
+ gst_structure_set (stream_info, "data-broadcast-id", G_TYPE_UINT,
+ data_broadcast_id, NULL);
+ }
+ desc_data = gst_mpeg_descriptor_find (desc, DESC_DVB_DATA_BROADCAST);
+ if (desc_data) {
+ GstStructure *databroadcast_info;
+ guint16 data_broadcast_id;
+ guint8 component_tag;
+ data_broadcast_id =
+ DESC_DVB_DATA_BROADCAST_data_broadcast_id (desc_data);
+ component_tag = DESC_DVB_DATA_BROADCAST_component_tag (desc_data);
+ databroadcast_info = gst_structure_new ("data-broadcast", "id",
+ G_TYPE_UINT, data_broadcast_id, "component-tag", component_tag,
+ NULL);
+ gst_structure_set (stream_info, "data-broadcast", GST_TYPE_STRUCTURE,
+ databroadcast_info, NULL);
+ }
+ desc_data =
+ gst_mpeg_descriptor_find (desc, DESC_DVB_CAROUSEL_IDENTIFIER);
+ if (desc_data) {
+ guint32 carousel_id;
+ carousel_id = DESC_DVB_CAROUSEL_IDENTIFIER_carousel_id (desc_data);
+ gst_structure_set (stream_info, "carousel-id", G_TYPE_UINT,
+ carousel_id, NULL);
+ }
+ desc_data = gst_mpeg_descriptor_find (desc, DESC_DVB_STREAM_IDENTIFIER);
+ if (desc_data) {
+ guint8 component_tag;
+ component_tag = DESC_DVB_STREAM_IDENTIFIER_component_tag (desc_data);
+ gst_structure_set (stream_info, "component-tag", G_TYPE_UINT,
+ component_tag, NULL);
+ }
gst_mpeg_descriptor_free (desc);
}
@@ -1874,9 +1912,6 @@ mpegts_packetizer_remove_stream (MpegTSPacketizer * packetizer, gint16 pid)
GST_INFO ("Removing stream for PID %d", pid);
g_hash_table_remove (packetizer->streams, GINT_TO_POINTER ((gint) pid));
-
- g_object_unref (stream->section_adapter);
- g_free (stream);
}
}