> 在 2019年10月8日,05:54,Dennis Mungai <dmng...@gmail.com> 写道: > > On Mon, 7 Oct 2019 at 08:26, Liu Steven <l...@chinaffmpeg.org> wrote: >> >> >> >>> 在 2019年10月6日,上午11:37,Jun Li <junli1...@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@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".