summaryrefslogtreecommitdiff
path: root/gst/asfdemux/asfpacket.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2012-06-27 10:24:45 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2012-06-27 10:24:45 +0200
commit234d15c9d036eebbf56d71be705a29fbe7c16141 (patch)
tree983b81f8f58957f4dfd86002f8999b1b4100ce19 /gst/asfdemux/asfpacket.c
parent53cfef3e0f143d8687fd39d9d3bfba936b3680a1 (diff)
asf: unmap packets
Diffstat (limited to 'gst/asfdemux/asfpacket.c')
-rw-r--r--gst/asfdemux/asfpacket.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gst/asfdemux/asfpacket.c b/gst/asfdemux/asfpacket.c
index 1e64efc0..e3afd677 100644
--- a/gst/asfdemux/asfpacket.c
+++ b/gst/asfdemux/asfpacket.c
@@ -512,7 +512,8 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
/* need at least two payload flag bytes, send time, and duration */
if (G_UNLIKELY (size < 2 + 4 + 2)) {
GST_WARNING_OBJECT (demux, "Packet size is < 8");
- return GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ goto done;
}
packet.buf = buf;
@@ -538,7 +539,8 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
/* still need at least two payload flag bytes, send time, and duration */
if (size <= (1 + ec_len) + 2 + 4 + 2) {
GST_WARNING_OBJECT (demux, "Packet size is < 8 with Error Correction");
- return GST_ASF_DEMUX_PARSE_PACKET_ERROR_FATAL;
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_FATAL;
+ goto done;
}
data += 1 + ec_len;
@@ -562,7 +564,8 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
if (G_UNLIKELY (size < 6)) {
GST_WARNING_OBJECT (demux, "Packet size is < 6");
- return GST_ASF_DEMUX_PARSE_PACKET_ERROR_FATAL;
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_FATAL;
+ goto done;
}
packet.send_time = GST_READ_UINT32_LE (data) * GST_MSECOND;
@@ -583,7 +586,8 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
if (G_UNLIKELY (packet.padding == (guint) - 1 || size < packet.padding)) {
GST_WARNING_OBJECT (demux, "No padding, or padding bigger than buffer");
- return GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ goto done;
}
size -= packet.padding;
@@ -597,7 +601,8 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
if (size < demux->packet_size - packet.length) {
/* the buffer is smaller than the implicit padding */
GST_WARNING_OBJECT (demux, "Buffer is smaller than the implicit padding");
- return GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ goto done;
} else {
/* subtract the implicit padding */
size -= (demux->packet_size - packet.length);
@@ -609,7 +614,8 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
if (G_UNLIKELY (size < 1)) {
GST_WARNING_OBJECT (demux, "No room more in buffer");
- return GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ goto done;
}
num = (GST_READ_UINT8 (data) & 0x3F) >> 0;
@@ -640,6 +646,7 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
}
}
+done:
gst_buffer_unmap (buf, &map);
return ret;
}