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)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 22 Oct 2019 06:50:27 +0000 (09:50 +0300)
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 b0026ff..1c6ebe6 100644 (file)
@@ -1491,6 +1491,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) {