@@ -159,7 +159,8 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad,
159
159
src -> outputs [srcpad ] || dst -> inputs [dstpad ])
160
160
return AVERROR (EINVAL );
161
161
162
- if (!fffilterctx (src )-> initialized || !fffilterctx (dst )-> initialized ) {
162
+ if (!(fffilterctx (src )-> state_flags & AV_CLASS_STATE_INITIALIZED ) ||
163
+ !(fffilterctx (dst )-> state_flags & AV_CLASS_STATE_INITIALIZED )) {
163
164
av_log (src , AV_LOG_ERROR , "Filters must be initialized before linking.\n" );
164
165
return AVERROR (EINVAL );
165
166
}
@@ -676,6 +677,7 @@ static const AVClass avfilter_class = {
676
677
.child_next = filter_child_next ,
677
678
.child_class_iterate = filter_child_class_iterate ,
678
679
.option = avfilter_options ,
680
+ .state_flags_offset = offsetof(FFFilterContext , state_flags ),
679
681
};
680
682
681
683
static int default_execute (AVFilterContext * ctx , avfilter_action_func * func , void * arg ,
@@ -909,7 +911,7 @@ int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options)
909
911
FFFilterContext * ctxi = fffilterctx (ctx );
910
912
int ret = 0 ;
911
913
912
- if (ctxi -> initialized ) {
914
+ if (ctxi -> state_flags & AV_CLASS_STATE_INITIALIZED ) {
913
915
av_log (ctx , AV_LOG_ERROR , "Filter already initialized\n" );
914
916
return AVERROR (EINVAL );
915
917
}
@@ -940,7 +942,7 @@ int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options)
940
942
return ret ;
941
943
}
942
944
943
- ctxi -> initialized = 1 ;
945
+ ctxi -> state_flags |= AV_CLASS_STATE_INITIALIZED ;
944
946
945
947
return 0 ;
946
948
}
0 commit comments