aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2012-04-27 10:42:46 +0200
committerNicolas George <nicolas.george@normalesup.org>2012-05-14 21:29:58 +0200
commit440af105f2306d3c7b3b3f4d7530bab910d49cb9 (patch)
tree9bcffc765646a1550b960c4b472af07d3f94ef04
parent7e944159c63c4d4504cf76f90bb668519c3109af (diff)
downloadffmpeg-440af105f2306d3c7b3b3f4d7530bab910d49cb9.tar.gz
lavfi: add avfilter_graph_set_auto_convert().
-rw-r--r--libavfilter/avfiltergraph.c13
-rw-r--r--libavfilter/avfiltergraph.h17
-rw-r--r--libavfilter/version.h4
3 files changed, 32 insertions, 2 deletions
diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 6e803d6a55..3bc10f9586 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -95,6 +95,11 @@ fail:
return ret;
}
+void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags)
+{
+ graph->disable_auto_convert = flags;
+}
+
int ff_avfilter_graph_check_validity(AVFilterGraph *graph, AVClass *log_ctx)
{
AVFilterContext *filt;
@@ -160,6 +165,14 @@ static int insert_conv_filter(AVFilterGraph *graph, AVFilterLink *link,
char inst_name[32];
AVFilterContext *filt_ctx;
+ if (graph->disable_auto_convert) {
+ av_log(NULL, AV_LOG_ERROR,
+ "The filters '%s' and '%s' do not have a common format "
+ "and automatic conversion is disabled.\n",
+ link->src->name, link->dst->name);
+ return AVERROR(EINVAL);
+ }
+
snprintf(inst_name, sizeof(inst_name), "auto-inserted %s %d",
filt_name, auto_count++);
diff --git a/libavfilter/avfiltergraph.h b/libavfilter/avfiltergraph.h
index b003795750..7e47566129 100644
--- a/libavfilter/avfiltergraph.h
+++ b/libavfilter/avfiltergraph.h
@@ -43,6 +43,8 @@ typedef struct AVFilterGraph {
AVFilterLink **sink_links;
int sink_links_count;
+
+ unsigned disable_auto_convert;
} AVFilterGraph;
/**
@@ -84,6 +86,21 @@ int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt,
AVFilterGraph *graph_ctx);
/**
+ * Enable or disable automatic format conversion inside the graph.
+ *
+ * Note that format conversion can still happen inside explicitly inserted
+ * scale and aconvert filters.
+ *
+ * @param flags any of the AVFILTER_AUTO_CONVERT_* constants
+ */
+void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags);
+
+enum {
+ AVFILTER_AUTO_CONVERT_ALL = 0, /**< all automatic conversions enabled */
+ AVFILTER_AUTO_CONVERT_NONE = -1, /**< all automatic conversions disabled */
+};
+
+/**
* Check validity and configure all the links and formats in the graph.
*
* @param graphctx the filter graph
diff --git a/libavfilter/version.h b/libavfilter/version.h
index 82817a7115..05318047f4 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -29,8 +29,8 @@
#include "libavutil/avutil.h"
#define LIBAVFILTER_VERSION_MAJOR 2
-#define LIBAVFILTER_VERSION_MINOR 72
-#define LIBAVFILTER_VERSION_MICRO 105
+#define LIBAVFILTER_VERSION_MINOR 73
+#define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \