[FFmpeg-devel] [PATCH 2/2] ffmpeg: add muxer AVoption support
Anssi Hannula
anssi.hannula
Wed Dec 29 05:54:15 CET 2010
---
cmdutils.c | 16 +++++++++++++++-
ffmpeg.c | 10 ++++++++++
2 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/cmdutils.c b/cmdutils.c
index b2e6ee0..b94de20 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;
diff --git a/ffmpeg.c b/ffmpeg.c
index 9491981..aaee87b 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -3912,6 +3912,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();
@@ -3953,6 +3954,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);
}
--
1.7.3
More information about the ffmpeg-devel
mailing list