Răsfoiți Sursa

avfilter/vf_scale: remove global side data when it no longer applies after scaling

Signed-off-by: James Almer <jamrial@gmail.com>
James Almer 9 luni în urmă
părinte
comite
49726a922f
1 a modificat fișierele cu 10 adăugiri și 0 ștergeri
  1. 10 0
      libavfilter/vf_scale.c

+ 10 - 0
libavfilter/vf_scale.c

@@ -684,6 +684,16 @@ static int config_props(AVFilterLink *outlink)
            flags_val);
            flags_val);
     av_freep(&flags_val);
     av_freep(&flags_val);
 
 
+    if (inlink->w != outlink->w || inlink->h != outlink->h) {
+        av_frame_side_data_remove_by_props(&outlink->side_data, &outlink->nb_side_data,
+                                           AV_SIDE_DATA_PROP_SIZE_DEPENDENT);
+    }
+
+    if (scale->in_primaries != scale->out_primaries || scale->in_transfer != scale->out_transfer) {
+        av_frame_side_data_remove_by_props(&outlink->side_data, &outlink->nb_side_data,
+                                           AV_SIDE_DATA_PROP_COLOR_DEPENDENT);
+    }
+
     if (!IS_SCALE2REF(ctx)) {
     if (!IS_SCALE2REF(ctx)) {
         ff_framesync_uninit(&scale->fs);
         ff_framesync_uninit(&scale->fs);
         ret = ff_framesync_init(&scale->fs, ctx, ctx->nb_inputs);
         ret = ff_framesync_init(&scale->fs, ctx, ctx->nb_inputs);