- const uint16_t *srcg = (const uint16_t *)in->data[0];
- const uint16_t *srcb = (const uint16_t *)in->data[1];
- const uint16_t *srcr = (const uint16_t *)in->data[2];
- const uint16_t *srca = (const uint16_t *)in->data[3];
- uint16_t *dstg = (uint16_t *)out->data[0];
- uint16_t *dstb = (uint16_t *)out->data[1];
- uint16_t *dstr = (uint16_t *)out->data[2];
- uint16_t *dsta = (uint16_t *)out->data[3];
+ ThreadData *td = arg;
+ AVFrame *in = td->in;
+ AVFrame *out = td->out;
+ const int slice_start = (out->height * jobnr) / nb_jobs;
+ const int slice_end = (out->height * (jobnr+1)) / nb_jobs;
+ const uint16_t *srcg = (const uint16_t *)in->data[0] + slice_start * in->linesize[0] / 2;
+ const uint16_t *srcb = (const uint16_t *)in->data[1] + slice_start * in->linesize[1] / 2;
+ const uint16_t *srcr = (const uint16_t *)in->data[2] + slice_start * in->linesize[2] / 2;
+ const uint16_t *srca = (const uint16_t *)in->data[3] + slice_start * in->linesize[3] / 2;
+ uint16_t *dstg = (uint16_t *)out->data[0] + slice_start * out->linesize[0] / 2;
+ uint16_t *dstb = (uint16_t *)out->data[1] + slice_start * out->linesize[1] / 2;
+ uint16_t *dstr = (uint16_t *)out->data[2] + slice_start * out->linesize[2] / 2;
+ uint16_t *dsta = (uint16_t *)out->data[3] + slice_start * out->linesize[3] / 2;