Commit ec26cd494f for ffmpeg
commit ec26cd494fdddf25a9534bfd68e23e4fc794733c
Author: Michael Niedermayer <michael@niedermayer.cc>
Date: Sun Oct 11 00:01:16 2026 +0200
avfilter: declare filters that handle changed frame sizes
These filters process each frame with its own size.
Found during review of the fix for the security report RqgTntCAW2qN.
diff --git a/libavfilter/f_drawgraph.c b/libavfilter/f_drawgraph.c
index c9ac6c0ca9..4f6ad8ef23 100644
--- a/libavfilter/f_drawgraph.c
+++ b/libavfilter/f_drawgraph.c
@@ -484,6 +484,7 @@ const FFFilter ff_vf_drawgraph = {
FILTER_INPUTS(drawgraph_inputs),
FILTER_OUTPUTS(drawgraph_outputs),
FILTER_QUERY_FUNC2(query_formats),
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_PARAMS,
};
#endif // CONFIG_DRAWGRAPH_FILTER
diff --git a/libavfilter/f_interleave.c b/libavfilter/f_interleave.c
index 31e903e6b0..baa502ba56 100644
--- a/libavfilter/f_interleave.c
+++ b/libavfilter/f_interleave.c
@@ -239,6 +239,7 @@ const FFFilter ff_vf_interleave = {
.init = init,
.activate = activate,
FILTER_OUTPUTS(interleave_outputs),
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_PARAMS,
};
#endif
diff --git a/libavfilter/f_streamselect.c b/libavfilter/f_streamselect.c
index 7378c9c2fe..cce74b6dde 100644
--- a/libavfilter/f_streamselect.c
+++ b/libavfilter/f_streamselect.c
@@ -306,6 +306,7 @@ const FFFilter ff_vf_streamselect = {
.uninit = uninit,
.activate = activate,
.priv_size = sizeof(StreamSelectContext),
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_PARAMS,
};
const FFFilter ff_af_astreamselect = {
diff --git a/libavfilter/vf_colordetect.c b/libavfilter/vf_colordetect.c
index d1a7ba6f49..5d5c27cc4a 100644
--- a/libavfilter/vf_colordetect.c
+++ b/libavfilter/vf_colordetect.c
@@ -308,4 +308,5 @@ const FFFilter ff_vf_colordetect = {
FILTER_OUTPUTS(ff_video_default_filterpad),
FILTER_QUERY_FUNC2(query_format),
.activate = activate,
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_SIZE,
};
diff --git a/libavfilter/vf_copy.c b/libavfilter/vf_copy.c
index c6d5191901..92070d6f66 100644
--- a/libavfilter/vf_copy.c
+++ b/libavfilter/vf_copy.c
@@ -76,4 +76,5 @@ const FFFilter ff_vf_copy = {
FILTER_INPUTS(avfilter_vf_copy_inputs),
FILTER_OUTPUTS(ff_video_default_filterpad),
FILTER_QUERY_FUNC2(query_formats),
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_SIZE,
};
diff --git a/libavfilter/vf_drawbox.c b/libavfilter/vf_drawbox.c
index 571988416c..ec409603d3 100644
--- a/libavfilter/vf_drawbox.c
+++ b/libavfilter/vf_drawbox.c
@@ -482,6 +482,7 @@ const FFFilter ff_vf_drawbox = {
FILTER_OUTPUTS(ff_video_default_filterpad),
FILTER_PIXFMTS_ARRAY(pix_fmts),
.process_command = process_command,
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_SIZE,
};
#endif /* CONFIG_DRAWBOX_FILTER */
@@ -557,6 +558,7 @@ const FFFilter ff_vf_drawgrid = {
FILTER_OUTPUTS(ff_video_default_filterpad),
FILTER_PIXFMTS_ARRAY(pix_fmts),
.process_command = process_command,
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_SIZE,
};
#endif /* CONFIG_DRAWGRID_FILTER */
diff --git a/libavfilter/vf_iccdetect.c b/libavfilter/vf_iccdetect.c
index 6af7132c5c..722c645b24 100644
--- a/libavfilter/vf_iccdetect.c
+++ b/libavfilter/vf_iccdetect.c
@@ -136,4 +136,5 @@ const FFFilter ff_vf_iccdetect = {
.uninit = &iccdetect_uninit,
FILTER_INPUTS(iccdetect_inputs),
FILTER_OUTPUTS(ff_video_default_filterpad),
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_PARAMS,
};
diff --git a/libavfilter/vf_iccgen.c b/libavfilter/vf_iccgen.c
index 06c5b4ebdc..fdc4107df5 100644
--- a/libavfilter/vf_iccgen.c
+++ b/libavfilter/vf_iccgen.c
@@ -172,4 +172,5 @@ const FFFilter ff_vf_iccgen = {
.uninit = &iccgen_uninit,
FILTER_INPUTS(iccgen_inputs),
FILTER_OUTPUTS(ff_video_default_filterpad),
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_PARAMS,
};
diff --git a/libavfilter/vf_ocr.c b/libavfilter/vf_ocr.c
index 16266373bf..e6fd925f6c 100644
--- a/libavfilter/vf_ocr.c
+++ b/libavfilter/vf_ocr.c
@@ -139,4 +139,5 @@ const FFFilter ff_vf_ocr = {
FILTER_INPUTS(ocr_inputs),
FILTER_OUTPUTS(ff_video_default_filterpad),
FILTER_PIXFMTS_ARRAY(pix_fmts),
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_SIZE,
};
diff --git a/libavfilter/vf_shuffleplanes.c b/libavfilter/vf_shuffleplanes.c
index 41888cd401..dfafe36ec6 100644
--- a/libavfilter/vf_shuffleplanes.c
+++ b/libavfilter/vf_shuffleplanes.c
@@ -165,4 +165,5 @@ const FFFilter ff_vf_shuffleplanes = {
FILTER_INPUTS(shuffleplanes_inputs),
FILTER_OUTPUTS(ff_video_default_filterpad),
FILTER_QUERY_FUNC2(query_formats),
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_SIZE,
};
diff --git a/libavfilter/vf_zscale.c b/libavfilter/vf_zscale.c
index a2d77be1dd..8f600cbf03 100644
--- a/libavfilter/vf_zscale.c
+++ b/libavfilter/vf_zscale.c
@@ -1109,4 +1109,5 @@ const FFFilter ff_vf_zscale = {
FILTER_OUTPUTS(avfilter_vf_zscale_outputs),
FILTER_QUERY_FUNC2(query_formats),
.process_command = process_command,
+ .flags_internal = FF_FILTER_FLAG_DYNAMIC_FRAME_SIZE,
};