Message ID | 20200425185555.19111-3-cus@passwd.hu |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/3] fftools/ffmpeg: use a bsf list instead of individual bsfs | expand |
Context | Check | Description |
---|---|---|
andriy/default | pending | |
andriy/make | success | Make finished |
andriy/make_fate | success | Make fate finished |
On 4/25/2020 3:55 PM, Marton Balint wrote: > Signed-off-by: Marton Balint <cus@passwd.hu> > --- > fftools/ffmpeg_opt.c | 57 +++------------------------------------------------- > 1 file changed, 3 insertions(+), 54 deletions(-) > > diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c > index b52aa28626..dc42fb19d6 100644 > --- a/fftools/ffmpeg_opt.c > +++ b/fftools/ffmpeg_opt.c > @@ -1416,7 +1416,6 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e > { > OutputStream *ost; > AVStream *st = avformat_new_stream(oc, NULL); > - AVBSFList *bsf_list = NULL; > int idx = oc->nb_streams - 1, ret = 0; > const char *bsfs = NULL, *time_base = NULL; > char *next, *codec_tag = NULL; > @@ -1536,60 +1535,10 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e > MATCH_PER_STREAM_OPT(copy_prior_start, i, ost->copy_prior_start, oc ,st); > > MATCH_PER_STREAM_OPT(bitstream_filters, str, bsfs, oc, st); > - while (bsfs && *bsfs) { > - const AVBitStreamFilter *filter; > - char *bsf, *bsf_options_str, *bsf_name; > - AVBSFContext *bsf_ctx; > - > - bsf = av_get_token(&bsfs, ","); > - if (!bsf) > - exit_program(1); > - bsf_name = av_strtok(bsf, "=", &bsf_options_str); > - if (!bsf_name) > - exit_program(1); > - > - filter = av_bsf_get_by_name(bsf_name); > - if (!filter) { > - av_log(NULL, AV_LOG_FATAL, "Unknown bitstream filter %s\n", bsf_name); > - exit_program(1); > - } > - > - ret = av_bsf_alloc(filter, &bsf_ctx); > - if (ret < 0) { > - av_log(NULL, AV_LOG_ERROR, "Error allocating a bitstream filter context\n"); > - exit_program(1); > - } > - > - if (bsf_options_str && filter->priv_class) { > - const AVOption *opt = av_opt_next(bsf_ctx->priv_data, NULL); > - const char * shorthand[2] = {NULL}; > - > - if (opt) > - shorthand[0] = opt->name; > - > - ret = av_opt_set_from_string(bsf_ctx->priv_data, bsf_options_str, shorthand, "=", ":"); > - if (ret < 0) { > - av_log(NULL, AV_LOG_ERROR, "Error parsing options for bitstream filter %s\n", bsf_name); > - exit_program(1); > - } > - } > - > - if (!bsf_list) > - bsf_list = av_bsf_list_alloc(); > - if (!bsf_list || av_bsf_list_append(bsf_list, bsf_ctx) < 0) { > - av_log(NULL, AV_LOG_ERROR, "Failed to allocate or append to bsf list\n"); > - exit_program(1); > - } > - > - av_freep(&bsf); > - > - if (*bsfs) > - bsfs++; > - } > - if (bsf_list) { > - ret = av_bsf_list_finalize(&bsf_list, &ost->bsf_ctx); > + if (bsfs && *bsfs) { > + ret = av_bsf_list_parse_str(bsfs, &ost->bsf_ctx); > if (ret < 0) { > - av_log(NULL, AV_LOG_ERROR, "Failed to finalize bsf list\n"); > + av_log(NULL, AV_LOG_ERROR, "Error parsing bitstream filter sequence '%s': %s\n", bsfs, av_err2str(ret)); > exit_program(1); > } > } Maybe this patch could instead be merged with 1/3 and applied after 2/3?
On Sun, 26 Apr 2020, James Almer wrote: > On 4/25/2020 3:55 PM, Marton Balint wrote: >> Signed-off-by: Marton Balint <cus@passwd.hu> >> --- >> fftools/ffmpeg_opt.c | 57 +++------------------------------------------------- >> 1 file changed, 3 insertions(+), 54 deletions(-) >> >> diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c >> index b52aa28626..dc42fb19d6 100644 >> --- a/fftools/ffmpeg_opt.c >> +++ b/fftools/ffmpeg_opt.c >> @@ -1416,7 +1416,6 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e >> { >> OutputStream *ost; >> AVStream *st = avformat_new_stream(oc, NULL); >> - AVBSFList *bsf_list = NULL; >> int idx = oc->nb_streams - 1, ret = 0; >> const char *bsfs = NULL, *time_base = NULL; >> char *next, *codec_tag = NULL; >> @@ -1536,60 +1535,10 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e >> MATCH_PER_STREAM_OPT(copy_prior_start, i, ost->copy_prior_start, oc ,st); >> >> MATCH_PER_STREAM_OPT(bitstream_filters, str, bsfs, oc, st); >> - while (bsfs && *bsfs) { >> - const AVBitStreamFilter *filter; >> - char *bsf, *bsf_options_str, *bsf_name; >> - AVBSFContext *bsf_ctx; >> - >> - bsf = av_get_token(&bsfs, ","); >> - if (!bsf) >> - exit_program(1); >> - bsf_name = av_strtok(bsf, "=", &bsf_options_str); >> - if (!bsf_name) >> - exit_program(1); >> - >> - filter = av_bsf_get_by_name(bsf_name); >> - if (!filter) { >> - av_log(NULL, AV_LOG_FATAL, "Unknown bitstream filter %s\n", bsf_name); >> - exit_program(1); >> - } >> - >> - ret = av_bsf_alloc(filter, &bsf_ctx); >> - if (ret < 0) { >> - av_log(NULL, AV_LOG_ERROR, "Error allocating a bitstream filter context\n"); >> - exit_program(1); >> - } >> - >> - if (bsf_options_str && filter->priv_class) { >> - const AVOption *opt = av_opt_next(bsf_ctx->priv_data, NULL); >> - const char * shorthand[2] = {NULL}; >> - >> - if (opt) >> - shorthand[0] = opt->name; >> - >> - ret = av_opt_set_from_string(bsf_ctx->priv_data, bsf_options_str, shorthand, "=", ":"); >> - if (ret < 0) { >> - av_log(NULL, AV_LOG_ERROR, "Error parsing options for bitstream filter %s\n", bsf_name); >> - exit_program(1); >> - } >> - } >> - >> - if (!bsf_list) >> - bsf_list = av_bsf_list_alloc(); >> - if (!bsf_list || av_bsf_list_append(bsf_list, bsf_ctx) < 0) { >> - av_log(NULL, AV_LOG_ERROR, "Failed to allocate or append to bsf list\n"); >> - exit_program(1); >> - } >> - >> - av_freep(&bsf); >> - >> - if (*bsfs) >> - bsfs++; >> - } >> - if (bsf_list) { >> - ret = av_bsf_list_finalize(&bsf_list, &ost->bsf_ctx); >> + if (bsfs && *bsfs) { >> + ret = av_bsf_list_parse_str(bsfs, &ost->bsf_ctx); >> if (ret < 0) { >> - av_log(NULL, AV_LOG_ERROR, "Failed to finalize bsf list\n"); >> + av_log(NULL, AV_LOG_ERROR, "Error parsing bitstream filter sequence '%s': %s\n", bsfs, av_err2str(ret)); >> exit_program(1); >> } >> } > > Maybe this patch could instead be merged with 1/3 and applied after 2/3? Will do and will apply soon. Regards, Marton
On Fri, 1 May 2020, Marton Balint wrote: > > > On Sun, 26 Apr 2020, James Almer wrote: > >> On 4/25/2020 3:55 PM, Marton Balint wrote: >>> Signed-off-by: Marton Balint <cus@passwd.hu> >>> --- >>> fftools/ffmpeg_opt.c | 57 > +++------------------------------------------------- >>> 1 file changed, 3 insertions(+), 54 deletions(-) >>> >>> diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c >>> index b52aa28626..dc42fb19d6 100644 >>> --- a/fftools/ffmpeg_opt.c >>> +++ b/fftools/ffmpeg_opt.c >>> @@ -1416,7 +1416,6 @@ static OutputStream > *new_output_stream(OptionsContext *o, AVFormatContext *oc, e >>> { >>> OutputStream *ost; >>> AVStream *st = avformat_new_stream(oc, NULL); >>> - AVBSFList *bsf_list = NULL; >>> int idx = oc->nb_streams - 1, ret = 0; >>> const char *bsfs = NULL, *time_base = NULL; >>> char *next, *codec_tag = NULL; >>> @@ -1536,60 +1535,10 @@ static OutputStream > *new_output_stream(OptionsContext *o, AVFormatContext *oc, e >>> MATCH_PER_STREAM_OPT(copy_prior_start, i, ost->copy_prior_start, oc > ,st); >>> >>> MATCH_PER_STREAM_OPT(bitstream_filters, str, bsfs, oc, st); >>> - while (bsfs && *bsfs) { >>> - const AVBitStreamFilter *filter; >>> - char *bsf, *bsf_options_str, *bsf_name; >>> - AVBSFContext *bsf_ctx; >>> - >>> - bsf = av_get_token(&bsfs, ","); >>> - if (!bsf) >>> - exit_program(1); >>> - bsf_name = av_strtok(bsf, "=", &bsf_options_str); >>> - if (!bsf_name) >>> - exit_program(1); >>> - >>> - filter = av_bsf_get_by_name(bsf_name); >>> - if (!filter) { >>> - av_log(NULL, AV_LOG_FATAL, "Unknown bitstream filter %s\n", > bsf_name); >>> - exit_program(1); >>> - } >>> - >>> - ret = av_bsf_alloc(filter, &bsf_ctx); >>> - if (ret < 0) { >>> - av_log(NULL, AV_LOG_ERROR, "Error allocating a bitstream > filter context\n"); >>> - exit_program(1); >>> - } >>> - >>> - if (bsf_options_str && filter->priv_class) { >>> - const AVOption *opt = av_opt_next(bsf_ctx->priv_data, NULL); >>> - const char * shorthand[2] = {NULL}; >>> - >>> - if (opt) >>> - shorthand[0] = opt->name; >>> - >>> - ret = av_opt_set_from_string(bsf_ctx->priv_data, > bsf_options_str, shorthand, "=", ":"); >>> - if (ret < 0) { >>> - av_log(NULL, AV_LOG_ERROR, "Error parsing options for > bitstream filter %s\n", bsf_name); >>> - exit_program(1); >>> - } >>> - } >>> - >>> - if (!bsf_list) >>> - bsf_list = av_bsf_list_alloc(); >>> - if (!bsf_list || av_bsf_list_append(bsf_list, bsf_ctx) < 0) { >>> - av_log(NULL, AV_LOG_ERROR, "Failed to allocate or append to > bsf list\n"); >>> - exit_program(1); >>> - } >>> - >>> - av_freep(&bsf); >>> - >>> - if (*bsfs) >>> - bsfs++; >>> - } >>> - if (bsf_list) { >>> - ret = av_bsf_list_finalize(&bsf_list, &ost->bsf_ctx); >>> + if (bsfs && *bsfs) { >>> + ret = av_bsf_list_parse_str(bsfs, &ost->bsf_ctx); >>> if (ret < 0) { >>> - av_log(NULL, AV_LOG_ERROR, "Failed to finalize bsf list\n"); >>> + av_log(NULL, AV_LOG_ERROR, "Error parsing bitstream filter > sequence '%s': %s\n", bsfs, av_err2str(ret)); >>> exit_program(1); >>> } >>> } >> >> Maybe this patch could instead be merged with 1/3 and applied after 2/3? > > Will do and will apply soon. Applied. Regards, Marton
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index b52aa28626..dc42fb19d6 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1416,7 +1416,6 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e { OutputStream *ost; AVStream *st = avformat_new_stream(oc, NULL); - AVBSFList *bsf_list = NULL; int idx = oc->nb_streams - 1, ret = 0; const char *bsfs = NULL, *time_base = NULL; char *next, *codec_tag = NULL; @@ -1536,60 +1535,10 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e MATCH_PER_STREAM_OPT(copy_prior_start, i, ost->copy_prior_start, oc ,st); MATCH_PER_STREAM_OPT(bitstream_filters, str, bsfs, oc, st); - while (bsfs && *bsfs) { - const AVBitStreamFilter *filter; - char *bsf, *bsf_options_str, *bsf_name; - AVBSFContext *bsf_ctx; - - bsf = av_get_token(&bsfs, ","); - if (!bsf) - exit_program(1); - bsf_name = av_strtok(bsf, "=", &bsf_options_str); - if (!bsf_name) - exit_program(1); - - filter = av_bsf_get_by_name(bsf_name); - if (!filter) { - av_log(NULL, AV_LOG_FATAL, "Unknown bitstream filter %s\n", bsf_name); - exit_program(1); - } - - ret = av_bsf_alloc(filter, &bsf_ctx); - if (ret < 0) { - av_log(NULL, AV_LOG_ERROR, "Error allocating a bitstream filter context\n"); - exit_program(1); - } - - if (bsf_options_str && filter->priv_class) { - const AVOption *opt = av_opt_next(bsf_ctx->priv_data, NULL); - const char * shorthand[2] = {NULL}; - - if (opt) - shorthand[0] = opt->name; - - ret = av_opt_set_from_string(bsf_ctx->priv_data, bsf_options_str, shorthand, "=", ":"); - if (ret < 0) { - av_log(NULL, AV_LOG_ERROR, "Error parsing options for bitstream filter %s\n", bsf_name); - exit_program(1); - } - } - - if (!bsf_list) - bsf_list = av_bsf_list_alloc(); - if (!bsf_list || av_bsf_list_append(bsf_list, bsf_ctx) < 0) { - av_log(NULL, AV_LOG_ERROR, "Failed to allocate or append to bsf list\n"); - exit_program(1); - } - - av_freep(&bsf); - - if (*bsfs) - bsfs++; - } - if (bsf_list) { - ret = av_bsf_list_finalize(&bsf_list, &ost->bsf_ctx); + if (bsfs && *bsfs) { + ret = av_bsf_list_parse_str(bsfs, &ost->bsf_ctx); if (ret < 0) { - av_log(NULL, AV_LOG_ERROR, "Failed to finalize bsf list\n"); + av_log(NULL, AV_LOG_ERROR, "Error parsing bitstream filter sequence '%s': %s\n", bsfs, av_err2str(ret)); exit_program(1); } }
Signed-off-by: Marton Balint <cus@passwd.hu> --- fftools/ffmpeg_opt.c | 57 +++------------------------------------------------- 1 file changed, 3 insertions(+), 54 deletions(-)