videofilter: don't map writable in passthrough
authorWim Taymans <wim.taymans@collabora.co.uk>
Sun, 1 Apr 2012 15:57:59 +0000 (17:57 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Sun, 1 Apr 2012 16:01:15 +0000 (18:01 +0200)
In passthrough mode we shouldn't map the buffer in write mode because the buffer
might not be writable.

gst-libs/gst/video/gstvideofilter.c

index 782fbb0..e36e45d 100644 (file)
@@ -277,8 +277,14 @@ gst_video_filter_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
   fclass = GST_VIDEO_FILTER_GET_CLASS (filter);
   if (fclass->transform_frame_ip) {
     GstVideoFrame frame;
+    GstMapFlags flags;
 
-    if (!gst_video_frame_map (&frame, &filter->in_info, buf, GST_MAP_READWRITE))
+    flags = GST_MAP_READ;
+
+    if (!gst_base_transform_is_passthrough (trans))
+      flags |= GST_MAP_WRITE;
+
+    if (!gst_video_frame_map (&frame, &filter->in_info, buf, flags))
       goto invalid_buffer;
 
     res = fclass->transform_frame_ip (filter, &frame);