Deprecate av_opt_show() in favor of a new function av_opt_show2(),
[ffmpeg.git] / libavcodec / opt.c
index 128d95d..e3b2a0b 100644 (file)
@@ -319,12 +319,13 @@ int64_t av_get_int(void *obj, const char *name, const AVOption **o_out){
     return num*intnum/den;
 }
 
-static void opt_list(void *obj, void *av_log_obj, const char *unit)
+static void opt_list(void *obj, void *av_log_obj, const char *unit,
+                     int req_flags, int rej_flags)
 {
     const AVOption *opt=NULL;
 
     while((opt= av_next_option(obj, opt))){
-        if(!(opt->flags & (AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM)))
+        if (!(opt->flags & req_flags) || (opt->flags & rej_flags))
             continue;
 
         /* Don't print CONST's on level one.
@@ -383,22 +384,30 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit)
             av_log(av_log_obj, AV_LOG_INFO, " %s", opt->help);
         av_log(av_log_obj, AV_LOG_INFO, "\n");
         if (opt->unit && opt->type != FF_OPT_TYPE_CONST) {
-            opt_list(obj, av_log_obj, opt->unit);
+            opt_list(obj, av_log_obj, opt->unit, req_flags, rej_flags);
         }
     }
 }
 
-int av_opt_show(void *obj, void *av_log_obj){
+int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags)
+{
     if(!obj)
         return -1;
 
     av_log(av_log_obj, AV_LOG_INFO, "%s AVOptions:\n", (*(AVClass**)obj)->class_name);
 
-    opt_list(obj, av_log_obj, NULL);
+    opt_list(obj, av_log_obj, NULL, req_flags, rej_flags);
 
     return 0;
 }
 
+#if FF_API_OPT_SHOW
+int av_opt_show(void *obj, void *av_log_obj){
+    return av_opt_show2(obj, av_log_obj,
+                        AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0);
+}
+#endif
+
 /** Set the values of the AVCodecContext or AVFormatContext structure.
  * They are set to the defaults specified in the according AVOption options
  * array default_val field.