344344y_end = MIN (y_end ,d_height );
345345 }
346346
347- uint16_t src_bytes_per_line = (x_end - x_start )* (uint16_t )bytes_per_pixel ;
347+ uint16_t src_bytes_per_line = (x_end - x_start + 1 )* (uint16_t )bytes_per_pixel ;
348348uint32_t dst_bytes_per_line = bytes_per_pixel * d_width ;
349349size_t offset = y_start * src_bytes_per_line + x_start * bytes_per_pixel ;
350350
351- uint32_t copy_bytes_per_line = (x_end - x_start )* bytes_per_pixel ;
352- size_t offset = y_start * copy_bytes_per_line + x_start * bytes_per_pixel ;
353-
354351// mp_printf(&mp_plat_print, "x_start=%lu, y_start=%lu, x_end=%lu, y_end=%lu, copy_bytes_per_line=%u, bytes_per_line=%lu, %lu\n",
355352// x_start, y_start, x_end, y_end, copy_bytes_per_line, bytes_per_line, (uint32_t)((y_start * h_res + x_start) * bytes_per_pixel));
356353
361358if (x_start == 0 && x_end == (d_width - 1 )) {
362359memcpy (fb ,src ,d_width * (y_end - y_start + 1 )* bytes_per_pixel );
363360 }else {
364- src_bytes_per_line = (x_end - x_start + 1 )* (uint16_t )bytes_per_pixel ;
365-
366361for (int y = y_start ;y < y_end ;y ++ ) {
367362memcpy (fb ,src ,src_bytes_per_line );
368363fb += dst_bytes_per_line ;
369- from += src_bytes_per_line ;
364+ src += src_bytes_per_line ;
370365 }
371366 }
372367
394389for (size_t x = x_start ;x < x_end ;x ++ ) {
395390func (dst + index ,src );
396391index -= bytes_per_pixel ;
397- from += bytes_per_pixel ;
392+ src += bytes_per_pixel ;
398393 }
399394 }
400395break ;
418413 }
419414 }
420415
421- #endif
416+ #endif