- for (plane = 0; plane < 4 && td->copy_src1->data[plane] && td->copy_src2->data[plane]; plane++) {
- int cpy_line_width = s->line_size[plane];
- uint8_t *cpy_src1_data = td->copy_src1->data[plane];
- int cpy_src1_line_size = td->copy_src1->linesize[plane];
- uint8_t *cpy_src2_data = td->copy_src2->data[plane];
- int cpy_src2_line_size = td->copy_src2->linesize[plane];
- int cpy_src_h = (plane > 0 && plane < 3) ? (td->copy_src1->height >> s->vsub) : (td->copy_src1->height);
- uint8_t *cpy_dst_data = s->work->data[plane];
- int cpy_dst_line_size = s->work->linesize[plane];
- const int start = (cpy_src_h * job ) / nb_jobs;
- const int end = (cpy_src_h * (job+1)) / nb_jobs;
- cpy_src1_data += start * cpy_src1_line_size;
- cpy_src2_data += start * cpy_src2_line_size;
- cpy_dst_data += start * cpy_dst_line_size;
-
- s->blend(cpy_src1_data, cpy_src1_line_size,
- cpy_src2_data, cpy_src2_line_size,
- cpy_dst_data, cpy_dst_line_size,
- cpy_line_width, end - start,
+ for (plane = 0; plane < 4 && src1->data[plane] && src2->data[plane]; plane++) {
+ const int start = (s->height[plane] * job ) / nb_jobs;
+ const int end = (s->height[plane] * (job+1)) / nb_jobs;
+ uint8_t *src1_data = src1->data[plane] + start * src1->linesize[plane];
+ uint8_t *src2_data = src2->data[plane] + start * src2->linesize[plane];
+ uint8_t *dst_data = work->data[plane] + start * work->linesize[plane];
+
+ s->blend(src1_data, src1->linesize[plane], src2_data, src2->linesize[plane],
+ dst_data, work->linesize[plane], s->line_size[plane], end - start,