From patchwork Sun Mar 31 05:31:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47679 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f96:b0:1a3:b6bb:3029 with SMTP id mm22csp94376pzb; Sat, 30 Mar 2024 22:31:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUZg4f/3r60ImaXBRe5xxtq68A035E2gaOwSaAcaHQsJ2wRj5SChMH/pdfoK4aoEaPVGFGeY+yUGvnanOaexyLSKzjYj7tbwWksEw== X-Google-Smtp-Source: AGHT+IEkoYNWHOHKiPFbvFLM3akK1Pac5AZ8C/GqXrHr8TYhPZxkNfFs7js6vlMdhP9Acz2GFE6i X-Received: by 2002:a2e:9ad0:0:b0:2d8:1276:33bb with SMTP id p16-20020a2e9ad0000000b002d8127633bbmr375143ljj.18.1711863117572; Sat, 30 Mar 2024 22:31:57 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ku16-20020a170907789000b00a46b8c85631si3410417ejc.1014.2024.03.30.22.31.57; Sat, 30 Mar 2024 22:31:57 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=UmR4dbqq; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B43FD68CC2A; Sun, 31 Mar 2024 08:31:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03olkn2013.outbound.protection.outlook.com [40.92.57.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6B72A68CAED for ; Sun, 31 Mar 2024 08:31:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ea6GvBQ58IWQwi/2niY0TPtgUVw0Q8v9G92tNMNi8HjICqfKRbjkMAAV8hFgTjOoMmIX0u/UWDcKDJ2QPJR8WSmzhkuc4k75I4Z6Myss8NAu1RYkUfSSScSdj+oAm6qRKkLkgdkRlzxQ4eosvW/TXJ+QqcoyWTZzXLbc1bgX6FkQO+AG0XgnYQDvwHU6D5PHfv8KGuRSx1HrvrCH5xfhymIm79DJADXx84WF8WrLeH84tYNFiJ3Y0Y8cz3Aq8K4iSfpdirCnq/57yVaLwnP4H6rzsLY/1NeBGz8IOW+qm8zLzcLvZ/2dJIfKZGnsf5yOlR7DaLnvdBb/oMEjEDT2Xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ctM7zu3t+z+VJFORCJnAfCwkHClflSuyYVaHdTut4iM=; b=XZe7D/j7XcqklPoz/gnEDEZFuEn4z08zwPN0uNCD+1uSthhrOEAowXx7D/yn5UnvrqMxaooMo0WgYCacv23UGWgDiVSS+n1ZBWpKSjGDU27IhFdn87Fx4bockcjW9Ktvml16Mh81nynNPWOaXIAawdC0w6Pb9LxyB7kvGKDWzb/ZnTHfGGy7FacqJPJmjGIbLnmycp6CWTvHwMc3S5OVDKgb+3PWUs3KqyAMXIScoZLvk5qbhu/arwc9YvsYRR7sGoXuFRa3yXIOGBKycIOzBoZtd+bvE/BeWQ6oVOzCL1SeRsZNJtOyS7G46FokOGfh38rmrGFv4jk8HleIXHYBhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ctM7zu3t+z+VJFORCJnAfCwkHClflSuyYVaHdTut4iM=; b=UmR4dbqqqcWP7lmMQ9UCX4LcAhBNnFQpP4YulGi8AHx+YGI9KTE/vR8mYaoFXZNhrKtYOoRvdOjVC8zFix4p+el7PvLPI7TbrZbTcjC1naOaYnck4oRTYShFt5775cY5gOxlMnPlp9raIm3iV8704KZZwXxwqGhby3W0LmQcbJmAppAvLzjh9GDLQK7hu+et3tBPzoN10C6s/WB+Rdr1g6lKos3hBTfuug7A2EQTIrUp82axE0JkSsptl1CKI8D3KWa0vouYF+tEJJpVXZqJGqz2jc5/cRQ6nbfvhNqSALaaVE+RT/IzcecWtJGaN24MfNtJKd5Y/q9HeHIg9WDjeA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0416.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.43; Sun, 31 Mar 2024 05:31:35 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.042; Sun, 31 Mar 2024 05:31:35 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 31 Mar 2024 07:31:17 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [fvyquOP0gdIhbmorun9UK38/tjTHbsRMcUN5rP/vjo4=] X-ClientProxiedBy: ZR2P278CA0020.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:46::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240331053123.293740-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0416:EE_ X-MS-Office365-Filtering-Correlation-Id: 8676e81f-0af6-49cd-f6ea-08dc5143d4c5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /omF3Zd+LmIXr1dbIK0AlFea+AJZRGP3PwLxk4SoKgkrG8Cd1D1EgqHTXJ3bzsytBbkMkNHblXKtvYuoQm41Bx4QHKgwBQuiXSkJ5G4hFRNAphmrxzFtC9fK5TZXZ18l1DVHgOS5nLH42vBQM7YjT6WtNQP7r6YhHMdU7iC+rdqGCWNqlDeuBO5SCJsNWdohZweAxC78CTx87t6o8QTenf86i/MY4R+xj/y+A09Vf+1EUlISRU5N+YB1UVZ/hU1Hd2yjxSRSmz/meJSG21pKs+D7K6iBnzrJxgr1KeWwUb9zAtsk9g8RSyH2Z7NPnPxS6Y5hu0qE9cr67KeCgDxeKjD0jUAVwCZ64n9Uwec6ZW9q9cNXzJ2P02GyofG39XKokil0LiGjKwU5Rp7lAnF/FyVCVwb9prxDdf+Xlh/RQBWh0sQ0m9b1SV6IEjmbuzMDErCLperWdn3OoKV0jPXJZiqZyehJusNm6tU7uk+OIH0srNL3aZsz1YhDEzT8BkqBvjAZSrLnnL59NGdnYSofz5ikWttJ1LBGDwRpa4rNHg2iN1y0bA7OxCjzTf2/NHzbAB0SqiKitd19ncVb9EEE10mY7CbamfTv6/Cj+g5zUBRaU0yLKw7hTBofjmDG8Lov X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0vGYkP9eE2XCndOL1KaFNuc+sDps/K2QfHnEdMk1nwFmD4QmkJ4t/cwWUKj1eqy+FVtvnJbfjVIvHkyLAsM/wFviEzNFY3wUcLaNfeCIEYqOHFW8h3FfpkknXQHEflUWUeftWOmcnCcGF2PVcSaYamn8b+PooosWBGtK/hu+QrpAfQTkCoDdULQYXY0zmgoJxvbVp+L0Tm1m5A+bCJqRCKO+yrOL+5qAkR30jzFdQ2Q3fqgnpRec0fv58Z7whpXrBLrMCljzSiy4+pcNluXO4Ya1Lh/bm3AiiGKdHrldqxriqOebqkuIZn7oBxumpgAmb+/syEA6Cj2+uDDByHWnWAoJfxiMWE5ppAQtv76znwpTWVUQqlQkP+Iv1PCWsh2lZxrFzNWxyjBaMlK1CtJsGrUTLQsnzB1mZJJ8i0VCtz5BqS6f4l4zqKn3JsK28NVtfs/Lcr6qbsH7l2SGNkI0yUbLVB9+kR9sOyC3406TibUT4jKdBzegcn0M06Rm57ajPeD7PEFQG9Hz8PDwY7VHC1S86kzwGkYOIdBmaXMgIRNKjBjIyK+7/ZuI82FWrOJDzp6Y1xB6CjS2kSJecMcu4NvezdJmlFwHn3ovPCTgHp5cVUDq8yTgj4sCAxtaTgy6pHr0Sx9PrB3M1BvnmtqJtrLSSFPThYHP5AZ/yXsbWu+0bGgkm8ij0kNJ7T5VDHKiigGctn0PDJaCJbZanUlNzexazRDiAiYY0avIXid6WUXdNakdrJY3xRm4YZL/ILS1V5+yejLtGXv4oK1iyuELZsxB4Ig44nkYSbQY7oZYDqMIaUPCXuRQMaYLOdTWdtGxgGBoLah3FdlJ3gjNDAfZrbWxWT/jP0I89Z/u0KfhJpYUlOU1qnbkfJKyM8l/Tf16VyJt43uQ6sD/1K7VTuqcqEVXeEpsmINjor3N98OAez8AMLFJdutLoF1mBgEca3JtEdTpqh95ffpshwPnsxZ977DPwoveD2f+hAlvuG+c7DJp3CQ0MMjlKe2SIQQVFeuoHR26rASrd9U1Akn6J+9UKGuYsFT7OQXxz3otgdpodPxn/lWqN+xtxvAnrl2dPuQr0HDYUh/Jw98zVJBHK+PIxRDZJu6pIC/J5Vfxu7hNEBbaK04T7Wsk5xi+ejunYBwYjBQHf0n7n63+CBVmKDNJpw9MYdd0/GdDlzg2JObh0m0fw+iR2X+zRUu/GpGffuDe8N3SkRY/gZKKVsIbBp1nw4qFnGtLtlozIPSBg+Q/vSJoP32m0tVJluh9X8O1Tgfpbu5xB23aiu0nENq+sCs+IQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8676e81f-0af6-49cd-f6ea-08dc5143d4c5 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Mar 2024 05:31:35.6048 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4P250MB0416 Subject: [FFmpeg-devel] [PATCH 04/10] avfilter/avfilter: Honour the short options documentation 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: iwQBfmHi9dgG The documentation for filter arguments states that short options must precede long options (i.e. those of the form key=value). Yet if process_options() encounters arguments not abiding by this, it simply treats short options after a long option as if it were parsing short options for the first time. In particular, it overwrites options already set earlier, possibly via other short options. This is not how it is intended (as a comment in the code indicates). This commit modifies the code to reject further shorthand options after a long option has been encountered. After all, avfilter_init_str() errors out upon unrecognized options, so it is intended to be picky. Signed-off-by: Andreas Rheinhardt --- libavfilter/avfilter.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 508fe1b26b..21d6832deb 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -846,9 +846,7 @@ int ff_filter_opt_parse(void *logctx, const AVClass *priv_class, const char *shorthand = NULL; int additional_flags = 0; - if (priv_class) - o = av_opt_next(&priv_class, o); - if (o) { + if (priv_class && (o = av_opt_next(&priv_class, o))) { if (o->type == AV_OPT_TYPE_CONST || o->offset == offset) continue; offset = o->offset; @@ -871,9 +869,7 @@ int ff_filter_opt_parse(void *logctx, const AVClass *priv_class, if (parsed_key) { key = parsed_key; additional_flags = AV_DICT_DONT_STRDUP_KEY; - /* discard all remaining shorthand */ - if (priv_class) - while ((o = av_opt_next(&priv_class, o))); + priv_class = NULL; /* reject all remaining shorthand */ } else { key = shorthand; }