1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-04 22:03:09 +02:00

avformat/tee: fix multiple bsfs in tee

Since 155508c6e9 specifying multiple
bsfs for different streams was broken:

"[bsfs/a=h264_metadata:bsfs/v=h264_metadata]out.mp4|..."

This incorrectly only parsed the first bsfs specification. The reason
for this is that the dictionary is modified in the iterator, hence
invalidating the iterator. The simplest fix for this is to simply
iterate from the beginning in each loop given that the previous entry
is removed.
This commit is contained in:
Marvin Scholz
2025-06-24 23:55:57 +02:00
parent 64fce7202c
commit f744584f71

View File

@ -197,7 +197,7 @@ static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave)
PROCESS_OPTION("fifo_options",
parse_slave_fifo_options(value, tee_slave), ;);
entry = NULL;
while ((entry = av_dict_get(options, "bsfs", entry, AV_DICT_IGNORE_SUFFIX))) {
while ((entry = av_dict_get(options, "bsfs", NULL, AV_DICT_IGNORE_SUFFIX))) {
/* trim out strlen("bsfs") characters from key */
av_dict_set(&bsf_options, entry->key + 4, entry->value, 0);
av_dict_set(&options, entry->key, NULL, 0);