video-scaler: Correctly handle interlaced vertical scalers in gst_video_scaler_2d()
authorSebastian Dröge <sebastian@centricular.com>
Mon, 21 Oct 2019 14:28:46 +0000 (17:28 +0300)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 24 Oct 2019 17:07:55 +0000 (18:07 +0100)
We need to provide twice as many lines as usual to the scaling function
as every second lines would be skipped.

Without this we read from random memory and produce colorful output and
crashes.

gst-libs/gst/video/video-scaler.c

index 49f697b..ce30a0e 100644 (file)
@@ -1492,6 +1492,9 @@ gst_video_scaler_2d (GstVideoScaler * hscale, GstVideoScaler * vscale,
       realloc_tmplines (vscale, n_elems, width);
 
     v_taps = vscale->resampler.max_taps;
+    if (vscale->flags & GST_VIDEO_SCALER_FLAG_INTERLACED)
+      v_taps *= 2;
+
     lines = g_alloca (v_taps * sizeof (gpointer));
 
     if (hscale == NULL) {