1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

avfilter/framesync: Separate framesync AVClass and auxiliary functions

Will be useful for deduplication.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2021-09-11 17:34:39 +02:00
parent 6e26015a6b
commit b368a774dd

View File

@ -299,25 +299,36 @@ int ff_framesync_dualinput_get_writable(FFFrameSync *fs, AVFrame **f0, AVFrame *
const AVClass *ff_framesync_child_class_iterate(void **iter);
#define FRAMESYNC_DEFINE_CLASS(name, context, field) \
static int name##_framesync_preinit(AVFilterContext *ctx) { \
#define FRAMESYNC_DEFINE_PURE_CLASS(name, desc, func_prefix, options) \
static const AVClass name##_class = { \
.class_name = desc, \
.item_name = av_default_item_name, \
.option = options, \
.version = LIBAVUTIL_VERSION_INT, \
.category = AV_CLASS_CATEGORY_FILTER, \
.child_class_iterate = ff_framesync_child_class_iterate, \
.child_next = func_prefix##_child_next, \
}
#define FRAMESYNC_AUXILIARY_FUNCS(func_prefix, context, field) \
static int func_prefix##_framesync_preinit(AVFilterContext *ctx) \
{ \
context *s = ctx->priv; \
ff_framesync_preinit(&s->field); \
return 0; \
} \
static void *name##_child_next(void *obj, void *prev) { \
static void *func_prefix##_child_next(void *obj, void *prev) \
{ \
context *s = obj; \
s->fs.class = ff_framesync_get_class(); /* FIXME */ \
return prev ? NULL : &s->field; \
} \
static const AVClass name##_class = { \
.class_name = #name, \
.item_name = av_default_item_name, \
.option = name##_options, \
.version = LIBAVUTIL_VERSION_INT, \
.category = AV_CLASS_CATEGORY_FILTER, \
.child_class_iterate = ff_framesync_child_class_iterate, \
.child_next = name##_child_next, \
}
#define FRAMESYNC_DEFINE_CLASS_EXT(name, context, field, options) \
FRAMESYNC_AUXILIARY_FUNCS(name, context, field) \
FRAMESYNC_DEFINE_PURE_CLASS(name, #name, name, options)
#define FRAMESYNC_DEFINE_CLASS(name, context, field) \
FRAMESYNC_DEFINE_CLASS_EXT(name, context, field, name##_options)
#endif /* AVFILTER_FRAMESYNC_H */