From 5affe09c4802142ed945fcbe39bca5e2f6622d94 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Sun, 10 Dec 2017 14:59:54 -0500 Subject: [PATCH] videoconvert: Filter-out crop meta 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 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gst/videoconvert/gstvideoconvert.c b/gst/videoconvert/gstvideoconvert.c index 5f66c6fb4c..afd1ebac1b 100644 --- a/gst/videoconvert/gstvideoconvert.c +++ b/gst/videoconvert/gstvideoconvert.c @@ -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; }