rtcpbuffer: provide a WRITE map with maximum available size
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Wed, 6 Jul 2011 15:03:08 +0000 (17:03 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Sat, 9 Jul 2011 16:23:18 +0000 (18:23 +0200)
... which allows adding additional packets and may be needed to counteract
the shrink that implicitly occurred during a map/unmap cycle when adding
a previous packet.

gst-libs/gst/rtp/gstrtcpbuffer.c

index c1c9df6..323c5cf 100644 (file)
@@ -260,6 +260,13 @@ gst_rtcp_buffer_map (GstBuffer * buffer, GstMapFlags flags,
   rtcp->flags = flags;
   rtcp->data = gst_buffer_map (buffer, &rtcp->size, &rtcp->maxsize, flags);
 
+  /* allow for expansion, e.g. adding packets, if needed */
+  if ((flags & GST_MAP_WRITE) != 0) {
+    /* unmap and adjust to max available, and remap */
+    gst_buffer_unmap (buffer, rtcp->data, rtcp->maxsize);
+    rtcp->data = gst_buffer_map (buffer, &rtcp->size, &rtcp->maxsize, flags);
+  }
+
   return TRUE;
 }