- uint8_t *dst = out->data[0];
- const uint8_t *src = in->data[0];
- const int dlinesize = out->linesize[0];
- const int slinesize = in->linesize[0];
- const int xlinesize = xin->linesize[0] / 2;
- const int ylinesize = yin->linesize[0] / 2;
- const uint16_t *xmap = (const uint16_t *)xin->data[0];
- const uint16_t *ymap = (const uint16_t *)yin->data[0];
- const int step = s->step;
+ const ThreadData *td = (ThreadData*)arg;
+ const AVFrame *in = td->in;
+ const AVFrame *xin = td->xin;
+ const AVFrame *yin = td->yin;
+ const AVFrame *out = td->out;
+
+ const int slice_start = (out->height * jobnr ) / nb_jobs;
+ const int slice_end = (out->height * (jobnr+1)) / nb_jobs;
+
+ const int dlinesize = out->linesize[0];
+ const int slinesize = in->linesize[0];
+ const int xlinesize = xin->linesize[0] / 2;
+ const int ylinesize = yin->linesize[0] / 2;
+ const uint8_t *src = in->data[0];
+ uint8_t *dst = out->data[0] + slice_start * dlinesize;
+ const uint16_t *xmap = (const uint16_t *)xin->data[0] + slice_start * xlinesize;
+ const uint16_t *ymap = (const uint16_t *)yin->data[0] + slice_start * ylinesize;
+ const int step = td->step;