videoscale: Don't read after the end of a line when lineary scaling YUYV/UYVY

Partially fixes bug #577054.
This commit is contained in:
Sebastian Dröge 2009-03-28 11:27:56 +01:00
parent 1c36c03001
commit b69231ad21

View file

@ -280,10 +280,16 @@ vs_scanline_resample_linear_YUYV (uint8_t * dest, uint8_t * src, int n,
j = acc >> 17;
x = acc & 0x1ffff;
dest[i * 4 + 1] =
(src[j * 4 + 1] * (131072 - x) + src[j * 4 + 5] * x) >> 17;
dest[i * 4 + 3] =
(src[j * 4 + 3] * (131072 - x) + src[j * 4 + 7] * x) >> 17;
if (i < n - 1) {
dest[i * 4 + 1] =
(src[j * 4 + 1] * (131072 - x) + src[j * 4 + 5] * x) >> 17;
dest[i * 4 + 3] =
(src[j * 4 + 3] * (131072 - x) + src[j * 4 + 7] * x) >> 17;
} else {
dest[i * 4 + 1] = src[j * 4 + 1];
dest[i * 4 + 3] = src[j * 4 + 3];
}
acc += increment;
@ -379,10 +385,16 @@ vs_scanline_resample_linear_UYVY (uint8_t * dest, uint8_t * src, int n,
j = acc >> 17;
x = acc & 0x1ffff;
dest[i * 4 + 0] =
(src[j * 4 + 0] * (131072 - x) + src[j * 4 + 4] * x) >> 17;
dest[i * 4 + 2] =
(src[j * 4 + 2] * (131072 - x) + src[j * 4 + 6] * x) >> 17;
if (i < n - 1) {
dest[i * 4 + 0] =
(src[j * 4 + 0] * (131072 - x) + src[j * 4 + 4] * x) >> 17;
dest[i * 4 + 2] =
(src[j * 4 + 2] * (131072 - x) + src[j * 4 + 6] * x) >> 17;
} else {
dest[i * 4 + 0] = src[j * 4 + 0];
dest[i * 4 + 2] = src[j * 4 + 2];
}
acc += increment;