diff --git a/libswscale/ops_dispatch.c b/libswscale/ops_dispatch.c index 60ef405286..9abb3df8ec 100644 --- a/libswscale/ops_dispatch.c +++ b/libswscale/ops_dispatch.c @@ -408,9 +408,10 @@ static int compile(SwsGraph *graph, const SwsOpList *ops, SwsPass *input, if (ret < 0) goto fail; + const SwsCompiledOp *comp = &p->comp; const SwsFormat *dst = &ops->dst; if (p->comp.opaque) { - SwsCompiledOp c = p->comp; + SwsCompiledOp c = *comp; av_free(p); return ff_sws_graph_add_pass(graph, dst->format, dst->width, dst->height, input, c.slice_align, c.func_opaque, @@ -426,8 +427,8 @@ static int compile(SwsGraph *graph, const SwsOpList *ops, SwsPass *input, p->exec_base = (SwsOpExec) { .width = dst->width, .height = dst->height, - .block_size_in = p->comp.block_size * p->pixel_bits_in >> 3, - .block_size_out = p->comp.block_size * p->pixel_bits_out >> 3, + .block_size_in = comp->block_size * p->pixel_bits_in >> 3, + .block_size_out = comp->block_size * p->pixel_bits_out >> 3, }; for (int i = 0; i < 4; i++) { @@ -473,13 +474,13 @@ static int compile(SwsGraph *graph, const SwsOpList *ops, SwsPass *input, } ret = ff_sws_graph_add_pass(graph, dst->format, dst->width, dst->height, - input, p->comp.slice_align, op_pass_run, + input, comp->slice_align, op_pass_run, op_pass_setup, p, op_pass_free, output); if (ret < 0) return ret; - align_pass(input, p->comp.block_size, p->comp.over_read, p->pixel_bits_in); - align_pass(*output, p->comp.block_size, p->comp.over_write, p->pixel_bits_out); + align_pass(input, comp->block_size, comp->over_read, p->pixel_bits_in); + align_pass(*output, comp->block_size, comp->over_write, p->pixel_bits_out); return 0; fail: