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

2019-10-13 Thread Jun Li
On Sun, Oct 13, 2019 at 10:39 AM Nicolas George  wrote:

> Jun Li (12019-10-05):
> > 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",
>
> will
>
> > "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(_options, entry->key, entry->value, 0);
>
> You could use entry->key + 4 to trim the "bsfs" prefix.


Thanks for review, version 2 is sent out for addressing it.
https://patchwork.ffmpeg.org/patch/15731/


>
>
> +av_dict_set(, 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(, entry->key, NULL, 0);
> > +av_dict_set(_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();
> > +av_dict_free(_options);
> >  av_freep(_select);
> >  return ret;
> >  }
>
> Apart from that, LGTM.
>
> Regards,
>
> --
>   Nicolas George
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

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

2019-10-13 Thread Nicolas George
Jun Li (12019-10-05):
> 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",

will

> "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(_options, entry->key, entry->value, 0);

You could use entry->key + 4 to trim the "bsfs" prefix.

> +av_dict_set(, 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(, entry->key, NULL, 0);
> +av_dict_set(_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();
> +av_dict_free(_options);
>  av_freep(_select);
>  return ret;
>  }

Apart from that, LGTM.

Regards,

-- 
  Nicolas George


signature.asc
Description: PGP signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

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

2019-10-11 Thread Dennis Mungai
On Sat, 12 Oct 2019, 06:57 Steven Liu,  wrote:

>
>
> > 在 2019年10月9日,01:51,Dennis Mungai  写道:
> >
> > On Tue, 8 Oct 2019 at 08:53, Steven Liu  wrote:
> >>
> >>
> >>
> >>> 在 2019年10月8日,05:54,Dennis Mungai  写道:
> >>>
> >>> On Mon, 7 Oct 2019 at 08:26, Liu Steven  wrote:
> 
> 
> 
> > 在 2019年10月6日,上午11:37,Jun Li  写道:
> >
> > 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(_options, entry->key, entry->value, 0);
> > +av_dict_set(, 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(, entry->key, NULL, 0);
> > +av_dict_set(_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();
> > +av_dict_free(_options);
> >   av_freep(_select);
> >   return ret;
> > }
> > --
> > 2.17.1
> >
> > ___
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-devel-requ...@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@ffmpeg.org
> >>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >>>
> >>> To unsubscribe, visit link above, or email
> >>> ffmpeg-devel-requ...@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.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

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

2019-10-11 Thread Steven Liu


> 在 2019年10月9日,01:51,Dennis Mungai  写道:
> 
> On Tue, 8 Oct 2019 at 08:53, Steven Liu  wrote:
>> 
>> 
>> 
>>> 在 2019年10月8日,05:54,Dennis Mungai  写道:
>>> 
>>> On Mon, 7 Oct 2019 at 08:26, Liu Steven  wrote:
 
 
 
> 在 2019年10月6日,上午11:37,Jun Li  写道:
> 
> 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(_options, entry->key, entry->value, 0);
> +av_dict_set(, 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(, entry->key, NULL, 0);
> +av_dict_set(_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();
> +av_dict_free(_options);
>   av_freep(_select);
>   return ret;
> }
> --
> 2.17.1
> 
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@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@ffmpeg.org
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>> 
>>> To unsubscribe, visit link above, or email
>>> ffmpeg-devel-requ...@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.
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Thanks
Steven





___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

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

2019-10-08 Thread Dennis Mungai
On Tue, 8 Oct 2019 at 08:53, Steven Liu  wrote:
>
>
>
> > 在 2019年10月8日,05:54,Dennis Mungai  写道:
> >
> > On Mon, 7 Oct 2019 at 08:26, Liu Steven  wrote:
> >>
> >>
> >>
> >>> 在 2019年10月6日,上午11:37,Jun Li  写道:
> >>>
> >>> 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(_options, entry->key, entry->value, 0);
> >>> +av_dict_set(, 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(, entry->key, NULL, 0);
> >>> +av_dict_set(_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();
> >>> +av_dict_free(_options);
> >>>av_freep(_select);
> >>>return ret;
> >>> }
> >>> --
> >>> 2.17.1
> >>>
> >>> ___
> >>> ffmpeg-devel mailing list
> >>> ffmpeg-devel@ffmpeg.org
> >>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >>>
> >>> To unsubscribe, visit link above, or email
> >>> ffmpeg-devel-requ...@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@ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-devel-requ...@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.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

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

2019-10-07 Thread Steven Liu


> 在 2019年10月8日,05:54,Dennis Mungai  写道:
> 
> On Mon, 7 Oct 2019 at 08:26, Liu Steven  wrote:
>> 
>> 
>> 
>>> 在 2019年10月6日,上午11:37,Jun Li  写道:
>>> 
>>> 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(_options, entry->key, entry->value, 0);
>>> +av_dict_set(, 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(, entry->key, NULL, 0);
>>> +av_dict_set(_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();
>>> +av_dict_free(_options);
>>>av_freep(_select);
>>>return ret;
>>> }
>>> --
>>> 2.17.1
>>> 
>>> ___
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel@ffmpeg.org
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>> 
>>> To unsubscribe, visit link above, or email
>>> ffmpeg-devel-requ...@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@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Thanks
Steven





___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

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

2019-10-07 Thread Dennis Mungai
On Mon, 7 Oct 2019 at 08:26, Liu Steven  wrote:
>
>
>
> > 在 2019年10月6日,上午11:37,Jun Li  写道:
> >
> > 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(_options, entry->key, entry->value, 0);
> > +av_dict_set(, 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(, entry->key, NULL, 0);
> > +av_dict_set(_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();
> > +av_dict_free(_options);
> > av_freep(_select);
> > return ret;
> > }
> > --
> > 2.17.1
> >
> > ___
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe”.
>
> should be ok
>
>
> Thanks
> Steven
>
>
>
Generating valid HLS + DASH streams using fragmented mp4 should be
much easier now, thanks.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

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

2019-10-06 Thread Liu Steven


> 在 2019年10月6日,上午11:37,Jun Li  写道:
> 
> 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(_options, entry->key, entry->value, 0);
> +av_dict_set(, 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(, entry->key, NULL, 0);
> +av_dict_set(_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();
> +av_dict_free(_options);
> av_freep(_select);
> return ret;
> }
> -- 
> 2.17.1
> 
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe”.

should be ok


Thanks
Steven



___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

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

2019-10-05 Thread Jun Li
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(_options, entry->key, entry->value, 0);
+av_dict_set(, 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(, entry->key, NULL, 0);
+av_dict_set(_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();
+av_dict_free(_options);
 av_freep(_select);
 return ret;
 }
-- 
2.17.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".