Message ID | 20221125013046.40904-3-epirat07@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | Use av_dict_iterate where approproate | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
Marvin Scholz: > Instead of manually assembling the string, use av_dict_get_string > which handles things like proper escaping too (even though it is > not yet needed here). > --- > fftools/ffmpeg_filter.c | 31 +++++++++++++------------------ > 1 file changed, 13 insertions(+), 18 deletions(-) > > diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c > index b0c4c8ece3..29794fdc85 100644 > --- a/fftools/ffmpeg_filter.c > +++ b/fftools/ffmpeg_filter.c > @@ -972,7 +972,7 @@ int configure_filtergraph(FilterGraph *fg) > > if (simple) { > OutputStream *ost = fg->outputs[0]->ost; > - char args[512]; > + char *args = NULL; > const AVDictionaryEntry *e = NULL; > > if (filter_nbthreads) { > @@ -985,26 +985,21 @@ int configure_filtergraph(FilterGraph *fg) > av_opt_set(fg->graph, "threads", e->value, 0); > } > > - args[0] = 0; > - e = NULL; > - while ((e = av_dict_get(ost->sws_dict, "", e, > - AV_DICT_IGNORE_SUFFIX))) { > - av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value); > - } > - if (strlen(args)) { > - args[strlen(args)-1] = 0; > - fg->graph->scale_sws_opts = av_strdup(args); > + if (av_dict_count(ost->sws_dict)) { > + ret = av_dict_get_string(ost->sws_dict, &args, '=', ':'); > + if (ret < 0) > + goto fail; > + fg->graph->scale_sws_opts = args; > + args = NULL; It would be cleaner if you used a smaller scope for args (here and below); or maybe just eliminate this variable here entirely by using &fg->graph->scale_sws_opts as destination for av_dict_get_string()? > } > > - args[0] = 0; > - e = NULL; > - while ((e = av_dict_get(ost->swr_opts, "", e, > - AV_DICT_IGNORE_SUFFIX))) { > - av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value); > + if (av_dict_count(ost->swr_opts)) { > + ret = av_dict_get_string(ost->swr_opts, &args, '=', ':'); > + if (ret < 0) > + goto fail; > + av_opt_set(fg->graph, "aresample_swr_opts", args, 0); > + free(args); Wrong deallocator. > } > - if (strlen(args)) > - args[strlen(args)-1] = 0; > - av_opt_set(fg->graph, "aresample_swr_opts", args, 0); > } else { > fg->graph->nb_threads = filter_complex_nbthreads; > }
diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index b0c4c8ece3..29794fdc85 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -972,7 +972,7 @@ int configure_filtergraph(FilterGraph *fg) if (simple) { OutputStream *ost = fg->outputs[0]->ost; - char args[512]; + char *args = NULL; const AVDictionaryEntry *e = NULL; if (filter_nbthreads) { @@ -985,26 +985,21 @@ int configure_filtergraph(FilterGraph *fg) av_opt_set(fg->graph, "threads", e->value, 0); } - args[0] = 0; - e = NULL; - while ((e = av_dict_get(ost->sws_dict, "", e, - AV_DICT_IGNORE_SUFFIX))) { - av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value); - } - if (strlen(args)) { - args[strlen(args)-1] = 0; - fg->graph->scale_sws_opts = av_strdup(args); + if (av_dict_count(ost->sws_dict)) { + ret = av_dict_get_string(ost->sws_dict, &args, '=', ':'); + if (ret < 0) + goto fail; + fg->graph->scale_sws_opts = args; + args = NULL; } - args[0] = 0; - e = NULL; - while ((e = av_dict_get(ost->swr_opts, "", e, - AV_DICT_IGNORE_SUFFIX))) { - av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value); + if (av_dict_count(ost->swr_opts)) { + ret = av_dict_get_string(ost->swr_opts, &args, '=', ':'); + if (ret < 0) + goto fail; + av_opt_set(fg->graph, "aresample_swr_opts", args, 0); + free(args); } - if (strlen(args)) - args[strlen(args)-1] = 0; - av_opt_set(fg->graph, "aresample_swr_opts", args, 0); } else { fg->graph->nb_threads = filter_complex_nbthreads; }