Removes an arbitrary hardcoded limit on the number of filters.
uninit_opts();
- avfilter_uninit();
avformat_network_deinit();
if (received_sigterm) {
cur_stream = NULL;
}
uninit_opts();
-#if CONFIG_AVFILTER
- avfilter_uninit();
-#endif
avformat_network_deinit();
if (show_status)
printf("\n");
int show_filters(void *optctx, const char *opt, const char *arg)
{
- AVFilter av_unused(**filter) = NULL;
+ const AVFilter av_unused(*filter) = NULL;
printf("Filters:\n");
#if CONFIG_AVFILTER
- while ((filter = av_filter_next(filter)) && *filter)
- printf("%-16s %s\n", (*filter)->name, (*filter)->description);
+ while ((filter = avfilter_next(filter)))
+ printf("%-16s %s\n", filter->name, filter->description);
#endif
return 0;
}
Add avfilter_init_dict().
Add AVFilter.flags field and AVFILTER_FLAG_DYNAMIC_{INPUTS,OUTPUTS} flags.
Add avfilter_pad_count() for counting filter inputs/outputs.
+ Add avfilter_next(), deprecate av_filter_next().
+ Deprecate avfilter_uninit().
2013-xx-xx - lavfi 3.7.0 - avfilter.h
Add AVFilter.priv_class for exporting filter options through the AVOptions API
return min;
}
-#define MAX_REGISTERED_AVFILTERS_NB 64
-
-static AVFilter *registered_avfilters[MAX_REGISTERED_AVFILTERS_NB + 1];
-
-static int next_registered_avfilter_idx = 0;
+static AVFilter *first_filter;
AVFilter *avfilter_get_by_name(const char *name)
{
- int i;
+ AVFilter *f = NULL;
- for (i = 0; registered_avfilters[i]; i++)
- if (!strcmp(registered_avfilters[i]->name, name))
- return registered_avfilters[i];
+ while ((f = avfilter_next(f)))
+ if (!strcmp(f->name, name))
+ return f;
return NULL;
}
int avfilter_register(AVFilter *filter)
{
- if (next_registered_avfilter_idx == MAX_REGISTERED_AVFILTERS_NB)
- return -1;
-
- registered_avfilters[next_registered_avfilter_idx++] = filter;
+ AVFilter **f = &first_filter;
+ while (*f)
+ f = &(*f)->next;
+ *f = filter;
+ filter->next = NULL;
return 0;
}
+const AVFilter *avfilter_next(const AVFilter *prev)
+{
+ return prev ? prev->next : first_filter;
+}
+
+#if FF_API_OLD_FILTER_REGISTER
AVFilter **av_filter_next(AVFilter **filter)
{
- return filter ? ++filter : ®istered_avfilters[0];
+ return filter ? &(*filter)->next : &first_filter;
}
void avfilter_uninit(void)
{
- memset(registered_avfilters, 0, sizeof(registered_avfilters));
- next_registered_avfilter_idx = 0;
}
+#endif
int avfilter_pad_count(const AVFilterPad *pads)
{
static const AVClass *filter_child_class_next(const AVClass *prev)
{
- AVFilter **f = NULL;
+ AVFilter *f = NULL;
- while (prev && *(f = av_filter_next(f)))
- if ((*f)->priv_class == prev)
+ while (prev && (f = avfilter_next(f)))
+ if (f->priv_class == prev)
break;
- while (*(f = av_filter_next(f)))
- if ((*f)->priv_class)
- return (*f)->priv_class;
+ while ((f = avfilter_next(f)))
+ if (f->priv_class)
+ return f->priv_class;
return NULL;
}
int (*query_formats)(AVFilterContext *);
int priv_size; ///< size of private data to allocate for the filter
+
+ struct AVFilter *next;
} AVFilter;
/** An instance of a filter */
/** Initialize the filter system. Register all builtin filters. */
void avfilter_register_all(void);
+#if FF_API_OLD_FILTER_REGISTER
/** Uninitialize the filter system. Unregister all filters. */
+attribute_deprecated
void avfilter_uninit(void);
+#endif
/**
* Register a filter. This is only needed if you plan to use
AVFilter *avfilter_get_by_name(const char *name);
/**
+ * Iterate over all registered filters.
+ * @return If prev is non-NULL, next registered filter after prev or NULL if
+ * prev is the last filter. If prev is NULL, return the first registered filter.
+ */
+const AVFilter *avfilter_next(const AVFilter *prev);
+
+#if FF_API_OLD_FILTER_REGISTER
+/**
* If filter is NULL, returns a pointer to the first registered filter pointer,
* if filter is non-NULL, returns the next pointer after filter.
* If the returned pointer points to NULL, the last registered filter
* was already reached.
+ * @deprecated use avfilter_next()
*/
+attribute_deprecated
AVFilter **av_filter_next(AVFilter **filter);
+#endif
#if FF_API_AVFILTER_OPEN
/**
#ifndef FF_API_AVFILTER_INIT_FILTER
#define FF_API_AVFILTER_INIT_FILTER (LIBAVFILTER_VERSION_MAJOR < 4)
#endif
+#ifndef FF_API_OLD_FILTER_REGISTER
+#define FF_API_OLD_FILTER_REGISTER (LIBAVFILTER_VERSION_MAJOR < 4)
+#endif
#endif /* AVFILTER_VERSION_H */