From e755954a84c96d7344e12ce6e798660d8bf261ea Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 8 Aug 2015 12:44:25 +0200 Subject: [PATCH] ffplay: pass all sws options to the filter graph Signed-off-by: Michael Niedermayer --- ffplay.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ffplay.c b/ffplay.c index 67cf9ea6cc..7e673f0cd8 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1787,15 +1787,23 @@ fail: static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const char *vfilters, AVFrame *frame) { static const enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }; - char sws_flags_str[128]; + char sws_flags_str[512] = ""; char buffersrc_args[256]; int ret; AVFilterContext *filt_src = NULL, *filt_out = NULL, *last_filter = NULL; AVCodecContext *codec = is->video_st->codec; AVRational fr = av_guess_frame_rate(is->ic, is->video_st, NULL); + AVDictionaryEntry *e = NULL; + + while ((e = av_dict_get(sws_dict, "", e, AV_DICT_IGNORE_SUFFIX))) { + if (!strcmp(e->key, "sws_flags")) { + av_strlcatf(sws_flags_str, sizeof(sws_flags_str), "%s=%s:", "flags", e->value); + } else + av_strlcatf(sws_flags_str, sizeof(sws_flags_str), "%s=%s:", e->key, e->value); + } + if (strlen(sws_flags_str)) + sws_flags_str[strlen(sws_flags_str)-1] = '\0'; - av_opt_get_int(sws_opts, "sws_flags", 0, &sws_flags); - snprintf(sws_flags_str, sizeof(sws_flags_str), "flags=%"PRId64, sws_flags); graph->scale_sws_opts = av_strdup(sws_flags_str); snprintf(buffersrc_args, sizeof(buffersrc_args),