From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id CCE8F45CF4 for ; Sat, 3 Jun 2023 10:00:28 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1F50868C2E9; Sat, 3 Jun 2023 13:00:25 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8B4DB68BFD5 for ; Sat, 3 Jun 2023 13:00:18 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 844942404EC for ; Sat, 3 Jun 2023 12:00:17 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id Vihoc3SJhfJv for ; Sat, 3 Jun 2023 12:00:17 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id EDC96240177 for ; Sat, 3 Jun 2023 12:00:16 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id D06643A01C0 for ; Sat, 3 Jun 2023 12:00:09 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Sat, 3 Jun 2023 12:00:02 +0200 Message-Id: <20230603100002.28358-1-anton@khirnov.net> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavfi/graphparser: be more verbose when filtergraph parsing fails X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: When an option could not be found, print its name and value. Note that this is not done while applying the options in avfilter_graph_segment_apply_opts() to give the caller the option of handling the missing options in some other way. --- libavfilter/graphparser.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c index 9f8acea2ac..96ef6b15bf 100644 --- a/libavfilter/graphparser.c +++ b/libavfilter/graphparser.c @@ -851,6 +851,32 @@ fail: return ret; } +// print an error message if some options were not found +static void log_unknown_opt(const AVFilterGraphSegment *seg) +{ + for (size_t i = 0; i < seg->nb_chains; i++) { + const AVFilterChain *ch = seg->chains[i]; + + for (size_t j = 0; j < ch->nb_filters; j++) { + const AVFilterParams *p = ch->filters[j]; + const AVDictionaryEntry *e; + + if (!p->filter) + continue; + + e = av_dict_iterate(p->opts, NULL); + + if (e) { + av_log(p->filter, AV_LOG_ERROR, + "Could not set non-existent option '%s' to value '%s'\n", + e->key, e->value); + return; + } + } + } + +} + int avfilter_graph_segment_apply(AVFilterGraphSegment *seg, int flags, AVFilterInOut **inputs, AVFilterInOut **outputs) @@ -868,6 +894,8 @@ int avfilter_graph_segment_apply(AVFilterGraphSegment *seg, int flags, ret = avfilter_graph_segment_apply_opts(seg, 0); if (ret < 0) { + if (ret == AVERROR_OPTION_NOT_FOUND) + log_unknown_opt(seg); av_log(seg->graph, AV_LOG_ERROR, "Error applying filter options\n"); return ret; } @@ -909,8 +937,11 @@ int avfilter_graph_parse_ptr(AVFilterGraph *graph, const char *filters, goto end; ret = avfilter_graph_segment_apply_opts(seg, 0); - if (ret < 0) + if (ret < 0) { + if (ret == AVERROR_OPTION_NOT_FOUND) + log_unknown_opt(seg); goto end; + } ret = avfilter_graph_segment_init(seg, 0); if (ret < 0) @@ -988,6 +1019,9 @@ end: avfilter_graph_segment_free(&seg); if (ret < 0) { + av_log(graph, AV_LOG_ERROR, "Error processing filtergraph: %s\n", + av_err2str(ret)); + while (graph->nb_filters) avfilter_free(graph->filters[0]); av_freep(&graph->filters); -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".