diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2012-04-27 10:42:46 +0200 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2012-05-14 21:29:58 +0200 |
commit | 440af105f2306d3c7b3b3f4d7530bab910d49cb9 (patch) | |
tree | 9bcffc765646a1550b960c4b472af07d3f94ef04 | |
parent | 7e944159c63c4d4504cf76f90bb668519c3109af (diff) | |
download | ffmpeg-440af105f2306d3c7b3b3f4d7530bab910d49cb9.tar.gz |
lavfi: add avfilter_graph_set_auto_convert().
-rw-r--r-- | libavfilter/avfiltergraph.c | 13 | ||||
-rw-r--r-- | libavfilter/avfiltergraph.h | 17 | ||||
-rw-r--r-- | libavfilter/version.h | 4 |
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, \ |