From patchwork Sun Aug 15 09:29:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 29523 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1091140iov; Sun, 15 Aug 2021 02:29:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWAZ+poXopBfZ6qqakft3FCIEIJfeFUFwZL5oSSPfXRO1MOP+kclmCbJI6KK842sr92u4+ X-Received: by 2002:a50:fc8e:: with SMTP id f14mr9346348edq.349.1629019799122; Sun, 15 Aug 2021 02:29:59 -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 dr8si9001878ejc.133.2021.08.15.02.29.58; Sun, 15 Aug 2021 02:29:59 -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="fK/UPJbL"; 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 134316802B7; Sun, 15 Aug 2021 12:29:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2105.outbound.protection.outlook.com [40.92.90.105]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2C14B6802B7 for ; Sun, 15 Aug 2021 12:29:49 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WFvtAuLb/XK207MDQbcAwY+jUC5DuLjm0nudVN0WOikuO2Ud3pOZiaPYTOPZQOq7cgyWhVPXdA9XVFDDXkJeNGCyBogjcLXez+2Rum/5Xc8MNytNDLM5MCdP97JipYEISJam9vw71Lpi0tJcQ7X5VyX/t3XQA0b4EWcDUhl7qNxZG1kmca04nbdh2u9j6hZA1625oW+TGKucY7mjEDP/0OS/t7yii5XosVnaMNt5IXCpPw/R+/IL+6KWPbG4T1oGFudEguE3yLsBsU19eZW0aA2CI4dzQsUnzWH0oVgPaQXtOc8Ue50/t45qul/0IEpWO3mHw49uV6cffrbOt3eZ4Q== 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-SenderADCheck; bh=kk4HEFs/CbVvnGPb9ubISrCtX4x6WQDTABEkcBnndDs=; b=ICFSxAzR9vweZGE53wgRoyP9ojdj3ttAVSpSMt0ohRyn9Efzrs86CbJlmd6++KPrV9gpC5xNhl5EDAKBWzU4tv5EatRWvpvVb05s0hLbOu6IKeodZWiiN9bg1h6jG+xK12hJVaEBCibVMYlL+2EBp7mkTblg4lPqu/vtrSCn2/1MUT7y1iDZfttRLw+nBNslThEo7sGZ/LXjivlhpPasIY6JWDgREe+o48AiE5XmkfVCKiQUFlGz+pV9X1Cp24e9DOJQMwqb1SrrGdwe9C0QkA8HVQuur6c32jGUpJopkNi7g+bRoO3RSGMcWUeP9fcU56Gd21YeFDc6mLpkxfJV4Q== 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=kk4HEFs/CbVvnGPb9ubISrCtX4x6WQDTABEkcBnndDs=; b=fK/UPJbLBmlxpxc2ZtAbZRRVjdEROp5XV7u+yLgPhuifO891Vri/zNM5eLOpd0G2zSKZOxpVJRR5QfhRZG7z/t4sgeelIn3omlHg6ehHgKQv6IEKducIv5uvu9Xq2KEqQ6IsMVD1SJ98LcckO8FjhqX8Bw7V0n/CAPhFSaL3KEGFMAgoTfkLMHjSVM+plxjWEoYLrcdXobjXVE7Z5eKLRUNgvUGkeI26wsUWE/aa9vuhj1IwISgALT2PfR+KoJGZeEiJaDIXF2RqHPhddBRdl9aF584rDHd6sB8PncHJjOyQezEXu+VvPpDjYO5xbZg6l/ZNRLV2W2jDXw1arv6z5w== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4295.eurprd03.prod.outlook.com (2603:10a6:20b:a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.13; Sun, 15 Aug 2021 09:29:47 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ded:bace:bc7:e91d]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ded:bace:bc7:e91d%3]) with mapi id 15.20.4415.022; Sun, 15 Aug 2021 09:29:47 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 15 Aug 2021 11:29:30 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 X-TMN: [fEmJPFgrbrbDJsCRjX6j7j7JblvhfYrj] X-ClientProxiedBy: AM0PR02CA0085.eurprd02.prod.outlook.com (2603:10a6:208:154::26) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210815092939.2116125-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM0PR02CA0085.eurprd02.prod.outlook.com (2603:10a6:208:154::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.13 via Frontend Transport; Sun, 15 Aug 2021 09:29:47 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 95f90255-e361-4da2-4fde-08d95fcf396b X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVjun0oR/i13HcFhFL6IneNPVtyd3QNMvukaWlyxVRjtg2l89J8JpgE5uA//qVwZM1CGtvSc+pfQ/xLRjMQDnD6iMxuxntv+raTFIAdtNLLZb4S+yivRddhdiqEz89PEuvRUwWZCigjXdXuJJwpaUb0LzKaik+8TvCf4YPWVQAJPBd74L/b2OnelBQgGWi07NVkiIok8xLBaP1fHuuBEKFfffLMqLpJ4e224uw9D6fbo5FbTuOH9O8u0Lz9BsO4/r/HwcwvXQfQ0yfcnjvxU6WfkO3LCBqaSIubkuhiSFtJ8V9Unv7icJY6uHR4V6h6+XFIz8fJcg2iFoslvxfd0ryKPJfItzPt9z80o5m/e45wNJ6ChLp5QHaCXjsIs+Dp84lEWYCBC9n+WzBISsdAzg4RjGoMm+woychqltZVuduzUu/mcEuW1lVAG1D8dmsZl1xYlmIKPpUoXezPvxwapdvybkWYlcSL5wKdoKtWt336krieL6QgoSV+4AxijGRDEgkhnZ7L50j5fwSrzxAezoxrykoqBbDrsY+a4C5QVokIxT2mZIMqwUfIK6jU+bwZ7NREqBDqxaFm8gRgrEjkgCtNOyDdn2LaygIorEuRTIoSvo9ZWxNvvJamgp7Tma7fV5G57vM63fNZenuDZym0LfwKRVGInEmZFIWfUYiVOfWXdCDiyrP9BV2QKCEIka28gFqRwuei6kJEdYCFyh2PFhoaNQus8LQq+W0= X-MS-TrafficTypeDiagnostic: AM6PR03MB4295: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vfx7I0Z3BRvDeqnGh3w8xsa9VaUoRVWEmfYoLicVugpeeLkxhiWkm7B1LbkpbFTO17DE8hLcQuNA+iKVpSlJf/GI4T2iTTkkeDuTTTAfVq59QtBHWrb1vjAt6v51AlIN/Qqh+sTYidKOzvXY44fiasDSloGxGAtUXPTSelX/DzvQgsNQEL8zAba1slVF3MuRhLrl7yBTQfTQHEhKffHlv+mesRq2swCzlvB/Q50jxhXh9/Esz5wU0giNBLrGy408v0hW+dGk+uY3VKgEvcbwOJjhATct60D/RI8S3oxFOEyUfUx93GGpKfpqKbwn9Cg6y/YfTUoHQgvsZR72a01Q8lT/YT+eUUHm974e9ETiXnVut5JXVN4AZAATVOo2kTU9SUObNnfwdMEJAGCsV88lYyb4DIwkVIaP1dfBmpaN4ppevG3GWdr5BfzaJ0MEsgRm X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NDj0ICBsENdXi6PPFkcOGbu4sf3O7LQ7k7JY9KkHwmqbk7ZxoqeuAxMKF0om0VOS8y3PPd5BLyMUw3X1N1Va3x+GF358bO9NnaRaceifqSHM0vssgxhi4D1rcBia7zOoU8M0l2B4Oho4hEHCWwJiwA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 95f90255-e361-4da2-4fde-08d95fcf396b X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2021 09:29:47.8805 (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: AM6PR03MB4295 Subject: [FFmpeg-devel] [PATCH 01/10] fftools/cmdutils: Use avfilter_pad_count() for AVFilter's number of pads 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: 5zXguRgm47qa Besides being nicer code this also has the advantage of not making assumptions about the internal implementation: While it is documented that the AVFilter.inputs and AVFilter.outputs arrays are terminated by a zeroed sentinel, one is not allowed to infer that one can just check avfilter_pad_get_name(padarray, i) to see whether one has reached the sentinel: It could be that the pointer to the string is contained in a different structure than AVFilterPad that needs to be accessed first: return pad->struct->string. It could be that for small strings an internal buffer in AVFilterPad is used (to avoid a relocation) whereas for longer strings an external string is used; this is useful to avoid relocations: return pad->string_ptr ? pad->string_ptr : pad->interal_string Or it could be that the name has a default value: return pad->name ? pad->name : "default" (This actually made sense for us because the name of most of our AVFilterPads is just "default"; doing so would save lots of relocations.) The only thing one is allowed to infer from the existence of the sentinel is that one is allowed to use avfilter_pad_count() to get the number of pads. Therefore it is used. Signed-off-by: Andreas Rheinhardt --- Unchanged since last time. fftools/cmdutils.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index 6d0bcd6085..96d38803df 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -1707,12 +1707,14 @@ int show_filters(void *optctx, const char *opt, const char *arg) while ((filter = av_filter_iterate(&opaque))) { descr_cur = descr; for (i = 0; i < 2; i++) { + unsigned nb_pads; if (i) { *(descr_cur++) = '-'; *(descr_cur++) = '>'; } pad = i ? filter->outputs : filter->inputs; - for (j = 0; pad && avfilter_pad_get_name(pad, j); j++) { + nb_pads = avfilter_pad_count(pad); + for (j = 0; j < nb_pads; j++) { if (descr_cur >= descr + sizeof(descr) - 4) break; *(descr_cur++) = get_media_type_char(avfilter_pad_get_type(pad, j));