]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blobdiff - cmdutils.c
Fix opt_default(), making it exit immediately in case of an invalid
[frescor/ffmpeg.git] / cmdutils.c
index f52f56e7e2b5c7e72ef11d5d2571aec0bf370ec2..9639fef8e419bba4d8a46954e3e83670d214f49e 100644 (file)
@@ -176,25 +176,30 @@ unknown_opt:
 
 int opt_default(const char *opt, const char *arg){
     int type;
+    int ret= 0;
     const AVOption *o= NULL;
     int opt_types[]={AV_OPT_FLAG_VIDEO_PARAM, AV_OPT_FLAG_AUDIO_PARAM, 0, AV_OPT_FLAG_SUBTITLE_PARAM, 0};
 
-    for(type=0; type<CODEC_TYPE_NB; type++){
+    for(type=0; type<CODEC_TYPE_NB && ret>= 0; type++){
         const AVOption *o2 = av_find_opt(avctx_opts[0], opt, NULL, opt_types[type], opt_types[type]);
         if(o2)
-            o = av_set_string2(avctx_opts[type], opt, arg, 1);
+            ret = av_set_string3(avctx_opts[type], opt, arg, 1, &o);
     }
     if(!o)
-        o = av_set_string2(avformat_opts, opt, arg, 1);
+        ret = av_set_string3(avformat_opts, opt, arg, 1, &o);
     if(!o)
-        o = av_set_string2(sws_opts, opt, arg, 1);
+        ret = av_set_string3(sws_opts, opt, arg, 1, &o);
     if(!o){
         if(opt[0] == 'a')
-            o = av_set_string2(avctx_opts[CODEC_TYPE_AUDIO], opt+1, arg, 1);
+            ret = av_set_string3(avctx_opts[CODEC_TYPE_AUDIO], opt+1, arg, 1, &o);
         else if(opt[0] == 'v')
-            o = av_set_string2(avctx_opts[CODEC_TYPE_VIDEO], opt+1, arg, 1);
+            ret = av_set_string3(avctx_opts[CODEC_TYPE_VIDEO], opt+1, arg, 1, &o);
         else if(opt[0] == 's')
-            o = av_set_string2(avctx_opts[CODEC_TYPE_SUBTITLE], opt+1, arg, 1);
+            ret = av_set_string3(avctx_opts[CODEC_TYPE_SUBTITLE], opt+1, arg, 1, &o);
+    }
+    if (o && ret < 0) {
+        fprintf(stderr, "Invalid value '%s' for option '%s'\n", arg, opt);
+        exit(1);
     }
     if(!o)
         return -1;