-typedef struct ThreadData{
- uint8_t *data;
- int data_linesize, height, width;
-} ThreadData;
-
-static int uint8_to_float(AVFilterContext *context, void *arg, int jobnr, int nb_jobs)
-{
- SRContext *sr_context = context->priv;
- const ThreadData *td = arg;
- const int slice_start = (td->height * jobnr ) / nb_jobs;
- const int slice_end = (td->height * (jobnr + 1)) / nb_jobs;
- const uint8_t *src = td->data + slice_start * td->data_linesize;
- float *dst = sr_context->input.data + slice_start * td->width;
- int y, x;
-
- for (y = slice_start; y < slice_end; ++y){
- for (x = 0; x < td->width; ++x){
- dst[x] = (float)src[x] / 255.0f;
- }
- src += td->data_linesize;
- dst += td->width;
- }
-
- return 0;
-}
-
-static int float_to_uint8(AVFilterContext *context, void *arg, int jobnr, int nb_jobs)
-{
- SRContext *sr_context = context->priv;
- const ThreadData *td = arg;
- const int slice_start = (td->height * jobnr ) / nb_jobs;
- const int slice_end = (td->height * (jobnr + 1)) / nb_jobs;
- const float *src = sr_context->output.data + slice_start * td->width;
- uint8_t *dst = td->data + slice_start * td->data_linesize;
- int y, x;
-
- for (y = slice_start; y < slice_end; ++y){
- for (x = 0; x < td->width; ++x){
- dst[x] = (uint8_t)(255.0f * FFMIN(src[x], 1.0f));
- }
- src += td->width;
- dst += td->data_linesize;
- }
-
- return 0;
-}
-