Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libavfilter/graphparser.c')
-rw-r--r--libavfilter/graphparser.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c
index ebd9cc929c..d2d31653a9 100644
--- a/libavfilter/graphparser.c
+++ b/libavfilter/graphparser.c
@@ -349,6 +349,30 @@ static int parse_outputs(const char **buf, AVFilterInOut **curr_inputs,
#else
#define log_ctx NULL
#endif
+
+static int parse_sws_flags(const char **buf, AVFilterGraph *graph)
+{
+ char *p = strchr(*buf, ';');
+
+ if (strncmp(*buf, "sws_flags=", 10))
+ return 0;
+
+ if (!p) {
+ av_log(log_ctx, AV_LOG_ERROR, "sws_flags not terminated with ';'.\n");
+ return AVERROR(EINVAL);
+ }
+
+ *buf += 4; // keep the 'flags=' part
+
+ av_freep(&graph->scale_sws_opts);
+ if (!(graph->scale_sws_opts = av_mallocz(p - *buf + 1)))
+ return AVERROR(ENOMEM);
+ av_strlcpy(graph->scale_sws_opts, *buf, p - *buf + 1);
+
+ *buf = p + 1;
+ return 0;
+}
+
int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters,
AVFilterInOut **inputs,
AVFilterInOut **outputs)
@@ -358,6 +382,11 @@ int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters,
AVFilterInOut *curr_inputs = NULL, *open_inputs = NULL, *open_outputs = NULL;
+ filters += strspn(filters, WHITESPACES);
+
+ if ((ret = parse_sws_flags(&filters, graph)) < 0)
+ goto fail;
+
do {
AVFilterContext *filter;
filters += strspn(filters, WHITESPACES);