- /* Start of the first line in the target frame */
- uint8_t* frame_y_p = _frame->data[0] + rect->y * _frame->linesize[0];
- uint8_t* frame_u_p = _frame->data[1] + (rect->y / 2) * _frame->linesize[1];
- uint8_t* frame_v_p = _frame->data[2] + (rect->y / 2) * _frame->linesize[2];
+ /* Start of the first line in the target image */
+ uint8_t* frame_y_p = image->data()[0] + rect->y * image->line_size()[0];
+ uint8_t* frame_u_p = image->data()[1] + (rect->y / 2) * image->line_size()[1];
+ uint8_t* frame_v_p = image->data()[2] + (rect->y / 2) * image->line_size()[2];
+
+ int const hlim = min (rect->y + rect->h, image->size().height) - rect->y;