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 DAFAD43E91 for ; Tue, 16 Aug 2022 15:34:33 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8C33D68B8E5; Tue, 16 Aug 2022 18:34:30 +0300 (EEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2106.outbound.protection.outlook.com [40.92.90.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5B9A068B45D for ; Tue, 16 Aug 2022 18:34:23 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bmbmsKyb0uaJHB/D0r/qfV+EzFoRwNBYw4QHV/1tAJG0oDdpCUpa/xS1PkpqP4iOZp7MQt95rR8SeIYbp8F8+tVy8zKscR7QyAEWmqC2iz3m64mD3MnUV85Mp2dqvDirTl0dO5Lnflt6mqgr/+WgCfiHT2rp2DOCWrcPzBH2jadctfkseeimWWhkyfiFLMgFqDFH58OHAvKbSlCziEm+0mS/drPGXpSXnqRuoEufWkkvlL5b3Jzh4g7OwcrlMFReohf9EJ4J43z8reqfrJVsi1FaN7xYq12XKTI5WXP9BUa8pRFKxHp0eSG+PPmMcRGQsLIrCMmf+cuefZGRhg4xHQ== 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=MlKerueGjYOKtykaDQTw2pR5+Ix2kWaMY+xS4GTGEdo=; b=Nc4PPiGbateAyRdG7xRNNa2woTjp+L64YHFkNoguEwzZj430VkFQD+fh5zwiCfxoqKhRnP7YnpoXP4CybMIWBMZQVI/qAFLKzLJ2DCKd76YAzH7Uic1LjS/xkjgd9fahAOQORn4qDXKvdxroIo60/QyZ5u6vuZj8Tj06NzJ0fuM67VfIm3HWQr5CsvJjql9vVp8rwwaqUccYwoQoPP938l4msLa9sXaekvjell+rXFRjYluP/oJJ0QbFP0O6gjLXeCaneQNp6zka9fgJHzle93pWuSqcBE3yj9Qkxb2ElhCV6FO1R6Hlio8MLsAAU4heIa8NDCCsLsUctiFHvmCbcQ== 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=MlKerueGjYOKtykaDQTw2pR5+Ix2kWaMY+xS4GTGEdo=; b=Iv3D6tYchtEiDN1cGXkcOF1Tp0mwznsrmBwTz84KTH+S14JkykD/HUTVzZq7CQvWCuL1Kp+WIdvQfnUWYFwug/uOtV47600XyZvg5ml5cj62gtCiS0S2x3dQwuHBPBV3I3XkHhaRYCCZO23YCNxhHzhXG2Ks5R58Ps1+RHxjk2Kgmjqgx1c/YEjTpcJdvCTSeLI1xlZKNnJDyj1JV8nxENN4YwQ7hU1YavJI7R5QX4iD+whfPVDtS7jr+z1+KPVuy/vsVbh6nx1nOtek/I5FB904EOmUjUUgCVfPlNQhoqBKEO/u72p5E6nYh7mbwPVE4F+R9N9R6GuKCY2o1aVxpA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB6733.eurprd01.prod.exchangelabs.com (2603:10a6:800:178::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.10; Tue, 16 Aug 2022 15:34:21 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5504.028; Tue, 16 Aug 2022 15:34:21 +0000 Message-ID: Date: Tue, 16 Aug 2022 17:34:20 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220816133046.70846-1-thilo.borgmann@mail.de> <20220816133046.70846-4-thilo.borgmann@mail.de> From: Andreas Rheinhardt In-Reply-To: <20220816133046.70846-4-thilo.borgmann@mail.de> X-TMN: [t6MuvGUgM4y71o85ovI5BHmUxreVQJeL] X-ClientProxiedBy: ZR0P278CA0188.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::20) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <2c834e0a-5860-a1a9-4a0b-86ee8174fb11@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4ce6a932-846b-4794-4040-08da7f9cca79 X-MS-TrafficTypeDiagnostic: VI1PR01MB6733:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K0nYugB+1SJVVCvZuXBsZxHom0SuJckxYDm2iCU722eDLkeQxg0mxEP3U/Lbp6ew/sm7pI5v879kq6seab/sna5ODJlWUAYWieQMyVnZpT5X9V6//BmGt632nZ3WYWY4zPymhymmlJhuXX1HJau7YWMeakUbF8qcTVd6fG4I+eNz0IuqsNIy6hloXjFNBaUeLulNAoDQ0G7XgSzClhhMka6BhWaIdXTiB1I0yuLu4RtWAS6W+SCcFA7gLO2+v5crVrXtlUYOgA2BEe+ZwFo8lvvNXkXLMP2G+1dXDMZqgjOdlBnFWJhxQW9AMp98Ae/fqZDI0JupQftaJxJOXhqje1Cvmc4fVIXAh/hOIva+OAxp4kyjHIUhziHCDt5ADC5eN3wYsqWPq8lmj09MGHn9ICB9YPCwmNgFJAW3tnaJHUZZewvVo3a+7xtst7T/uqOHUF9SwY3IYfvi1xJkyxQYQq1TrZmsznjzg1eGhP4vl1cdKtA7fBX1OV6MmoZ2q5XtN+6j4EIzV3cXYtUNUV2sdTTFdm8WTgo/6mmFsjcpSrQ1XEguAW9RUs5muG24r61hr1zKKNxvQ2v8HbOszBk8ypS9L2r81l28jq3AdgpbnHUah6IE4u4PRVi2erC8TxHCLwze2LJCUhwheI9mg8z1c22mtPM6a9fflBFx2TfQASrTTMITE79dFT6q0PKtYEti X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S0UyVUkvUjJ0UUdudGROT1l4MVBXYWdOUk5qRFRlNmxXcUJKblUrdVJ1ZlFN?= =?utf-8?B?WW9aSysvUWIzdVBKN2ZvTVMydzBROWNqL1pKMEk0SGozemxWaHY4OGNodUJW?= =?utf-8?B?NmdGN2hDQ3ZTUHd6RE9RUXlzT2RIUk50WVIrWlNFMFg1NVRsU1lQUUo4a2dy?= =?utf-8?B?WUV2SUVPT1pESXdHYmFhc3dKc0FiK2ZZZXFTbmFQY2RKaXNQam1BdTIrRzlw?= =?utf-8?B?TzduSjJkemVBSitXbzY4VUxTRFVpS21XTDVWWDJwMzErdnpnbDE0Mk5HMWYw?= =?utf-8?B?cWF4UVoyeDNYbnRSSjEydk9OQ3NkSnNySE15ZFNISUpZd2VDeXU2eE1MRjJ6?= =?utf-8?B?UWRtb3pmanFkNDFueVBTQUJEbHRqWW56SjdEUHR0WnVnNTgrMGxEVVlMQmIv?= =?utf-8?B?bXR2TzhFSm9pZkRLNml2aTVqOFliREVpK3pJYWQ0QnVtNjhhYXBVNzlKU3A4?= =?utf-8?B?V1lyYVpEeTlNVWJ1V1YxeVU1VGtqQTBsNlBKMmQ1c2lRMFAzTmdyWVFQeTNk?= =?utf-8?B?SDR6bXNmWk52cUJ1dFhqM2QreEludWxDT1IxQk9VZDNndTF5QWVNM1FMdFRG?= =?utf-8?B?U3VPc01idExyTjlrKzVWSmE4M3VDOVhBZWQzbmRMUDRpQ3MrL1REaXBRK0Qv?= =?utf-8?B?OERQMC9PZGxvRlJONkRHa1A2UVZQcVF4aG9Gd3hpS3poZXY4ZHpvNzMrQzRS?= =?utf-8?B?ZVhYUFF2cUVBVW9mbGw5Y1NMNG93RktmYy9kRFJab0ZrMjdQSU9kdnFTQllt?= =?utf-8?B?UVY3ai82M3RjalZPTWxtN1RNaUhaNjVESklnZHNaOXFFMDhNaHJiTGVDcG1O?= =?utf-8?B?eGRpd2pyMjk2RFA3RTY4V2U0Mk0vSCsxNnVZS2hvRWhEUDhEaUxKaE9WOWVV?= =?utf-8?B?QlA2RlNlSzdORENsMnp3UGQvRHRHdWdEQkFNT0hycG96enY5VlVjWXJuL1BP?= =?utf-8?B?K1FtdzlDZGlXREdvc0tKZHROY0FvN3hTTUF2ZDV6dmlTbkRxTFJFUGVESUtm?= =?utf-8?B?WFN6TXduV2ExTjd4RjhVTlJvWWtWSS9SSGtubUwrdENsYnB6a0dRR0RDT0Y5?= =?utf-8?B?WGppOVFPZ2UzZ2c1ZExmbVNFcitOUW1keXhLQlcyMXNVblhhOGg2SDRmU3F0?= =?utf-8?B?ang1eDZTTmNkRWdzaW9Lb01mcTZvalRVT1ZzbzJUSlQ4bmcvaFB1QitTNDZ1?= =?utf-8?B?OW9lUElQZnJHYThJOUFvSmhWVzI5Tys2dXJrdFJnL0tkYzlwRkZ1RFpNRzdK?= =?utf-8?B?OWVicFRHYkRuYjNuY3dnMXBicUxzMmc5ZTBVSWlpL0U1cGJxMnNSUVlndUpE?= =?utf-8?B?cXBURnNHMUV5MDkvZXFJekw0bFBYajJlUmNWZ0dzbDZmbVVFUkRaalRSZ05R?= =?utf-8?B?VDhJSm14VEhaZnp4T0MyOTV6TzYvMVh4MTR3N0NLUW1abWxOTDlLN2gycllV?= =?utf-8?B?c3lMRXFVelFKMk5FMU9vL0loVVc4TTNUL2FXM00vc1V5UlpFM0NUZ2ZGcVRD?= =?utf-8?B?ZTBmZkdnTHRmR1hsNmRRdkhHSHlYczRkT2IybjQvVXBFcW1MdGpNakpZWC9t?= =?utf-8?B?WXBJUDZBWWRWdDJrdnp3V3ZmUnFEbmpFSEdFZDQrTldFZXV4U2UvMDBsVzBI?= =?utf-8?B?OW1OZUtrNjR2WHg1V2tkc2Nzc3dqYi9zU0tuMDVXdHlaZXh3cWkxbUdPbi9T?= =?utf-8?B?M2JJdHVTRW02WVF4eXluY2tLWWRIV1Q1YW1TUjIzTFpSTGkyNm51SnVBaTNa?= =?utf-8?Q?TVY6jlL36A3Up96Gho=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ce6a932-846b-4794-4040-08da7f9cca79 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2022 15:34:21.7572 (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: VI1PR01MB6733 Subject: Re: [FFmpeg-devel] [PATCH 4/5] ffmpeg: Allow printing of option arguments in help output 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: Thilo Borgmann: > --- > fftools/cmdutils.c | 5 +++++ > libavutil/opt.c | 14 +++++++++++++- > libavutil/opt.h | 8 ++++++++ > 3 files changed, 26 insertions(+), 1 deletion(-) > > diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c > index 22ba654bb0..dae018f83a 100644 > --- a/fftools/cmdutils.c > +++ b/fftools/cmdutils.c > @@ -172,6 +172,11 @@ void show_help_options(const OptionDef *options, const char *msg, int req_flags, > av_strlcat(buf, po->argname, sizeof(buf)); > } > printf("-%-17s %s\n", buf, po->help); > + > + if (po->args) { > + const AVClass *p = po->args; > + av_arg_show(&p, NULL); > + } > } > printf("\n"); > } > diff --git a/libavutil/opt.c b/libavutil/opt.c > index a3940f47fb..89ef111690 100644 > --- a/libavutil/opt.c > +++ b/libavutil/opt.c > @@ -1256,7 +1256,7 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit, > av_log(av_log_obj, AV_LOG_INFO, " %-15s ", opt->name); > else > av_log(av_log_obj, AV_LOG_INFO, " %s%-17s ", > - (opt->flags & AV_OPT_FLAG_FILTERING_PARAM) ? " " : "-", > + (opt->flags & (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_ARGUMENT)) ? " " : "-", > opt->name); > > switch (opt->type) { > @@ -1329,6 +1329,7 @@ FF_ENABLE_DEPRECATION_WARNINGS > av_log(av_log_obj, AV_LOG_INFO, "%-12s ", ""); > break; > } > + if (!(opt->flags & AV_OPT_FLAG_ARGUMENT)) { > av_log(av_log_obj, AV_LOG_INFO, "%c%c%c%c%c%c%c%c%c%c%c", > (opt->flags & AV_OPT_FLAG_ENCODING_PARAM) ? 'E' : '.', > (opt->flags & AV_OPT_FLAG_DECODING_PARAM) ? 'D' : '.', > @@ -1341,6 +1342,7 @@ FF_ENABLE_DEPRECATION_WARNINGS > (opt->flags & AV_OPT_FLAG_BSF_PARAM) ? 'B' : '.', > (opt->flags & AV_OPT_FLAG_RUNTIME_PARAM) ? 'T' : '.', > (opt->flags & AV_OPT_FLAG_DEPRECATED) ? 'P' : '.'); > + } > > if (opt->help) > av_log(av_log_obj, AV_LOG_INFO, " %s", opt->help); > @@ -1456,6 +1458,16 @@ int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags) > return 0; > } > > +int av_arg_show(void *obj, void *av_log_obj) > +{ > + if (!obj) > + return -1; > + > + opt_list(obj, av_log_obj, NULL, AV_OPT_FLAG_ARGUMENT, 0, -1); > + > + return 0; > +} > + > void av_opt_set_defaults(void *s) > { > av_opt_set_defaults2(s, 0, 0); > diff --git a/libavutil/opt.h b/libavutil/opt.h > index 461b5d3b6b..dce3483237 100644 > --- a/libavutil/opt.h > +++ b/libavutil/opt.h > @@ -297,6 +297,7 @@ typedef struct AVOption { > #define AV_OPT_FLAG_FILTERING_PARAM (1<<16) ///< a generic parameter which can be set by the user for filtering > #define AV_OPT_FLAG_DEPRECATED (1<<17) ///< set if option is deprecated, users should refer to AVOption.help text for more information > #define AV_OPT_FLAG_CHILD_CONSTS (1<<18) ///< set if option constants can also reside in child objects > +#define AV_OPT_FLAG_ARGUMENT (1<<19) ///< set if option is an argument to another option > //FIXME think about enc-audio, ... style flags > > /** > @@ -386,6 +387,13 @@ typedef struct AVOptionRanges { > */ > int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags); > > +/** > + * Show the obj arguments. > + * > + * @param av_log_obj log context to use for showing the options > + */ > +int av_arg_show(void *obj, void *av_log_obj); > + > /** > * Set the values of all AVOption fields to their default values. > * 1. Changes to the tools and the libraries should be in separate patches. E.g. judging by the commit message one would not think that this would change libavutil by adding a public function; but it does! 2. I don't really get what the documentation of AV_OPT_FLAG_ARGUMENT means. It seems to be some magic parameter which allows one to request/reject AVOptions in av_opt_show2(). 3. av_arg_show(obj, av_log_obj) is equivalent to av_opt_show2(obj, av_log_obj, AV_OPT_FLAG_ARGUMENT, 0). - Andreas _______________________________________________ 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".