@@ -870,6 +870,8 @@ scale:
out->height = outlink->h;
out->color_range = outlink->color_range;
out->colorspace = outlink->colorspace;
+ if (out->width != in->width || out->height != in->height)
+ av_frame_remove_side_data_changed(out, AV_FRAME_CHANGED_SIZE);
if (scale->output_is_pal)
avpriv_set_systematic_pal2((uint32_t*)out->data[1], outlink->format == AV_PIX_FMT_PAL8 ? AV_PIX_FMT_BGR8 : outlink->format);
@@ -525,6 +525,9 @@ static int cudascale_scale(AVFilterContext *ctx, AVFrame *out, AVFrame *in)
if (ret < 0)
return ret;
+ if (out->width != in->width || out->height != in->height)
+ av_frame_remove_side_data_changed(out, AV_FRAME_CHANGED_SIZE);
+
return 0;
}
@@ -892,6 +892,9 @@ scale:
if (ret < 0)
return ret;
+ if (out->width != in->width || out->height != in->height)
+ av_frame_remove_side_data_changed(out, AV_FRAME_CHANGED_SIZE);
+
return 0;
}
@@ -137,6 +137,9 @@ static int scale_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame)
if (err < 0)
goto fail;
+ if (output_frame->width != input_frame->width || output_frame->height != input_frame->height)
+ av_frame_remove_side_data_changed(output_frame, AV_FRAME_CHANGED_SIZE);
+
if (ctx->colour_primaries != AVCOL_PRI_UNSPECIFIED)
output_frame->color_primaries = ctx->colour_primaries;
if (ctx->colour_transfer != AVCOL_TRC_UNSPECIFIED)
@@ -141,6 +141,9 @@ static int scale_vt_filter_frame(AVFilterLink *link, AVFrame *in)
if (ret < 0)
goto fail;
+ if (out->width != in->width || out->height != in->height)
+ av_frame_remove_side_data_changed(out, AV_FRAME_CHANGED_SIZE);
+
av_reduce(&out->sample_aspect_ratio.num, &out->sample_aspect_ratio.den,
(int64_t)in->sample_aspect_ratio.num * outlink->h * link->w,
(int64_t)in->sample_aspect_ratio.den * outlink->w * link->h,
@@ -288,6 +288,9 @@ static int scale_vulkan_filter_frame(AVFilterLink *link, AVFrame *in)
if (err < 0)
goto fail;
+ if (out->width != in->width || out->height != in->height)
+ av_frame_remove_side_data_changed(out, AV_FRAME_CHANGED_SIZE);
+
if (s->out_range != AVCOL_RANGE_UNSPECIFIED)
out->color_range = s->out_range;
if (s->vkctx.output_format != s->vkctx.input_format)
From: Niklas Haas <git@haasn.dev> --- libavfilter/vf_scale.c | 2 ++ libavfilter/vf_scale_cuda.c | 3 +++ libavfilter/vf_scale_npp.c | 3 +++ libavfilter/vf_scale_vaapi.c | 3 +++ libavfilter/vf_scale_vt.c | 3 +++ libavfilter/vf_scale_vulkan.c | 3 +++ 6 files changed, 17 insertions(+)