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; ipriv_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); }