summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--gst/mpegtsparse/mpegtspacketizer.c22
2 files changed, 28 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e5f1936d..888b0d95 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,12 @@
2008-01-22 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* gst/mpegtsparse/mpegtspacketizer.c:
+ Parsed and added network name to the nit structure sent
+ in the bus message.
+
+2008-01-22 Zaheer Abbas Merali <zaheerabbas at merali dot org>
+
+ * gst/mpegtsparse/mpegtspacketizer.c:
Remove leaks introduced by not freeing g_strndup'd strings.
Fix start_time and duration parsing in EIT.
diff --git a/gst/mpegtsparse/mpegtspacketizer.c b/gst/mpegtsparse/mpegtspacketizer.c
index 5deb2418..17231b4c 100644
--- a/gst/mpegtsparse/mpegtspacketizer.c
+++ b/gst/mpegtsparse/mpegtspacketizer.c
@@ -606,6 +606,28 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer * packetizer,
gst_structure_free (nit);
goto error;
}
+ guint8 *networkname_descriptor;
+ GstMPEGDescriptor *mpegdescriptor =
+ gst_mpeg_descriptor_parse (data, descriptors_loop_length);
+ networkname_descriptor =
+ gst_mpeg_descriptor_find (mpegdescriptor, DESC_DVB_NETWORK_NAME);
+ if (networkname_descriptor != NULL) {
+ gchar *networkname_tmp;
+ guint networkname_length =
+ DESC_DVB_NETWORK_NAME_length (networkname_descriptor);
+ gchar *networkname =
+ (gchar *) DESC_DVB_NETWORK_NAME_text (networkname_descriptor);
+ if (networkname[0] < 0x20) {
+ networkname_length -= 1;
+ networkname += 1;
+ }
+ networkname_tmp = g_strndup (networkname, networkname_length);
+ gst_structure_set (nit, "network-name", G_TYPE_STRING, networkname_tmp,
+ NULL);
+ g_free (networkname_tmp);
+ }
+
+ gst_mpeg_descriptor_free (mpegdescriptor);
descriptors = g_value_array_new (0);
if (!mpegts_packetizer_parse_descriptors (packetizer,