diff options
author | Gil Pedersen <git@gpost.dk> | 2012-04-19 14:20:52 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-04-20 11:25:31 +0200 |
commit | fcd8155d8774ed644370098ae0918f2cbd41e9c1 (patch) | |
tree | 005fb13b6c8d83f271de31a5882f201cb344593d /gst/mpegtsdemux/mpegtspacketizer.c | |
parent | 5bd76c7c97de8adfb8a629d9b0d64a6f4fb8f0b1 (diff) | |
download | gstreamer-plugins-bad-fcd8155d8774ed644370098ae0918f2cbd41e9c1.tar.gz |
mpegtsdemux: port to 0.11
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674397
Diffstat (limited to 'gst/mpegtsdemux/mpegtspacketizer.c')
-rw-r--r-- | gst/mpegtsdemux/mpegtspacketizer.c | 227 |
1 files changed, 139 insertions, 88 deletions
diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c index 41ff6dd37..b89492033 100644 --- a/gst/mpegtsdemux/mpegtspacketizer.c +++ b/gst/mpegtsdemux/mpegtspacketizer.c @@ -357,6 +357,8 @@ mpegts_packetizer_parse_packet (MpegTSPacketizer2 * packetizer, packet->data = data; + gst_buffer_unmap (packet->buffer, &packet->bufmap); + if (packet->adaptation_field_control & 0x02) if (!mpegts_packetizer_parse_adaptation_field_control (packetizer, packet)) return FALSE; @@ -373,6 +375,7 @@ static gboolean mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer, MpegTSPacketizerStream * stream, MpegTSPacketizerSection * section) { + GstMapInfo map; guint8 tmp; guint8 *data, *crc_data; MpegTSPacketizerStreamSubtable *subtable; @@ -382,7 +385,8 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer, /* get the section buffer, pass the ownership to the caller */ section->buffer = gst_adapter_take_buffer (stream->section_adapter, 3 + stream->section_length); - data = GST_BUFFER_DATA (section->buffer); + gst_buffer_map (section->buffer, &map, GST_MAP_READ); + data = map.data; GST_BUFFER_OFFSET (section->buffer) = stream->offset; section->table_id = *data++; @@ -418,8 +422,7 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer, goto not_applicable; /* CRC is at the end of the section */ - crc_data = - GST_BUFFER_DATA (section->buffer) + GST_BUFFER_SIZE (section->buffer) - 4; + crc_data = map.data + map.size - 4; section->crc = GST_READ_UINT32_BE (crc_data); if (section->version_number == subtable->version_number && @@ -430,6 +433,8 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer, subtable->crc = section->crc; stream->section_table_id = section->table_id; + gst_buffer_unmap (section->buffer, &map); + return TRUE; not_applicable: @@ -438,6 +443,7 @@ not_applicable: section->pid, section->table_id, section->subtable_extension, section->current_next_indicator, section->version_number, section->crc); section->complete = FALSE; + gst_buffer_unmap (section->buffer, &map); gst_buffer_unref (section->buffer); return TRUE; } @@ -491,6 +497,7 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer, MpegTSPacketizerSection * section) { GstStructure *pat_info = NULL; + GstMapInfo map; guint8 *data, *end; guint transport_stream_id; guint8 tmp; @@ -501,7 +508,8 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer, GstStructure *entry = NULL; gchar *struct_name; - data = GST_BUFFER_DATA (section->buffer); + gst_buffer_map (section->buffer, &map, GST_MAP_READ); + data = map.data; section->table_id = *data++; section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF; @@ -517,11 +525,11 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer, /* skip section_number and last_section_number */ data += 2; - pat_info = gst_structure_id_new (QUARK_PAT, + pat_info = gst_structure_new_id (QUARK_PAT, QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id, NULL); g_value_init (&entries, GST_TYPE_LIST); /* stop at the CRC */ - end = GST_BUFFER_DATA (section->buffer) + GST_BUFFER_SIZE (section->buffer); + end = map.data + map.size; while (data < end - 4) { program_number = GST_READ_UINT16_BE (data); data += 2; @@ -530,7 +538,7 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer, data += 2; struct_name = g_strdup_printf ("program-%d", program_number); - entry = gst_structure_new (struct_name, NULL); + entry = gst_structure_new_empty (struct_name); g_free (struct_name); gst_structure_id_set (entry, QUARK_PROGRAM_NUMBER, G_TYPE_UINT, program_number, QUARK_PID, G_TYPE_UINT, pmt_pid, NULL); @@ -544,6 +552,8 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer, gst_structure_id_set_value (pat_info, QUARK_PROGRAMS, &entries); g_value_unset (&entries); + gst_buffer_unmap (section->buffer, &map); + if (data != end - 4) { /* FIXME: check the CRC before parsing the packet */ GST_ERROR ("at the end of PAT data != end - 4"); @@ -560,6 +570,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer, MpegTSPacketizerSection * section) { GstStructure *pmt = NULL; + GstMapInfo map; guint8 *data, *end; guint16 program_number; guint8 tmp; @@ -574,15 +585,17 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer, GstStructure *stream_info = NULL; gchar *struct_name; + gst_buffer_map (section->buffer, &map, GST_MAP_READ); + data = map.data; + /* fixed header + CRC == 16 */ - if (GST_BUFFER_SIZE (section->buffer) < 16) { + if (map.size < 16) { GST_WARNING ("PID %d invalid PMT size %d", section->pid, section->section_length); goto error; } - data = GST_BUFFER_DATA (section->buffer); - end = data + GST_BUFFER_SIZE (section->buffer); + end = map.data + map.size; section->table_id = *data++; section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF; @@ -606,7 +619,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer, program_info_length = GST_READ_UINT16_BE (data) & 0x0FFF; data += 2; - pmt = gst_structure_id_new (QUARK_PMT, + pmt = gst_structure_new_id (QUARK_PMT, QUARK_PROGRAM_NUMBER, G_TYPE_UINT, program_number, QUARK_PCR_PID, G_TYPE_UINT, pcr_pid, QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number, NULL); @@ -653,7 +666,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer, } struct_name = g_strdup_printf ("pid-%d", pid); - stream_info = gst_structure_new (struct_name, NULL); + stream_info = gst_structure_new_empty (struct_name); g_free (struct_name); gst_structure_id_set (stream_info, QUARK_PID, G_TYPE_UINT, pid, QUARK_STREAM_TYPE, G_TYPE_UINT, @@ -755,6 +768,8 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer, gst_structure_id_set_value (pmt, QUARK_STREAMS, &programs); g_value_unset (&programs); + gst_buffer_unmap (section->buffer, &map); + g_assert (data == end - 4); return pmt; @@ -762,6 +777,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer, error: if (pmt) gst_structure_free (pmt); + gst_buffer_unmap (section->buffer, &map); return NULL; } @@ -771,6 +787,7 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer, MpegTSPacketizerSection * section) { GstStructure *nit = NULL, *transport = NULL, *delivery_structure = NULL; + GstMapInfo map; guint8 *data, *end, *entry_begin; guint16 network_id, transport_stream_id, original_network_id; guint tmp; @@ -780,15 +797,18 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer, GValueArray *descriptors = NULL; GST_DEBUG ("NIT"); + + gst_buffer_map (section->buffer, &map, GST_MAP_READ); + data = map.data; + /* fixed header + CRC == 16 */ - if (GST_BUFFER_SIZE (section->buffer) < 23) { + if (map.size < 23) { GST_WARNING ("PID %d invalid NIT size %d", section->pid, section->section_length); goto error; } - data = GST_BUFFER_DATA (section->buffer); - end = data + GST_BUFFER_SIZE (section->buffer); + end = map.data + map.size; section->table_id = *data++; section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF; @@ -813,7 +833,7 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer, descriptors_loop_length = GST_READ_UINT16_BE (data) & 0x0FFF; data += 2; - nit = gst_structure_id_new (QUARK_NIT, + nit = gst_structure_new_id (QUARK_NIT, QUARK_NETWORK_ID, G_TYPE_UINT, network_id, QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number, QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT, @@ -891,7 +911,7 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer, data += 2; transport_name = g_strdup_printf ("transport-%d", transport_stream_id); - transport = gst_structure_new (transport_name, NULL); + transport = gst_structure_new_empty (transport_name); g_free (transport_name); gst_structure_id_set (transport, QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id, @@ -1376,15 +1396,16 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer, } if (data != end - 4) { - GST_WARNING ("PID %d invalid NIT parsed %d length %d", - section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)), - GST_BUFFER_SIZE (section->buffer)); + GST_WARNING ("PID %d invalid NIT parsed %d length %" G_GSIZE_FORMAT, + section->pid, (gint) (data - map.data), map.size); goto error; } gst_structure_id_set_value (nit, QUARK_TRANSPORTS, &transports); g_value_unset (&transports); + gst_buffer_unmap (section->buffer, &map); + GST_DEBUG ("NIT %" GST_PTR_FORMAT, nit); return nit; @@ -1393,6 +1414,8 @@ error: if (nit) gst_structure_free (nit); + gst_buffer_unmap (section->buffer, &map); + if (GST_VALUE_HOLDS_LIST (&transports)) g_value_unset (&transports); @@ -1403,6 +1426,7 @@ GstStructure * mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer, MpegTSPacketizerSection * section) { + GstMapInfo map; GstStructure *sdt = NULL, *service = NULL; guint8 *data, *end, *entry_begin; guint16 transport_stream_id, original_network_id, service_id; @@ -1416,15 +1440,18 @@ mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer, GValue service_value = { 0 }; GST_DEBUG ("SDT"); + + gst_buffer_map (section->buffer, &map, GST_MAP_READ); + data = map.data; + /* fixed header + CRC == 16 */ - if (GST_BUFFER_SIZE (section->buffer) < 14) { + if (map.size < 14) { GST_WARNING ("PID %d invalid SDT size %d", section->pid, section->section_length); goto error; } - data = GST_BUFFER_DATA (section->buffer); - end = data + GST_BUFFER_SIZE (section->buffer); + end = map.data + map.size; section->table_id = *data++; section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF; @@ -1452,7 +1479,7 @@ mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer, /* skip reserved byte */ data += 1; - sdt = gst_structure_id_new (QUARK_SDT, + sdt = gst_structure_new_id (QUARK_SDT, QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id, QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number, QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT, @@ -1491,7 +1518,7 @@ mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer, /* TODO send tag event down relevant pad for channel name and provider */ service_name = g_strdup_printf ("service-%d", service_id); - service = gst_structure_new (service_name, NULL); + service = gst_structure_new_empty (service_name); g_free (service_name); if (descriptors_loop_length) { @@ -1581,21 +1608,24 @@ mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer, } if (data != end - 4) { - GST_WARNING ("PID %d invalid SDT parsed %d length %d", - section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)), - GST_BUFFER_SIZE (section->buffer)); + GST_WARNING ("PID %d invalid SDT parsed %d length %" G_GSIZE_FORMAT, + section->pid, (gint) (data - map.data), map.size); goto error; } gst_structure_id_set_value (sdt, QUARK_SERVICES, &services); g_value_unset (&services); + gst_buffer_unmap (section->buffer, &map); + return sdt; error: if (sdt) gst_structure_free (sdt); + gst_buffer_unmap (section->buffer, &map); + if (GST_VALUE_HOLDS_LIST (&services)) g_value_unset (&services); @@ -1614,6 +1644,7 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer, guint16 mjd; guint year, month, day, hour, minute, second; guint duration; + GstMapInfo map; guint8 *data, *end, *duration_ptr, *utc_ptr; guint16 descriptors_loop_length; GValue events = { 0 }; @@ -1622,15 +1653,17 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer, gchar *event_name; guint tmp; + gst_buffer_map (section->buffer, &map, GST_MAP_READ); + data = map.data; + /* fixed header + CRC == 16 */ - if (GST_BUFFER_SIZE (section->buffer) < 18) { + if (map.size < 18) { GST_WARNING ("PID %d invalid EIT size %d", section->pid, section->section_length); goto error; } - data = GST_BUFFER_DATA (section->buffer); - end = data + GST_BUFFER_SIZE (section->buffer); + end = map.data + map.size; section->table_id = *data++; section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF; @@ -1661,7 +1694,7 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer, last_table_id = *data; data += 1; - eit = gst_structure_id_new (QUARK_EIT, + eit = gst_structure_new_id (QUARK_EIT, QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number, QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT, section->current_next_indicator, QUARK_SERVICE_ID, G_TYPE_UINT, @@ -2040,15 +2073,16 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer, } if (data != end - 4) { - GST_WARNING ("PID %d invalid EIT parsed %d length %d", - section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)), - GST_BUFFER_SIZE (section->buffer)); + GST_WARNING ("PID %d invalid EIT parsed %d length %" G_GSIZE_FORMAT, + section->pid, (gint) (data - map.data), map.size); goto error; } gst_structure_id_set_value (eit, QUARK_EVENTS, &events); g_value_unset (&events); + gst_buffer_unmap (section->buffer, &map); + GST_DEBUG ("EIT %" GST_PTR_FORMAT, eit); return eit; @@ -2057,6 +2091,8 @@ error: if (eit) gst_structure_free (eit); + gst_buffer_unmap (section->buffer, &map); + if (GST_VALUE_HOLDS_LIST (&events)) g_value_unset (&events); @@ -2070,18 +2106,22 @@ mpegts_packetizer_parse_tdt (MpegTSPacketizer2 * packetizer, GstStructure *tdt = NULL; guint16 mjd; guint year, month, day, hour, minute, second; + GstMapInfo map; guint8 *data, *end, *utc_ptr; GST_DEBUG ("TDT"); + + gst_buffer_map (section->buffer, &map, GST_MAP_READ); + data = map.data; + /* length always 8 */ - if (G_UNLIKELY (GST_BUFFER_SIZE (section->buffer) != 8)) { + if (G_UNLIKELY (map.size != 8)) { GST_WARNING ("PID %d invalid TDT size %d", section->pid, section->section_length); goto error; } - data = GST_BUFFER_DATA (section->buffer); - end = data + GST_BUFFER_SIZE (section->buffer); + end = map.data + map.size; section->table_id = *data++; section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF; @@ -2122,12 +2162,16 @@ mpegts_packetizer_parse_tdt (MpegTSPacketizer2 * packetizer, "hour", G_TYPE_UINT, hour, "minute", G_TYPE_UINT, minute, "second", G_TYPE_UINT, second, NULL); + gst_buffer_unmap (section->buffer, &map); + return tdt; error: if (tdt) gst_structure_free (tdt); + gst_buffer_unmap (section->buffer, &map); + return NULL; } @@ -2205,8 +2249,8 @@ mpegts_packetizer_push (MpegTSPacketizer2 * packetizer, GstBuffer * buffer) packetizer->offset = GST_BUFFER_OFFSET (buffer); } - GST_DEBUG ("Pushing %u byte from offset %" G_GUINT64_FORMAT, - GST_BUFFER_SIZE (buffer), GST_BUFFER_OFFSET (buffer)); + GST_DEBUG ("Pushing %" G_GSIZE_FORMAT " byte from offset %" G_GUINT64_FORMAT, + gst_buffer_get_size (buffer), GST_BUFFER_OFFSET (buffer)); gst_adapter_push (packetizer->adapter, buffer); } @@ -2307,15 +2351,21 @@ mpegts_packetizer_next_packet (MpegTSPacketizer2 * packetizer, } while ((avail = packetizer->adapter->size) >= packetizer->packet_size) { + guint i; + GstBuffer *tmpbuf; + guint8 *bufdata; + packet->buffer = gst_adapter_take_buffer (packetizer->adapter, packetizer->packet_size); + gst_buffer_map (packet->buffer, &packet->bufmap, GST_MAP_READ); + + bufdata = packet->data_start = packet->bufmap.data; + /* M2TS packets don't start with the sync byte, all other variants do */ - if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) { - packet->data_start = GST_BUFFER_DATA (packet->buffer) + 4; - } else { - packet->data_start = GST_BUFFER_DATA (packet->buffer); - } + if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) + packet->data_start += 4; + /* ALL mpeg-ts variants contain 188 bytes of data. Those with bigger packet * sizes contain either extra data (timesync, FEC, ..) either before or after * the data */ @@ -2323,52 +2373,51 @@ mpegts_packetizer_next_packet (MpegTSPacketizer2 * packetizer, GST_BUFFER_OFFSET (packet->buffer) = packet->offset = packetizer->offset; GST_DEBUG ("offset %" G_GUINT64_FORMAT, packet->offset); packetizer->offset += packetizer->packet_size; - GST_MEMDUMP ("buffer", GST_BUFFER_DATA (packet->buffer), 16); + GST_MEMDUMP ("buffer", bufdata, 16); GST_MEMDUMP ("data_start", packet->data_start, 16); GST_BUFFER_TIMESTAMP (packet->buffer) = gst_adapter_prev_timestamp (packetizer->adapter, NULL); /* Check sync byte */ - if (G_UNLIKELY (packet->data_start[0] != 0x47)) { - guint i; - GstBuffer *tmpbuf; - - GST_LOG ("Lost sync %d", packetizer->packet_size); - /* Find the 0x47 in the buffer */ - for (i = 0; i < packetizer->packet_size; i++) - if (GST_BUFFER_DATA (packet->buffer)[i] == 0x47) - break; - if (G_UNLIKELY (i == packetizer->packet_size)) { - GST_ERROR ("REALLY lost the sync"); - gst_buffer_unref (packet->buffer); - goto done; - } + if (G_LIKELY (packet->data_start[0] == 0x47)) + goto got_valid_packet; - if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) { - if (i >= 4) - i -= 4; - else - i += 188; - } + GST_LOG ("Lost sync %d", packetizer->packet_size); - /* Pop out the remaining data... */ - GST_BUFFER_DATA (packet->buffer) += i; - GST_BUFFER_SIZE (packet->buffer) -= i; - GST_BUFFER_OFFSET (packet->buffer) += i; - tmpbuf = - gst_adapter_take_buffer (packetizer->adapter, - packetizer->adapter->size); - /* ... and push everything back in */ - gst_adapter_push (packetizer->adapter, packet->buffer); - gst_adapter_push (packetizer->adapter, tmpbuf); - continue; + /* Find the 0x47 in the buffer */ + for (i = 0; i < packetizer->packet_size; i++) + if (bufdata[i] == 0x47) + break; + gst_buffer_unmap (packet->buffer, &packet->bufmap); + if (G_UNLIKELY (i == packetizer->packet_size)) { + GST_ERROR ("REALLY lost the sync"); + gst_buffer_unref (packet->buffer); + goto done; } - return mpegts_packetizer_parse_packet (packetizer, packet); + if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) { + if (i >= 4) + i -= 4; + else + i += 188; + } + + /* Pop out the remaining data... */ + gst_buffer_resize (packet->buffer, i, packet->bufmap.size - i); + GST_BUFFER_OFFSET (packet->buffer) += i; + tmpbuf = + gst_adapter_take_buffer (packetizer->adapter, + packetizer->adapter->size); + /* ... and push everything back in */ + gst_adapter_push (packetizer->adapter, packet->buffer); + gst_adapter_push (packetizer->adapter, tmpbuf); } done: return PACKET_NEED_MORE; + +got_valid_packet: + return mpegts_packetizer_parse_packet (packetizer, packet); } MpegTSPacketizerPacketReturn @@ -2422,14 +2471,15 @@ mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer, if (packet->pid == 0x14) { table_id = data[0]; section->section_length = GST_READ_UINT24_BE (data) & 0x000FFF; - if (data - GST_BUFFER_DATA (packet->buffer) + section->section_length + 3 > - GST_BUFFER_SIZE (packet->buffer)) { + if (data - packet->bufmap.data + section->section_length + 3 > + packet->bufmap.size) { GST_WARNING ("PID %dd PSI section length extends past the end " "of the buffer", packet->pid); goto out; } - section->buffer = gst_buffer_create_sub (packet->buffer, - data - GST_BUFFER_DATA (packet->buffer), section->section_length + 3); + section->buffer = + gst_buffer_copy_region (packet->buffer, GST_BUFFER_COPY_ALL, + data - packet->bufmap.data, section->section_length + 3); section->table_id = table_id; section->complete = TRUE; res = TRUE; @@ -2440,8 +2490,8 @@ mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer, /* create a sub buffer from the start of the section (table_id and * section_length included) to the end */ - sub_buf = gst_buffer_create_sub (packet->buffer, - data - GST_BUFFER_DATA (packet->buffer), packet->data_end - data); + sub_buf = gst_buffer_copy_region (packet->buffer, GST_BUFFER_COPY_ALL, + data - packet->bufmap.data, packet->data_end - data); stream = packetizer->streams[packet->pid]; if (stream == NULL) { @@ -2465,10 +2515,11 @@ mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer, if (stream->continuity_counter != CONTINUITY_UNSET) { GST_DEBUG ("PID %d table_id %d sub_table_extension %d payload_unit_start_indicator set but section " - "not complete (last_continuity: %d continuity: %d sec len %d buffer %d avail %d", - packet->pid, table_id, subtable_extension, stream->continuity_counter, - packet->continuity_counter, section_length, GST_BUFFER_SIZE (sub_buf), - stream->section_adapter->size); + "not complete (last_continuity: %d continuity: %d sec len %d buffer %" + G_GSIZE_FORMAT " avail %" G_GSIZE_FORMAT, packet->pid, table_id, + subtable_extension, stream->continuity_counter, + packet->continuity_counter, section_length, + gst_buffer_get_size (sub_buf), stream->section_adapter->size); mpegts_packetizer_clear_section (packetizer, stream); } else { GST_DEBUG |