[FFmpeg-devel] [PATCH v1] avformat/tee.c: steal bsf option before passing to fifo muxer

Dennis Mungai dmngaie at gmail.com
Sat Oct 12 08:15:10 EEST 2019


On Sat, 12 Oct 2019, 06:57 Steven Liu, <lq at chinaffmpeg.org> wrote:

>
>
> > 在 2019年10月9日,01:51,Dennis Mungai <dmngaie at gmail.com> 写道:
> >
> > On Tue, 8 Oct 2019 at 08:53, Steven Liu <lq at chinaffmpeg.org> wrote:
> >>
> >>
> >>
> >>> 在 2019年10月8日,05:54,Dennis Mungai <dmngaie at gmail.com> 写道:
> >>>
> >>> On Mon, 7 Oct 2019 at 08:26, Liu Steven <lq at chinaffmpeg.org> wrote:
> >>>>
> >>>>
> >>>>
> >>>>> 在 2019年10月6日,上午11:37,Jun Li <junli1026 at gmail.com> 写道:
> >>>>>
> >>>>> Fix #7620
> >>>>> In the case tee muxer with both "bsf" and "use_fifo" parameters
> >>>>> wil trigger this bug. Tee muxer will first steal parameters (like
> "f",
> >>>>> "select"...) and then "use_fifo" will try reading out remaining
> options
> >>>>> and pass them to fifo as option "format_options".
> >>>>> Current code miss the part of stealing "bsf" options.
> >>>>> ---
> >>>>> libavformat/tee.c | 12 +++++++++---
> >>>>> 1 file changed, 9 insertions(+), 3 deletions(-)
> >>>>>
> >>>>> diff --git a/libavformat/tee.c b/libavformat/tee.c
> >>>>> index 89a4ceb280..3530582dbd 100644
> >>>>> --- a/libavformat/tee.c
> >>>>> +++ b/libavformat/tee.c
> >>>>> @@ -159,7 +159,7 @@ static void close_slaves(AVFormatContext *avf)
> >>>>> static int open_slave(AVFormatContext *avf, char *slave, TeeSlave
> *tee_slave)
> >>>>> {
> >>>>>   int i, ret;
> >>>>> -    AVDictionary *options = NULL;
> >>>>> +    AVDictionary *options = NULL, *bsf_options = NULL;
> >>>>>   AVDictionaryEntry *entry;
> >>>>>   char *filename;
> >>>>>   char *format = NULL, *select = NULL, *on_fail = NULL;
> >>>>> @@ -186,6 +186,11 @@ static int open_slave(AVFormatContext *avf,
> char *slave, TeeSlave *tee_slave)
> >>>>>   STEAL_OPTION("onfail", on_fail);
> >>>>>   STEAL_OPTION("use_fifo", use_fifo);
> >>>>>   STEAL_OPTION("fifo_options", fifo_options_str);
> >>>>> +    entry = NULL;
> >>>>> +    while ((entry = av_dict_get(options, "bsfs", entry,
> AV_DICT_IGNORE_SUFFIX))) {
> >>>>> +        av_dict_set(&bsf_options, entry->key, entry->value, 0);
> >>>>> +        av_dict_set(&options, entry->key, NULL, 0);
> >>>>> +    }
> >>>>>
> >>>>>   ret = parse_slave_failure_policy_option(on_fail, tee_slave);
> >>>>>   if (ret < 0) {
> >>>>> @@ -311,7 +316,7 @@ static int open_slave(AVFormatContext *avf, char
> *slave, TeeSlave *tee_slave)
> >>>>>   }
> >>>>>
> >>>>>   entry = NULL;
> >>>>> -    while (entry = av_dict_get(options, "bsfs", NULL,
> AV_DICT_IGNORE_SUFFIX)) {
> >>>>> +    while (entry = av_dict_get(bsf_options, "bsfs", NULL,
> AV_DICT_IGNORE_SUFFIX)) {
> >>>>>       const char *spec = entry->key + strlen("bsfs");
> >>>>>       if (*spec) {
> >>>>>           if (strspn(spec, slave_bsfs_spec_sep) != 1) {
> >>>>> @@ -352,7 +357,7 @@ static int open_slave(AVFormatContext *avf, char
> *slave, TeeSlave *tee_slave)
> >>>>>           }
> >>>>>       }
> >>>>>
> >>>>> -        av_dict_set(&options, entry->key, NULL, 0);
> >>>>> +        av_dict_set(&bsf_options, entry->key, NULL, 0);
> >>>>>   }
> >>>>>
> >>>>>   for (i = 0; i < avf->nb_streams; i++){
> >>>>> @@ -399,6 +404,7 @@ end:
> >>>>>   av_free(select);
> >>>>>   av_free(on_fail);
> >>>>>   av_dict_free(&options);
> >>>>> +    av_dict_free(&bsf_options);
> >>>>>   av_freep(&tmp_select);
> >>>>>   return ret;
> >>>>> }
> >>>>> --
> >>>>> 2.17.1
> >>>>>
> >>>>> _______________________________________________
> >>>>> ffmpeg-devel mailing list
> >>>>> ffmpeg-devel at ffmpeg.org
> >>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >>>>>
> >>>>> To unsubscribe, visit link above, or email
> >>>>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe”.
> >>>>
> >>>> should be ok
> >>>>
> >>>>
> >>>> Thanks
> >>>> Steven
> >>>>
> >>>>
> >>>>
> >>> Generating valid HLS + DASH streams using fragmented mp4 should be
> >>> much easier now, thanks.
> >> Do you mean much easier after this patch?
> >>> _______________________________________________
> >>> ffmpeg-devel mailing list
> >>> ffmpeg-devel at ffmpeg.org
> >>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >>>
> >>> To unsubscribe, visit link above, or email
> >>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> >>
> >> Thanks
> >> Steven
> >
> > Yes, Steven.
> > Previously, attempting to use fifo within the tee muxer with any BSF
> > applied resulted in error.
> > And this patch fixes that, allowing for fifo-enabled tee slaves to
> > resume operations with BSFs in place.
> Will push if there have no objections.
>
>
> Thanks.


More information about the ffmpeg-devel mailing list