[FFmpeg-devel] [PATCH] avfilter: Handle =help to show Filter options documentation
Michael Niedermayer
michaelni at gmx.at
Fri Mar 29 17:26:19 CET 2013
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
---
libavfilter/avfilter.c | 14 +++++++++++++-
libavfilter/avfilter.h | 1 +
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index 8a907dc..df7c84b 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -236,6 +236,9 @@ int avfilter_config_links(AVFilterContext *filter)
return AVERROR(EINVAL);
}
} else if ((ret = config_link(link)) < 0) {
+ if (link->src->help) {
+ av_opt_show2(&link->src->filter->priv_class, NULL, AV_OPT_FLAG_FILTERING_PARAM, 0);
+ } else
av_log(link->src, AV_LOG_ERROR,
"Failed to configure output pad on %s\n",
link->src->name);
@@ -279,6 +282,9 @@ int avfilter_config_links(AVFilterContext *filter)
if ((config_link = link->dstpad->config_props))
if ((ret = config_link(link)) < 0) {
+ if (link->dst->help) {
+ av_opt_show2(&link->dst->filter->priv_class, NULL, AV_OPT_FLAG_FILTERING_PARAM, 0);
+ } else
av_log(link->src, AV_LOG_ERROR,
"Failed to configure input pad on %s\n",
link->dst->name);
@@ -602,6 +608,7 @@ void avfilter_free(AVFilterContext *filter)
int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque)
{
int ret=0;
+ filter->help = args && !strncmp(args, "help", 4);
if (filter->filter->shorthand) {
av_assert0(filter->priv);
@@ -610,14 +617,19 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
av_opt_set_defaults(filter->priv);
ret = av_opt_set_from_string(filter->priv, args,
filter->filter->shorthand, "=", ":");
- if (ret < 0)
+ if (ret < 0) {
+ if(filter->help)
+ av_opt_show2(&filter->filter->priv_class, NULL, AV_OPT_FLAG_FILTERING_PARAM, 0);
return ret;
+ }
args = NULL;
}
if (filter->filter->init_opaque)
ret = filter->filter->init_opaque(filter, args, opaque);
else if (filter->filter->init)
ret = filter->filter->init(filter, args);
+ if(filter->help && ret<0)
+ av_opt_show2(&filter->filter->priv_class, NULL, AV_OPT_FLAG_FILTERING_PARAM, 0);
return ret;
}
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 455161f..7b5c0f7 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -522,6 +522,7 @@ struct AVFilterContext {
void *priv; ///< private data for use by the filter
struct AVFilterCommand *command_queue;
+ int help; ///< avfilter internal flag indicating that help text possibly was requested
};
/**
--
1.7.9.5
More information about the ffmpeg-devel
mailing list