summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2012-01-26 18:24:20 +0100
committerOlivier CrĂȘte <olivier.crete@collabora.com>2012-01-27 19:01:55 +0100
commitab359d36d5e0e980ce51863b3d592d975200998f (patch)
tree8d3a5bae25da51750054801f8458e7a3a905ac57
parent30af2fe7d6af31472b3408a81bdb9e4bb2263ac7 (diff)
rtcpbuffer: Don't try to modify read-only buffers
-rw-r--r--gst-libs/gst/rtp/gstrtcpbuffer.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gst-libs/gst/rtp/gstrtcpbuffer.c b/gst-libs/gst/rtp/gstrtcpbuffer.c
index 317c35d35..a37d65f6d 100644
--- a/gst-libs/gst/rtp/gstrtcpbuffer.c
+++ b/gst-libs/gst/rtp/gstrtcpbuffer.c
@@ -285,12 +285,15 @@ gst_rtcp_buffer_unmap (GstRTCPBuffer * rtcp)
g_return_val_if_fail (rtcp != NULL, FALSE);
g_return_val_if_fail (GST_IS_BUFFER (rtcp->buffer), FALSE);
- /* move to the first free space */
- if (gst_rtcp_buffer_get_first_packet (rtcp, &packet))
- while (gst_rtcp_packet_move_to_next (&packet));
+ if (rtcp->map.flags & GST_MAP_WRITE) {
+ /* move to the first free space */
+ if (gst_rtcp_buffer_get_first_packet (rtcp, &packet))
+ while (gst_rtcp_packet_move_to_next (&packet));
+
+ /* shrink size */
+ gst_buffer_resize (rtcp->buffer, 0, packet.offset);
+ }
- /* shrink size */
- gst_buffer_resize (rtcp->buffer, 0, packet.offset);
gst_buffer_unmap (rtcp->buffer, &rtcp->map);
rtcp->buffer = NULL;