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 7D998443CC for ; Thu, 8 Sep 2022 21:45:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7680A68BA96; Fri, 9 Sep 2022 00:44:58 +0300 (EEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2064.outbound.protection.outlook.com [40.92.89.64]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5BC5268B9B2 for ; Fri, 9 Sep 2022 00:44:51 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T/+25kNCXTS3U19heILM/c9UMHmOFyQHzpCbLaJGwMEH0mP9vK9F0eBaT9+65EnvHDv7VG5cYd+b8M90TVW3u5cLjZ3eOT283KFPd/L2r1MEWvisxe92SSstFQm+oeYGMrR6A24ZogO3finviguqCaQmKFpXddAs3xmrD/jtVmrWFzJkVCsXOoDRqVXFe6FGUEQeM6uiYgX1NzYLedtKChnrHhoQ5GPsGLXwEELhZ6m0qMCpuQ5S0RFtNHU7Zou7/Kd40ukwKJU1YeKI63lCW3cKjlYeBYPaFh0p3EHUaET4kzh1I0W3AowSUDgmk+ED0e+4bCrymXstL8IWfhMHKg== 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=0E96fNXbJHnYWzfaAhlgXPli8XSU1Q+Y9Q/9hH5Ja+Y=; b=EWllecQYNQB8J2AQH4Vvem/AcNc/x2xvNxPTlvmlrMZqxEHhBvpHVgOH6Rx6Fw3Hf2slfImLbhmHRDTr5DTlYCZZ3417w6JJuM2IzIAH2K7kb3rjOgLCrpM10MVF5Uy96WJArOTy8SyhZTN2FVjzUCy6ZRwj+Xdyi0AP7tVX++OjNRv+SS5MplLoLvVl5Z/75M5CcwkJHIFGOrRTWrfffm7WqKD5CsOOGPpGLxlsnMqXGwXxPVG7U55s8Ypk9uQVYzC10aAlScvj8Ki0iKWtN+NPsykRVNmoTywy2SKGao/GC9/CfbRwh2rdPUX70qVMN6Tkmormn/h7Bc7zWld7OA== 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=0E96fNXbJHnYWzfaAhlgXPli8XSU1Q+Y9Q/9hH5Ja+Y=; b=quUbXukTHTrbE601Krf70tTkHmep4Hj1aPAIVB45pWxJWqFyQQosYOd3NX3PBwQNjpfTPTzwTVjPHFOFsAr1tDASnnoXZlIBH3ROOUddwCscxw7B8SRxbKyJjIP9jCzLEmdO6DKfHx1kt/IlYqvQ9boqXZXrmaeS/eS/YoqfDcQn6//QIwRg09KbPTjd0ByQcR13bx7BjLrh8GE0pSpZ370R8EQIGoAX52I6XYcJ+2/Nobv4o+xyOChid5mlAmGlnRQBVYHqYoeW+BcKabm/ooNYwNJQQLpznzPvdZV71RUSacdFsGL9ugviAysAAPGYykg5kpQDQBeQ/3ZV6kX8LA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0223.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:278::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.16; Thu, 8 Sep 2022 21:44:49 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::c3af:c609:301f:beab]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::c3af:c609:301f:beab%8]) with mapi id 15.20.5588.018; Thu, 8 Sep 2022 21:44:49 +0000 Message-ID: Date: Thu, 8 Sep 2022 23:44:51 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220908173911.GA2088045@pb2> <20220908202528.GB2088045@pb2> From: Andreas Rheinhardt In-Reply-To: <20220908202528.GB2088045@pb2> X-TMN: [dtu3cVRV2gaTor/PdZDC5AeLqjWslKM2Yx7Sj2GH5tI=] X-ClientProxiedBy: AS9PR06CA0622.eurprd06.prod.outlook.com (2603:10a6:20b:46e::21) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bc6de579-4f71-4352-0ff7-08da91e35abe X-MS-TrafficTypeDiagnostic: DU2P250MB0223:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: or0y77hMRYY1VNtAcHNZJSeUqZ/u6Ib6UFud4i9b8qLSJKCC0EVnBCZAzk5AT2Vtg8Fru7EmbLac1XPwxtRnIsNSXgcttI0R8LI4uOdeP2MsIY6fgzJ3g8ZEaYSjOwFOdYanJfRaWDxvYX9zElfjEjuGgTIDaKCgl3T4cBa5NVDkB/H7xZof9UzgSZB19WvXP/jWPPYUpgHOCbnHR1x67gVgzWMJH844wG96EkLk+TqsTaQilWiM+2tq0WkkWF8WhFNGnXByAdUfXf9Z4Ivf+3BA1p1OhI1Vh47Ll+Bgh9TS/n5rowctZKAzUlvba4YDdL0fwA/L/93IvzIjAcJc2ocOP5x+jJfwXV12lqLnMEg6TfwO/EoSO3FJnm68XtlYoa2vgYUR3lLa9dTMs//eJTNX0nZ5dcRKY7vdjZaF6uNaUps1bU0z+mR5PyHANehVikIZ7QuDtnVH6nuIuD7hKMPLUHA2p+53winw5HZz2X8CZnSzN8B2EAb7Z3yXHgTffmh9r8HdmTDunWSqcxtAoS2T77R1Y0F53M3PN8fUgbCRc64uUe81pADqPHo+Yr4PR75LOeHP+gxzLfaznrK54guFxmBOg4r0Hcbek2t1MqDsIK9iwBy5rAuleC6j9fyZBrq69cZtPlMlJprRVvSCSHD7+5L74j5Qaq/FcuJj+XcQaa9jjBCEGViyRyBzt74Y X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RU04Um1uZUo3QXIyaXZvNjU0RHpmNUQ0SXJxMUJSNmVnY2tRakZVS3U3V1Rv?= =?utf-8?B?MzgwSVJUdzF2ZjR4emEzZVc0anZjVHpDaTNsUlB4ek1leFlkL28zTEZxMG56?= =?utf-8?B?cmQwMSsvbmE5NldLMzlwYm5lUG9jeTlXanBucnd1TEoyMFg5M1l6NkU4cmFP?= =?utf-8?B?YUtUbmdWY1BDalhpRW9VeXhZaThCc3pMTGN6dEdNSXNYZ1QraDU1aDlQc0Zl?= =?utf-8?B?QU44Y3VIN0loZnptaUNkREZ2TkIwS3Y4d3JHNW1HQ3pxNU9jRWJnVlNpZ2s4?= =?utf-8?B?akltN0M1b05SRjk1aTNnNkhpUi9sam0xQ0tUVW9pcGRvZlFOQ1BJb3lNRGNC?= =?utf-8?B?RUx6R0RxRmZPbjhNUFBObllDdUttWDhqdnhsUFZ3TE9OVGpzQ1lhd0IrYkla?= =?utf-8?B?RkcrNmFlTm45aVpJQTByNnZOVWpkYUtvc1pxUlN2WGxvWTFXcDMzMllEK3BJ?= =?utf-8?B?Y0ZBek1HaFM2S0FSOWVoZ3ZtYnZzVGtkRTRFUnd6cmNDRHVTSHhwbjlqTWx1?= =?utf-8?B?SS9IYWZFQXduUXV2b3BENTM3dHluWmUvbHpvWXRaaVVFdFduVzByNlhQV0tm?= =?utf-8?B?bjBWaTB4NEJ6N0hIVUw0ZVlCblJjeWxhYVNKb1dmclcwdXFKYklsU2QyWXcr?= =?utf-8?B?R0s4VjgvUk45TmtDQTREU0RHclc2RkJNM3JsYW5TdDNNQ2dURUF1aHc0elZu?= =?utf-8?B?MUc0RmsvWms2NnRNSE03R01vbDFTcHBJaVFwa291WTNXQ0xXaWNRT2M3ejk1?= =?utf-8?B?TTRuZk5DbDV2Qlk1T1NoSDNXVC9QVm1wcEdma0RMY0RlQTJoUkhtQzU5WmlQ?= =?utf-8?B?R09tb2lvak1nM0EwVjRETWhROTJCTlgwRFlnd3YwV3BUTEhvTCtmbm4xWEh3?= =?utf-8?B?NEJUWUZVMHpFSHFXajBOaDB2dGxXSWMvT3hVUmdZejdhL2o2VWRDeU1RdEtm?= =?utf-8?B?aEtVMVBJM0tYNzZSMzJwZWIxOVRrY1ljUHZ1WXhyK3lMYWM1TnYyYnZNdjBO?= =?utf-8?B?N2krb2F3YmFRN09uSlFZQVVhMVBvTHNucmdEeDZjb1dXdmJ0Vlg3QVlNYjJ3?= =?utf-8?B?Tng4VE9sWTBaQ2s1dTNkemRETDJ5TE5jS0lVdWRFU01rOThRSnA4eituVXlq?= =?utf-8?B?YmVoUk01ZVZwVVlwQmVsVzdUQ0ltZ3RuU1lMdVFKNjZMVlBPVzAxWmowMXUw?= =?utf-8?B?ZWZGSHZueTBtVHNUTGwweWJ5cElxL2N1Tkh4Lyt6M21EMUlyMUdYelFBWFd3?= =?utf-8?B?WW9DYmZ3RlNRV2p5NDBRd0xkcXY3MVREc2xsc0ZWaExPUWlrNWNDdEJDR0lS?= =?utf-8?B?UHBJOEVudzJWL2pubEtTTWJTd3B5VmRkSkljMUgxNzdOd1Mramo5U2xKeTF2?= =?utf-8?B?RksyR3c1eXdnVlFxZG5QR0tvTUd2REs2UkFtOWRzcnh2Q2JoY0pkYTRSSnUy?= =?utf-8?B?VmRlbmJMUHhBemNWZU5YM0l3ZXA4aDlLekhGKzBuL0k0VVZRTDFnek5LV2JC?= =?utf-8?B?a0kvK0tZNVNMRWZoeDVZOU44UjlZQzdiNTF1SCtsVGtTL3ZwY2hFN2E4ZFFN?= =?utf-8?B?QXBPYmtGTnJRb1ZmK0tTNXNVUWZKMVE5clRMRWJyc05yQkxTTmtRcDFKRlVS?= =?utf-8?B?c3Q5ZjU3dzRnU3VZN0JUVkRncDNXcm5Da1ArMkRGcHBpVEYxTDJ2SUdSUlNN?= =?utf-8?B?NmpjTXBDN2pnbEZTZ3Boc01RRUJsL2VVR0M0dDI2RU9yYnpyS1Q0UjFPbHZ1?= =?utf-8?Q?vP1OXzjK5AWf8rwAfnGDHZX+kE4xbuzSZGf2hRW?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bc6de579-4f71-4352-0ff7-08da91e35abe X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Sep 2022 21:44:49.4699 (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: DU2P250MB0223 Subject: Re: [FFmpeg-devel] [PATCH 2/2] swscale/input: Avoid calls to av_pix_fmt_desc_get() 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: Michael Niedermayer: > On Thu, Sep 08, 2022 at 09:38:51PM +0200, Andreas Rheinhardt wrote: >> Michael Niedermayer: >>> Hi >>> >>> On Thu, Sep 08, 2022 at 04:38:11AM +0200, Andreas Rheinhardt wrote: >>>> Up until now, libswscale/input.c used a macro to read >>>> an input pixel which involved a call to av_pix_fmt_desc_get() >>>> to find out whether the input pixel format is BE or LE >>>> despite this being known at compile-time (there are templates >>>> per pixfmt). Even worse, these calls are made in a loop, >>>> so that e.g. there are six calls to av_pix_fmt_desc_get() >>>> for every pair of UV pixel processed in >>>> rgb64ToUV_half_c_template(). >>>> >>>> This commit modifies these macros to ensure that isBE() >>>> is evaluated at compile-time. This saved 9743B of .text >>>> for me (GCC 11.2, -O3). >>> >>> hmm, all these functions where supposed to be optimized out >>> why where they not ? >>> >>> iam asking as the code is simpler before your patch if that >>> "optimization out" thing would work >>> >> >> Why should these functions be optimized out? What would enable the >> compiler to optimize them out? > > Going back into the past, there was > 6b0768e2021b90215a2ab55ed427bce91d148148 > > before this the code certainly did get optimized out, it was just > #define isBE(x) ((x)&1) > > thats simple and clean code btw I don't really consider such magic numbers to be clean. > after this it became > > #define isBE(x) \ > + (av_pix_fmt_descriptors[x].flags & PIX_FMT_BE) > > thats still really good, and very readable, its a const array so > one would assume that a compiler can figure that out at compile time > well, i try not to think of linking and seperate objects here ;) > > next it got then replaced by a function and a call that i suspect > people thought would be inlined > > >> (And I really don't see why this patch would make the code more >> complicated.) > > the code historically was capable to lookup any flag and detail > of a pixel format at compile time > now your code works around that not working. Introducing a 2nd > system to do this in parallel. I am not introducing a second system, I am reusing the existing system, namely our existing naming system (the fact that we use BE/LE in the name of BE/LE pixel formats). > To me if i look at the evolution > of isBE() / code checking BE-ness it become more messy over time > > I think it would be interresting to think about if we can make > av_pix_fmt_desc_get(compile time constant) work at compile time. > or if we maybe can return to a simpler implementation > We could put the av_pix_fmt_descriptors array into an internal header and use something like static av_always_inline const AVPixFmtDescriptor *ff_pix_fmt_descriptor_get(enum AVPixelFormat fmt) { if (av_builtin_constant_p(fmt)) return &av_pix_fmt_descriptors[fmt]; return av_pix_fmt_desc_get(fmt); } - 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".