mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-11 01:45:33 +00:00
video-converter: Use interlaced scalers for vertical scaling if needed
Without this, scaling e.g. interlaced UYVY causes corrupted output with lines as follows: f1 f1 f2 f2, i.e. two lines of each field and only then the other field.
This commit is contained in:
parent
f2b3e9b4a1
commit
565b797f57
1 changed files with 9 additions and 2 deletions
|
@ -5935,6 +5935,7 @@ setup_scale (GstVideoConverter * convert)
|
|||
GstVideoInfo *in_info, *out_info;
|
||||
const GstVideoFormatInfo *in_finfo, *out_finfo;
|
||||
GstVideoFormat in_format, out_format;
|
||||
gboolean interlaced;
|
||||
guint n_threads = convert->conversion_runner->n_threads;
|
||||
|
||||
in_info = &convert->in_info;
|
||||
|
@ -5945,6 +5946,8 @@ setup_scale (GstVideoConverter * convert)
|
|||
|
||||
n_planes = GST_VIDEO_INFO_N_PLANES (out_info);
|
||||
|
||||
interlaced = GST_VIDEO_INFO_IS_INTERLACED (&convert->in_info);
|
||||
|
||||
method = GET_OPT_RESAMPLER_METHOD (convert);
|
||||
if (method == GST_VIDEO_RESAMPLER_METHOD_NEAREST)
|
||||
cr_method = method;
|
||||
|
@ -6039,7 +6042,9 @@ setup_scale (GstVideoConverter * convert)
|
|||
|
||||
for (j = 0; j < n_threads; j++) {
|
||||
convert->fv_scaler[0].scaler[j] =
|
||||
gst_video_scaler_new (method, GST_VIDEO_SCALER_FLAG_NONE, taps,
|
||||
gst_video_scaler_new (method,
|
||||
interlaced ?
|
||||
GST_VIDEO_SCALER_FLAG_INTERLACED : GST_VIDEO_SCALER_FLAG_NONE, taps,
|
||||
in_height, out_height, convert->config);
|
||||
}
|
||||
} else {
|
||||
|
@ -6193,7 +6198,9 @@ setup_scale (GstVideoConverter * convert)
|
|||
|
||||
for (j = 0; j < n_threads; j++) {
|
||||
convert->fv_scaler[i].scaler[j] =
|
||||
gst_video_scaler_new (resample_method, GST_VIDEO_SCALER_FLAG_NONE,
|
||||
gst_video_scaler_new (resample_method,
|
||||
interlaced ?
|
||||
GST_VIDEO_SCALER_FLAG_INTERLACED : GST_VIDEO_SCALER_FLAG_NONE,
|
||||
taps, ih, oh, config);
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue