[FFmpeg-devel] [PATCH 08/10] avfilter/formats: Avoid redundant counter

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Sun Aug 15 12:55:36 EEST 2021


The ff_set_common_(formats|channel_layouts|samplerates) have to free
their list in case it doesn't have an owner; therefore they tracked
whether they attached it to an owner. But the list's refcount already
contains such a counter, so we don't have to keep track of whether we
have attached the list to an owner.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
 libavfilter/formats.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/libavfilter/formats.c b/libavfilter/formats.c
index 9e39d65a3c..cc73c5abcb 100644
--- a/libavfilter/formats.c
+++ b/libavfilter/formats.c
@@ -623,7 +623,7 @@ void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
 }
 
 #define SET_COMMON_FORMATS(ctx, fmts, ref_fn, unref_fn)             \
-    int count = 0, i;                                               \
+    int i;                                                          \
                                                                     \
     if (!fmts)                                                      \
         return AVERROR(ENOMEM);                                     \
@@ -634,7 +634,6 @@ void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
             if (ret < 0) {                                          \
                 return ret;                                         \
             }                                                       \
-            count++;                                                \
         }                                                           \
     }                                                               \
     for (i = 0; i < ctx->nb_outputs; i++) {                         \
@@ -643,13 +642,11 @@ void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
             if (ret < 0) {                                          \
                 return ret;                                         \
             }                                                       \
-            count++;                                                \
         }                                                           \
     }                                                               \
                                                                     \
-    if (!count) {                                                   \
+    if (!fmts->refcount)                                            \
         unref_fn(&fmts);                                            \
-    }                                                               \
                                                                     \
     return 0;
 
-- 
2.30.2



More information about the ffmpeg-devel mailing list