videoconvert: Filter-out crop meta
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Sun, 10 Dec 2017 19:59:54 +0000 (14:59 -0500)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Sun, 17 Dec 2017 20:50:00 +0000 (15:50 -0500)
To passthrough crop-meta, the converter would need to allocate and
convert buffers of the size of the originating buffer. This is currently
made difficult by GstBaseTransform since we cannot alter the caps passed
though the allocation query. We would also need to wait for the first
input buffer to be received in order to make the decision around that
size.

So the short and safe solution is just to stop pretending we can
passthrought that meta.

https://bugzilla.gnome.org/show_bug.cgi?id=791412

gst/videoconvert/gstvideoconvert.c

index 5f66c6f..afd1eba 100644 (file)
@@ -371,7 +371,13 @@ static gboolean
 gst_video_convert_filter_meta (GstBaseTransform * trans, GstQuery * query,
     GType api, const GstStructure * params)
 {
-  /* propose all metadata upstream */
+  /* This element cannot passthrough the crop meta, because it would convert the
+   * wrong sub-region of the image, and worst, our output image may not be large
+   * enough for the crop to be applied later */
+  if (api == GST_VIDEO_CROP_META_API_TYPE)
+    return FALSE;
+
+  /* propose all other metadata upstream */
   return TRUE;
 }