# HG changeset patch # User reimar # Date 1379778225 0 # Node ID 7bb6989c97b840de902075cbdc0834aeb5cc25a8 # Parent 4593e5141d8e44f468473dc2c93e6aa184705c1f Add support for ffmpeg's demuxer-specific options. diff -r 4593e5141d8e -r 7bb6989c97b8 libmpdemux/demux_lavf.c --- a/libmpdemux/demux_lavf.c Sat Sep 21 00:03:09 2013 +0000 +++ b/libmpdemux/demux_lavf.c Sat Sep 21 15:43:45 2013 +0000 @@ -508,6 +508,7 @@ } static demuxer_t* demux_open_lavf(demuxer_t *demuxer){ + AVDictionary *opts; AVFormatContext *avfc; AVDictionaryEntry *t = NULL; lavf_priv_t *priv= demuxer->priv; @@ -535,7 +536,7 @@ } if(opt_avopt){ - if(parse_avopts(avfc, opt_avopt) < 0){ + if(av_dict_parse_string(&opts, opt_avopt, "=", ",", 0) < 0){ mp_msg(MSGT_HEADER,MSGL_ERR, "Your options /%s/ look like gibberish to me pal\n", opt_avopt); return NULL; } @@ -563,10 +564,17 @@ avfc->pb = priv->pb; } - if(avformat_open_input(&avfc, mp_filename, priv->avif, NULL)<0){ + if(avformat_open_input(&avfc, mp_filename, priv->avif, &opts)<0){ mp_msg(MSGT_HEADER,MSGL_ERR,"LAVF_header: av_open_input_stream() failed\n"); return NULL; } + if (av_dict_count(opts)) { + AVDictionaryEntry *e = NULL; + while ((e = av_dict_get(opts, "", e, AV_DICT_IGNORE_SUFFIX))) + mp_msg(MSGT_HEADER,MSGL_ERR,"Unknown option %s\n", e->key); + return 0; + } + av_dict_free(&opts); priv->avfc= avfc;