summaryrefslogtreecommitdiff
path: root/gst/mpegtsdemux/mpegtsbase.c
diff options
context:
space:
mode:
authorEdward Hervey <edward.hervey@collabora.co.uk>2012-05-21 17:52:46 +0200
committerEdward Hervey <edward.hervey@collabora.co.uk>2012-05-22 17:43:38 +0200
commit3c73d291622b8e575fe2d34d208c1404e4068b31 (patch)
tree169bfc25aee0b14786bf5e43129d083be095bce8 /gst/mpegtsdemux/mpegtsbase.c
parentc6035d403cd9511ca1208ae13a664f37e5dd6ef4 (diff)
downloadgstreamer-plugins-bad-3c73d291622b8e575fe2d34d208c1404e4068b31.tar.gz
mpegtsbase: Adapt to new packetizer behaviour
Diffstat (limited to 'gst/mpegtsdemux/mpegtsbase.c')
-rw-r--r--gst/mpegtsdemux/mpegtsbase.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 38beef2e1..1997c7ab4 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -1060,15 +1060,11 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
/* table ids 0x70 - 0x73 do not have a crc */
if (G_LIKELY (section->table_id < 0x70 || section->table_id > 0x73)) {
- GstMapInfo map;
-
- gst_buffer_map (section->buffer, &map, GST_MAP_READ);
- if (G_UNLIKELY (mpegts_base_calc_crc32 (map.data, map.size) != 0)) {
- gst_buffer_unmap (section->buffer, &map);
+ if (G_UNLIKELY (mpegts_base_calc_crc32 (section->data,
+ section->section_length) != 0)) {
GST_WARNING_OBJECT (base, "bad crc in psi pid 0x%x", section->pid);
return FALSE;
}
- gst_buffer_unmap (section->buffer, &map);
}
switch (section->table_id) {
@@ -1079,10 +1075,9 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
mpegts_base_apply_pat (base, structure);
if (base->seen_pat == FALSE) {
base->seen_pat = TRUE;
- GST_DEBUG ("First PAT offset: %" G_GUINT64_FORMAT,
- GST_BUFFER_OFFSET (section->buffer));
+ GST_DEBUG ("First PAT offset: %" G_GUINT64_FORMAT, section->offset);
mpegts_packetizer_set_reference_offset (base->packetizer,
- GST_BUFFER_OFFSET (section->buffer));
+ section->offset);
}
} else
@@ -1388,7 +1383,6 @@ mpegts_base_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
if (G_UNLIKELY (pret == PACKET_BAD)) {
/* bad header, skip the packet */
GST_DEBUG_OBJECT (base, "bad packet, skipping");
- gst_buffer_unref (packet.buffer);
goto next;
}
@@ -1403,10 +1397,9 @@ mpegts_base_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
if (G_LIKELY (section.complete)) {
/* section complete */
based = mpegts_base_handle_psi (base, &section);
- gst_buffer_unref (section.buffer);
+ g_free (section.data);
if (G_UNLIKELY (!based)) {
- gst_buffer_unref (packet.buffer);
/* bad PSI table */
goto next;
}
@@ -1417,8 +1410,7 @@ mpegts_base_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
} else if (MPEGTS_BIT_IS_SET (base->is_pes, packet.pid)) {
/* push the packet downstream */
res = mpegts_base_push (base, &packet, NULL);
- } else
- gst_buffer_unref (packet.buffer);
+ }
next:
mpegts_packetizer_clear_packet (base->packetizer, &packet);