summaryrefslogtreecommitdiff
path: root/cmdutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmdutils.c')
-rw-r--r--cmdutils.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/cmdutils.c b/cmdutils.c
index 557e1a601f..36f82c94bf 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -1135,8 +1135,8 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
return AVERROR(EINVAL);
}
-AVDictionary *filter_codec_opts(AVDictionary *opts, AVCodec *codec,
- AVFormatContext *s, AVStream *st)
+AVDictionary *filter_codec_opts(AVDictionary *opts, enum CodecID codec_id,
+ AVFormatContext *s, AVStream *st, AVCodec *codec)
{
AVDictionary *ret = NULL;
AVDictionaryEntry *t = NULL;
@@ -1146,6 +1146,9 @@ AVDictionary *filter_codec_opts(AVDictionary *opts, AVCodec *codec,
const AVClass *cc = avcodec_get_class();
if (!codec)
+ codec = s->oformat ? avcodec_find_encoder(codec_id)
+ : avcodec_find_decoder(codec_id);
+ if (!codec)
return NULL;
switch (codec->type) {
@@ -1205,8 +1208,8 @@ AVDictionary **setup_find_stream_info_opts(AVFormatContext *s,
return NULL;
}
for (i = 0; i < s->nb_streams; i++)
- opts[i] = filter_codec_opts(codec_opts, avcodec_find_decoder(s->streams[i]->codec->codec_id),
- s, s->streams[i]);
+ opts[i] = filter_codec_opts(codec_opts, s->streams[i]->codec->codec_id,
+ s, s->streams[i], NULL);
return opts;
}