diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-08-04 13:32:11 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-08-04 13:33:44 +0200 |
commit | 7d03732f7e6018c87cc30e2cedb9bd9f7d7e43d7 (patch) | |
tree | 555c92edcc1ca7d172e90cbebc45d715be249409 | |
parent | 22a0249debb1b7dceee4820b6c067be3a7e88ccc (diff) | |
download | ffmpeg-7d03732f7e6018c87cc30e2cedb9bd9f7d7e43d7.tar.gz |
ffmpeg: Do not fail if a demuxer and decoder use the same option identifer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | ffmpeg.c | 9 | ||||
-rw-r--r-- | ffmpeg.h | 1 | ||||
-rw-r--r-- | ffmpeg_opt.c | 1 |
3 files changed, 11 insertions, 0 deletions
@@ -532,6 +532,15 @@ static void ffmpeg_cleanup(int ret) term_exit(); } +void remove_avoptions(AVDictionary **a, AVDictionary *b) +{ + AVDictionaryEntry *t = NULL; + + while ((t = av_dict_get(b, "", t, AV_DICT_IGNORE_SUFFIX))) { + av_dict_set(a, t->key, NULL, AV_DICT_MATCH_CASE); + } +} + void assert_avoptions(AVDictionary *m) { AVDictionaryEntry *t; @@ -502,6 +502,7 @@ void show_usage(void); void opt_output_file(void *optctx, const char *filename); +void remove_avoptions(AVDictionary **a, AVDictionary *b); void assert_avoptions(AVDictionary *m); int guess_input_channel_layout(InputStream *ist); diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index 99182e0914..9604a6a5d5 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -872,6 +872,7 @@ static int open_input_file(OptionsContext *o, const char *filename) print_error(filename, err); exit_program(1); } + remove_avoptions(&o->g->format_opts, o->g->codec_opts); assert_avoptions(o->g->format_opts); /* apply forced codec ids */ |