diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c index 8c43251c4c..9b73cc95ab 100644 --- a/libavfilter/avfiltergraph.c +++ b/libavfilter/avfiltergraph.c @@ -27,9 +27,23 @@ #include "avfiltergraph.h" #include "internal.h" +#include "libavutil/log.h" + +static const AVClass filtergraph_class = { + .class_name = "AVFilterGraph", + .item_name = av_default_item_name, + .version = LIBAVUTIL_VERSION_INT, +}; + AVFilterGraph *avfilter_graph_alloc(void) { - return av_mallocz(sizeof(AVFilterGraph)); + AVFilterGraph *ret = av_mallocz(sizeof(AVFilterGraph)); + if (!ret) + return NULL; +#if FF_API_GRAPH_AVCLASS + ret->av_class = &filtergraph_class; +#endif + return ret; } void avfilter_graph_free(AVFilterGraph **graph) diff --git a/libavfilter/avfiltergraph.h b/libavfilter/avfiltergraph.h index f9cf5cd3f9..733d1c4a51 100644 --- a/libavfilter/avfiltergraph.h +++ b/libavfilter/avfiltergraph.h @@ -23,8 +23,12 @@ #define AVFILTER_AVFILTERGRAPH_H #include "avfilter.h" +#include "libavutil/log.h" typedef struct AVFilterGraph { +#if FF_API_GRAPH_AVCLASS + const AVClass *av_class; +#endif unsigned filter_count; AVFilterContext **filters; diff --git a/libavfilter/version.h b/libavfilter/version.h index 09d6700d12..d84b67ff76 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -40,4 +40,12 @@ LIBAVFILTER_VERSION_MICRO) #define LIBAVFILTER_BUILD LIBAVFILTER_VERSION_INT +/** + * Those FF_API_* defines are not part of public API. + * They may change, break or disappear at any time. + */ +#ifndef FF_API_GRAPH_AVCLASS +#define FF_API_GRAPH_AVCLASS (LIBAVFILTER_VERSION_MAJOR > 2) +#endif + #endif // AVFILTER_VERSION_H