lines = jpeg_read_raw_data (&dec->cinfo, scanarray, r_v * DCTSIZE);
if (G_LIKELY (lines > 0)) {
for (j = 0, k = 0; j < (r_v * DCTSIZE); j += r_v, k++) {
- memcpy (base[0], y_rows[j], I420_Y_ROWSTRIDE (width));
- if (G_LIKELY (base[0] < last[0]))
+ if (G_LIKELY (base[0] <= last[0])) {
+ memcpy (base[0], y_rows[j], I420_Y_ROWSTRIDE (width));
base[0] += I420_Y_ROWSTRIDE (width);
+ }
if (r_v == 2) {
- memcpy (base[0], y_rows[j + 1], I420_Y_ROWSTRIDE (width));
- if (G_LIKELY (base[0] < last[0]))
+ if (G_LIKELY (base[0] <= last[0])) {
+ memcpy (base[0], y_rows[j + 1], I420_Y_ROWSTRIDE (width));
base[0] += I420_Y_ROWSTRIDE (width);
+ }
}
- if (r_h == 2) {
- memcpy (base[1], u_rows[k], I420_U_ROWSTRIDE (width));
- memcpy (base[2], v_rows[k], I420_V_ROWSTRIDE (width));
- } else if (r_h == 1) {
- hresamplecpy1 (base[1], u_rows[k], I420_U_ROWSTRIDE (width));
- hresamplecpy1 (base[2], v_rows[k], I420_V_ROWSTRIDE (width));
- } else {
- /* FIXME: implement (at least we avoid crashing by doing nothing) */
+ if (G_LIKELY (base[1] <= last[1] && base[2] <= last[2])) {
+ if (r_h == 2) {
+ memcpy (base[1], u_rows[k], I420_U_ROWSTRIDE (width));
+ memcpy (base[2], v_rows[k], I420_V_ROWSTRIDE (width));
+ } else if (r_h == 1) {
+ hresamplecpy1 (base[1], u_rows[k], I420_U_ROWSTRIDE (width));
+ hresamplecpy1 (base[2], v_rows[k], I420_V_ROWSTRIDE (width));
+ } else {
+ /* FIXME: implement (at least we avoid crashing by doing nothing) */
+ }
}
if (r_v == 2 || (k & 1) != 0) {
- if (G_LIKELY (base[1] < last[1] && base[2] < last[2])) {
- base[1] += I420_U_ROWSTRIDE (width);
- base[2] += I420_V_ROWSTRIDE (width);
- }
+ base[1] += I420_U_ROWSTRIDE (width);
+ base[2] += I420_V_ROWSTRIDE (width);
}
}
} else {