diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-01-26 18:24:20 +0100 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-01-27 19:01:55 +0100 |
commit | ab359d36d5e0e980ce51863b3d592d975200998f (patch) | |
tree | 8d3a5bae25da51750054801f8458e7a3a905ac57 | |
parent | 30af2fe7d6af31472b3408a81bdb9e4bb2263ac7 (diff) |
rtcpbuffer: Don't try to modify read-only buffers
-rw-r--r-- | gst-libs/gst/rtp/gstrtcpbuffer.c | 13 |
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; |