videocrop: Also update the coordinate when in-place
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 12 Nov 2019 22:28:22 +0000 (17:28 -0500)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 14 Nov 2019 14:05:31 +0000 (14:05 +0000)
This update is needed when the output caps is not changed (e.g. we are
moving a viewport around).

Fixes #669

gst/videocrop/gstvideocrop.c

index 31e7d67..8a89007 100644 (file)
@@ -508,11 +508,19 @@ static GstFlowReturn
 gst_video_crop_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
 {
   GstVideoCrop *vcrop = GST_VIDEO_CROP (trans);
+  GstVideoFilter *vfilter = GST_VIDEO_FILTER (trans);
   GstVideoMeta *video_meta;
   GstVideoCropMeta *crop_meta;
 
   GST_LOG_OBJECT (trans, "Transforming in-place");
 
+  if (G_UNLIKELY (vcrop->need_update)) {
+    if (!gst_video_crop_set_info (vfilter, NULL, &vcrop->in_info, NULL,
+            &vcrop->out_info)) {
+      return GST_FLOW_ERROR;
+    }
+  }
+
   /* The video meta is required since we are going to make the caps
    * width/height smaller, which would not result in a usable GstVideoInfo for
    * mapping the buffer. */