From patchwork Thu Nov 18 09:13:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 31485 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp503401iob; Thu, 18 Nov 2021 01:14:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJyyyLzvEcn+zc9QwPHZezKpTXvQ46pFMSckXG/y7XciXyFd57hf3KIfCCkiGnkSVd0WQqX9 X-Received: by 2002:a17:906:9753:: with SMTP id o19mr32099943ejy.513.1637226856510; Thu, 18 Nov 2021 01:14:16 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h18si7412989edb.191.2021.11.18.01.14.16; Thu, 18 Nov 2021 01:14:16 -0800 (PST) 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=ChEt47KC; 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 3024268AF2C; Thu, 18 Nov 2021 11:14:13 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2057.outbound.protection.outlook.com [40.92.90.57]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 88C7968AE8D for ; Thu, 18 Nov 2021 11:14:06 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PFNA0NVXKOs0WH5H+XwmVfb0wghIGNrAzLzezg+e/ZtxCRrJG9s6QeK19BlvJ8H0/2RxPM2ycIm1inwyYSdN9FvWVYKVPszJn0yKsAkyYLcdgnAzRUNaGiwFJqo1dp4WlRWpKgCPGrVmwR7mVcZA3CuwOKQARgWvaCTaiDhAWr3buntwZezyeqKNLmYuaJ/k9IFCiqrNekcRpCf+bCFKL/yuQ1WLbjTi8Y2WgATJUCHdwli0OD0nGaWa3Glq5qQlEd9wvfageQYCtUPCi/qDB3ISBi4wNAkSADMAsZlhxT/opWRveUDTtTDB9ssQATl2cIqrg7FZ5AnZqjyRyMmOlQ== 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=0XiiABbgJWIHot8UeHgThYtuk216nofeowvKYp0+fwQ=; b=C6lp8yyAiv7zgfXKEFkuorkMczFGYtzoqXDMRVEz8SZ/si/U3W4D+hLczNrG4q7oO8kCyFOcuugq6JTCQzx5rHgy61TY0sP9Az2TmrxsSqCDXL/Zyura6Yx/n45RbSrG4SUCG892yPik0QpnEyUXGU5v/2zNrYiqwn7CANfsfIZVvSHfABKN20oAAV5BtdZvj90RtsZHd+Zl9UU3ecl6JOmyu6pcMEb0J5Y8T70NGTcMUe0o9jLX/G/ovGI8+YLimz3Q/LsaBglQBrYnC7/FJTEN+7Ecn47LMXbGp5G9IthXYEQ9Q+5o1pGT+zkfz93x0GDcDDu7Wq3+9I2DVb9URg== 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=0XiiABbgJWIHot8UeHgThYtuk216nofeowvKYp0+fwQ=; b=ChEt47KCUbt6kBzYEgrG9Fcg2n/Vhg7BTeC1X2bG+vIE5yotz6rVfQ68wUS+OQPmMv3u1KPG97r/k9mAhtwGXekTIHAUjzHqWQYhiSt2ejh/Jsii2DFj/nK3ApkszhP+cFLLJxLhyvBqiOUZnUQ9sr9cYlje/ZpJ9qiyV8D1u3dqY2HsrXL0v5wqq2tcKyP3vwtGtL8NQ5EPvtA1Jh5rx9k60BvyWormAHS9IVb7Bbvn6crE94gj2whKAxLh5OnHTZcJqoYnVMz8YPiSjKpWJhoYuHzx/meYM6Cja348zJLG8/jCXEC+hTtBnWCuhcQx41zrKrS50drbyxfoNQ8Vyw== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB3862.eurprd03.prod.outlook.com (2603:10a6:20b:17::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.26; Thu, 18 Nov 2021 09:14:05 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::700f:d70b:3bb8:4d51]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::700f:d70b:3bb8:4d51%9]) with mapi id 15.20.4713.021; Thu, 18 Nov 2021 09:14:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 18 Nov 2021 10:13:55 +0100 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [FeEjJ1DTXgVLsXb+k1Mkkz/uJnF47cHS] X-ClientProxiedBy: AM4PR0302CA0004.eurprd03.prod.outlook.com (2603:10a6:205:2::17) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211118091357.223580-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.137.12) by AM4PR0302CA0004.eurprd03.prod.outlook.com (2603:10a6:205:2::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4713.19 via Frontend Transport; Thu, 18 Nov 2021 09:14:04 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a050ad14-2773-433e-a01d-08d9aa73c4da X-MS-Exchange-SLBlob-MailProps: 3tYrFWTD79D5n4X4KQGPxo/zYNsPoVHWmR0hzH0BsXP/MEABG9yQEnByY3qoHH+7n5A/YAh/tZ1Cw5psNyre7Y2M48IUd9+SYOl9rfxxd1YXAQg73z2gAJawnC1xg6Lk/r8cZ9VDfks377QzsuFhsrBNLop8DX2gzWHj85Cb5A7zSi9Zsb70ZdHWmyRVS2fGrzYnrhyiED8b1+9lG6Uipd/oB4B5G08T++DJYuEZJXkuG0cXXeopAdV4LujbChQqhpeQcZYFIYXhBbVtN8082uKCPBE8R/FIvvCf/VVLMkC7vSAUGVfcteWXnFMrggLtiembwTjrcfdJTmFG7IPaObhn2fweL2cIf+Lui2E+mt0PxJmbNtYT2fLuyEXVOLJLBNgwrgutdiyvSCZYzb5cScZkVRW3pv8G6gKafXPgXa9XUi3VVPkXegxFN9DQrZgXEB7R5m9ZOtexZmoeYupcS6hsSVW6bxdnPstCrRV5VfIAvIxs62ar/Q0FFLdrogN3RDeA9btvNocHn70ClzDYtuKerFHKJixbmsKgw50evJmHi5kBx2MU+JibqhY9oQ73Aaq3nvz0APLENrhI5xn5fUMnehFFtvPIdSeqH6aVAWWbMryrWeaiIQhLmwT4ZYfPj9Ysqm9UkAmOQ5tUOOaoIn9FIgxBY+hqNWzMDPQDbzoRcWHOxhBc/R5LB5J3XUBJrR84FK/eqXVifDdNmHQG2VzGdQ/qpdF4HjVLa43x/i77EaIWwTzs+bdUgBh8mtWrOInrFYADLU1It+YFRAKS3AA0IZHw73F+ X-MS-TrafficTypeDiagnostic: AM6PR03MB3862: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iUwrn3L3nRoXX5P+dSKW/aGKXD/e9RpJmbZkaLvEBeHmMQFNIOJO7tHAumxJ9OEQxdW5roKS57VOAvapKGg646SxJ5VjRKWWrkLJF5nNLBF73o15c9pE5JjoaxAZ8mkSUCUuhm+7fGmsIh9LG9CBOXwaJbxHsxzkUgXhByWBRzSFV6XxyBlAhaLTPmTIgBcibmbE2HTb9tjoe+hC9OpTwUQug0j86OkGOdEMw9hQM8kQZTzdsK1Ql9fGbA012d5WsKtE5jv2c/OmVdmxueTxJqDXzsjIBERX1HNuVWyFMRWZ/J/cmikct8mPrCDd6FL+1K2VQRhzSA6/37aDDBIi+GxfstzqO3PcIhudqxmQh0+X6PWz/Z1yxdy9czvBRhXHXRUIBREL5aBPUseL1K83dhcFf2sFU7EHZCGVoLlmmZfcj6ibZQ91In8EFeobg05mNefx3stNFsvWdlyIW2PyXzq4W9yG0u/aJkQ4v6GAZrsGHweeAmeXdapQu3zsAPU3V8/0/Rp8XNe5yI82oMRnr4lhX977o8hAFiLPgfGq1Ho= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IVScK46CT6xuteL5Ci/fx/UftBT9KBE3Svu5n+qDtEjPs1y/XZCDKZ4b8lRNSfQrn6LnjC/gKeAa17CQ+eVDV1Vz5UMJ+e+hwlEnos4enSl3lofZ6HjLANqUItBSmrnA/5LN2bMEAh3Uq9feYxLfzi1lbUFm9WIwJvjqh8LcBhzDtkaTaBcBfTRhIVPPuq0xBWYcGFC4KABNl/KxAW62mr+uCrI27rYx1GJAeR0qPmfQZgOcADGP2QfXlcy3KVou5A3Q2sEVRQHjljIEA3dgA3rMy+CogsrkRvhynO3iJArk2i6DJeVNBcelGg7ad+QByHd5MMl/yGhcc9m/9/joOyVOYp3+cEa1vYh0WVnJWhwcM86aX6vDj432u/nlof7mzLuqX8z+q1B78FklIm91CvRj8giJd3QsZZTaW0sj2lnvW6rb7GkQE/yPBLd5mZX/TSQB3cPpwsXKAJGa+dIa7hUm9J22OsW+i4RnbaOeH2/T9bOmj4xzJ7BA8V1GkELmmJqUiVXXirFyZrk8Txf9Wvgxww6uONHE7sN3nbi/d+1UfF6zKGkbaCMRTbriq8gm3BClJ7btanhdn3JDd9NLrK0IUOEfl3WpeJEeSWi20VVYqw7QulNTXEMSjFPLGRjS+Pmh878QCIH1jxTfEa96Dp4ALcVkaiM9VP5JY4xWQwBjNOR/dPklvXbXBDWgr+zf9yos2kO2Ww4tM3bKJ8t9sg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a050ad14-2773-433e-a01d-08d9aa73c4da X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2021 09:14:05.3564 (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: AM6PR03MB3862 Subject: [FFmpeg-devel] [PATCH 2/4] avformat/utils: Remove duplicated AV_DISPOSITION_FOO <-> "foo" table 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: XRcCd/pup8KE Instead reuse stream_options. Signed-off-by: Andreas Rheinhardt --- If one used a named variable for the AVOption.unit values, one could simplify the check in option_is_disposition() to a pointer comparison. libavformat/utils.c | 39 +++++++++++---------------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 6eac3f721e..7840e8717c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1985,34 +1985,17 @@ void ff_format_set_url(AVFormatContext *s, char *url) s->url = url; } -static const struct { - const char *str; - int disposition; -} dispositions[] = { - { "default", AV_DISPOSITION_DEFAULT }, - { "dub", AV_DISPOSITION_DUB }, - { "original", AV_DISPOSITION_ORIGINAL }, - { "comment", AV_DISPOSITION_COMMENT }, - { "lyrics", AV_DISPOSITION_LYRICS }, - { "karaoke", AV_DISPOSITION_KARAOKE }, - { "forced", AV_DISPOSITION_FORCED }, - { "hearing_impaired", AV_DISPOSITION_HEARING_IMPAIRED }, - { "visual_impaired", AV_DISPOSITION_VISUAL_IMPAIRED }, - { "clean_effects", AV_DISPOSITION_CLEAN_EFFECTS }, - { "attached_pic", AV_DISPOSITION_ATTACHED_PIC }, - { "timed_thumbnails", AV_DISPOSITION_TIMED_THUMBNAILS }, - { "captions", AV_DISPOSITION_CAPTIONS }, - { "descriptions", AV_DISPOSITION_DESCRIPTIONS }, - { "metadata", AV_DISPOSITION_METADATA }, - { "dependent", AV_DISPOSITION_DEPENDENT }, - { "still_image", AV_DISPOSITION_STILL_IMAGE }, -}; +static int option_is_disposition(const AVOption *opt) +{ + return opt->type == AV_OPT_TYPE_CONST && + opt->unit && !strcmp(opt->unit, "disposition"); +} int av_disposition_from_string(const char *disp) { - for (int i = 0; i < FF_ARRAY_ELEMS(dispositions); i++) - if (!strcmp(disp, dispositions[i].str)) - return dispositions[i].disposition; + for (const AVOption *opt = stream_options; opt->name; opt++) + if (option_is_disposition(opt) && !strcmp(disp, opt->name)) + return opt->default_val.i64; return AVERROR(EINVAL); } @@ -2024,9 +2007,9 @@ const char *av_disposition_to_string(int disposition) return NULL; val = 1 << ff_ctz(disposition); - for (int i = 0; i < FF_ARRAY_ELEMS(dispositions); i++) - if (dispositions[i].disposition == val) - return dispositions[i].str; + for (const AVOption *opt = stream_options; opt->name; opt++) + if (option_is_disposition(opt) && opt->default_val.i64 == val) + return opt->name; return NULL; }