diff options
author | Anssi Hannula <anssi.hannula@iki.fi> | 2011-01-02 16:00:47 +0000 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at> | 2011-01-02 16:00:47 +0000 |
commit | ef2b2243dc1e258e77dac6d702d3c1ec1b2bcc6f (patch) | |
tree | f869e6ea83add24ff4fd7ed1fd93592a13fe579b | |
parent | 815495f0405d929b522ff948584ecd1de3662487 (diff) | |
download | ffmpeg-ef2b2243dc1e258e77dac6d702d3c1ec1b2bcc6f.tar.gz |
Use AVOption for muxers in ffmpeg.
Patch by Anssi Hannula, anssi d hannula d iki d fi
Originally committed as revision 26199 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | cmdutils.c | 16 | ||||
-rw-r--r-- | ffmpeg.c | 10 |
2 files changed, 25 insertions, 1 deletions
diff --git a/cmdutils.c b/cmdutils.c index 5e4b716891..a48d0c35c9 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -241,12 +241,20 @@ int opt_default(const char *opt, const char *arg){ } if (!o) { AVCodec *p = NULL; + AVOutputFormat *oformat = NULL; while ((p=av_codec_next(p))){ AVClass *c= p->priv_class; if(c && av_find_opt(&c, opt, NULL, 0, 0)) break; } - if(!p){ + if (!p) { + while ((oformat = av_oformat_next(oformat))) { + const AVClass *c = oformat->priv_class; + if (c && av_find_opt(&c, opt, NULL, 0, 0)) + break; + } + } + if(!p && !oformat){ fprintf(stderr, "Unrecognized option '%s'\n", opt); exit(1); } @@ -322,7 +330,13 @@ void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec) if(codec && codec->priv_class && avctx->priv_data){ priv_ctx= avctx->priv_data; } + } else if (!strcmp("AVFormatContext", (*(AVClass**)ctx)->class_name)) { + AVFormatContext *avctx = ctx; + if (avctx->oformat && avctx->oformat->priv_class) { + priv_ctx = avctx->priv_data; + } } + for(i=0; i<opt_name_count; i++){ char buf[256]; const AVOption *opt; @@ -3904,6 +3904,7 @@ static void show_usage(void) static void show_help(void) { AVCodec *c; + AVOutputFormat *oformat = NULL; av_log_set_callback(log_callback_help); show_usage(); @@ -3945,6 +3946,15 @@ static void show_help(void) av_opt_show2(avformat_opts, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0); printf("\n"); + + /* individual muxer options */ + while ((oformat = av_oformat_next(oformat))) { + if (oformat->priv_class) { + av_opt_show2(&oformat->priv_class, NULL, AV_OPT_FLAG_ENCODING_PARAM, 0); + printf("\n"); + } + } + av_opt_show2(sws_opts, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0); } |