aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-08-04 13:32:11 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-08-04 13:33:44 +0200
commit7d03732f7e6018c87cc30e2cedb9bd9f7d7e43d7 (patch)
tree555c92edcc1ca7d172e90cbebc45d715be249409
parent22a0249debb1b7dceee4820b6c067be3a7e88ccc (diff)
downloadffmpeg-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.c9
-rw-r--r--ffmpeg.h1
-rw-r--r--ffmpeg_opt.c1
3 files changed, 11 insertions, 0 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 1c1a5599d0..8dd9c08452 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -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;
diff --git a/ffmpeg.h b/ffmpeg.h
index 30890a0ee8..06ef13243a 100644
--- a/ffmpeg.h
+++ b/ffmpeg.h
@@ -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 */