| @@ -85,17 +85,9 @@ static void ass_log(int ass_level, const char *fmt, va_list args, void *ctx) | |||||
| av_log(ctx, level, "\n"); | av_log(ctx, level, "\n"); | ||||
| } | } | ||||
| static av_cold int init(AVFilterContext *ctx, const char *args, const AVClass *class) | |||||
| static av_cold int init(AVFilterContext *ctx, const char *args) | |||||
| { | { | ||||
| AssContext *ass = ctx->priv; | AssContext *ass = ctx->priv; | ||||
| static const char *shorthand[] = { "filename", NULL }; | |||||
| int ret; | |||||
| ass->class = class; | |||||
| av_opt_set_defaults(ass); | |||||
| if ((ret = av_opt_set_from_string(ass, args, shorthand, "=", ":")) < 0) | |||||
| return ret; | |||||
| if (!ass->filename) { | if (!ass->filename) { | ||||
| av_log(ctx, AV_LOG_ERROR, "No filename provided!\n"); | av_log(ctx, AV_LOG_ERROR, "No filename provided!\n"); | ||||
| @@ -123,7 +115,6 @@ static av_cold void uninit(AVFilterContext *ctx) | |||||
| { | { | ||||
| AssContext *ass = ctx->priv; | AssContext *ass = ctx->priv; | ||||
| av_opt_free(ass); | |||||
| if (ass->track) | if (ass->track) | ||||
| ass_free_track(ass->track); | ass_free_track(ass->track); | ||||
| if (ass->renderer) | if (ass->renderer) | ||||
| @@ -210,6 +201,8 @@ static const AVFilterPad ass_outputs[] = { | |||||
| { NULL } | { NULL } | ||||
| }; | }; | ||||
| static const char *const shorthand[] = { "filename", NULL }; | |||||
| #if CONFIG_ASS_FILTER | #if CONFIG_ASS_FILTER | ||||
| static const AVOption ass_options[] = { | static const AVOption ass_options[] = { | ||||
| @@ -222,7 +215,7 @@ AVFILTER_DEFINE_CLASS(ass); | |||||
| static av_cold int init_ass(AVFilterContext *ctx, const char *args) | static av_cold int init_ass(AVFilterContext *ctx, const char *args) | ||||
| { | { | ||||
| AssContext *ass = ctx->priv; | AssContext *ass = ctx->priv; | ||||
| int ret = init(ctx, args, &ass_class); | |||||
| int ret = init(ctx, args); | |||||
| if (ret < 0) | if (ret < 0) | ||||
| return ret; | return ret; | ||||
| @@ -247,6 +240,7 @@ AVFilter avfilter_vf_ass = { | |||||
| .inputs = ass_inputs, | .inputs = ass_inputs, | ||||
| .outputs = ass_outputs, | .outputs = ass_outputs, | ||||
| .priv_class = &ass_class, | .priv_class = &ass_class, | ||||
| .shorthand = shorthand, | |||||
| }; | }; | ||||
| #endif | #endif | ||||
| @@ -273,7 +267,7 @@ static av_cold int init_subtitles(AVFilterContext *ctx, const char *args) | |||||
| AssContext *ass = ctx->priv; | AssContext *ass = ctx->priv; | ||||
| /* Init libass */ | /* Init libass */ | ||||
| ret = init(ctx, args, &subtitles_class); | |||||
| ret = init(ctx, args); | |||||
| if (ret < 0) | if (ret < 0) | ||||
| return ret; | return ret; | ||||
| ass->track = ass_new_track(ass->library); | ass->track = ass_new_track(ass->library); | ||||
| @@ -371,5 +365,6 @@ AVFilter avfilter_vf_subtitles = { | |||||
| .inputs = ass_inputs, | .inputs = ass_inputs, | ||||
| .outputs = ass_outputs, | .outputs = ass_outputs, | ||||
| .priv_class = &subtitles_class, | .priv_class = &subtitles_class, | ||||
| .shorthand = shorthand, | |||||
| }; | }; | ||||
| #endif | #endif | ||||