[FFmpeg-cvslog] avfilter/formats: Avoid reallocations for video in ff_all_formats()
Andreas Rheinhardt
git at videolan.org
Sun Sep 26 13:51:32 EEST 2021
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Sun Sep 26 00:28:19 2021 +0200| [f348a967a35c0946de0d9f6bedb1f4025b09b334] | committer: Andreas Rheinhardt
avfilter/formats: Avoid reallocations for video in ff_all_formats()
Up until now, the list of pixfmts is reallocated every time an entry
is added to it; there are currently 196 pixel formats, so this matters:
It causes 5541704 calls to av_realloc_array() in a typical FATE run,
which is the majority for said function (8095768 calls) and even
a large chunk of the calls to av_realloc() itself (12589508 calls).
Fix this by using ff_formats_pixdesc_filter() instead.
Reviewed-by: Nicolas George <george at nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f348a967a35c0946de0d9f6bedb1f4025b09b334
---
libavfilter/formats.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/libavfilter/formats.c b/libavfilter/formats.c
index 59ea966424..1d2a51c0af 100644
--- a/libavfilter/formats.c
+++ b/libavfilter/formats.c
@@ -435,11 +435,7 @@ AVFilterFormats *ff_all_formats(enum AVMediaType type)
AVFilterFormats *ret = NULL;
if (type == AVMEDIA_TYPE_VIDEO) {
- const AVPixFmtDescriptor *desc = NULL;
- while ((desc = av_pix_fmt_desc_next(desc))) {
- if (ff_add_format(&ret, av_pix_fmt_desc_get_id(desc)) < 0)
- return NULL;
- }
+ return ff_formats_pixdesc_filter(0, 0);
} else if (type == AVMEDIA_TYPE_AUDIO) {
enum AVSampleFormat fmt = 0;
while (av_get_sample_fmt_name(fmt)) {
More information about the ffmpeg-cvslog
mailing list