video-converter: v-resample enough pixels

When we are using the fast linear resampler, use the ->inc to calculate
the first and last pixel we need so that we can do vertical resampling
on the right amount of pixels.
This commit is contained in:
Wim Taymans 2015-03-02 16:33:09 +01:00
parent 0062dadc35
commit b2a7ac2766
2 changed files with 9 additions and 4 deletions

View file

@ -1849,7 +1849,7 @@ setup_borderline (GstVideoConverter * convert)
}
w_sub = 0;
if (out_finfo->n_planes == 1) {
/* for packet formats, convert based on subsampling so that we
/* for packed formats, convert based on subsampling so that we
* get a complete group of pixels */
for (i = 0; i < out_finfo->n_components; i++) {
w_sub = MAX (w_sub, out_finfo->w_sub[i]);

View file

@ -1467,10 +1467,15 @@ gst_video_scaler_2d (GstVideoScaler * hscale, GstVideoScaler * vscale,
}
} else {
guint vx, vw;
guint h_taps;
vx = hscale->resampler.offset[x];
vw = hscale->resampler.offset[x + width - 1] +
hscale->resampler.max_taps;
h_taps = hscale->resampler.max_taps;
vx = (hscale->inc * x) >> 16;
vx = MIN (vx, hscale->resampler.offset[x]);
vw = (hscale->inc * (x + width)) >> 16;
vw = MAX (vw, hscale->resampler.offset[x + width - 1] + h_taps);
vw += 1;
if (vscale->tmpwidth < vw)
realloc_tmplines (vscale, n_elems, vw);