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 D32DA40F93 for ; Sun, 12 Jun 2022 20:01:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1CB8168B579; Sun, 12 Jun 2022 23:01:49 +0300 (EEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073085.outbound.protection.outlook.com [40.92.73.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 09FA268B26D for ; Sun, 12 Jun 2022 23:01:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EIz4FfZYjPA17aZZjg/8AeQghI1GbYkHXRYYtLC0EneELjGYFwYtEyDnB0NtIeap+D8YXHhOOIvWCn82PmfJy80RULkg0oe/mUhrgMczIapsd/OXYTZ+XkcGa0aiwT5pWBFBym8DPr3zNqa/gA28aEnp2MlyVkBjKNxS9SfcnZwxUuokynqIDN2rTEnTs0qULKl2KjloMAjNY18hk/vHZn++ZXQuOUzIWfvFnR46ah3IUejIf7aVGb1FBEQmjG3W3JG4dmMV+cGUUJT6i3fDy5PGg78KoeWU80UCeIj8XTQr72xdl7H9NM+KeZ+FQ1eEKBo8A0gIJja4mznZ+ruCzw== 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=/vyJRg8MfjzmYVhiVuzP14aZOa9Dr//4PR+Tm8Pxrwc=; b=h73ZhZWQdZiCV7KGqvnuFA0TMv1drOPJ2+G5cvZlrzUGeyQ6i0FgU3wlvYIs7cSg5I6yF585WxMvVOUEjUhsN0fQEBYhebfywQStyBuuaFYyX5/fhcCLJpmi9YiRCNi2r+5NpHkHYWZ4uIm9YURDJ/szaZHNmy+BOg6hCrsSsWkryURy6vf6rz6RtUCFgcUnDUOJCnIL3vGHY7c+pf8Z1Y77W3eC5eWdjF1hjTL4U/nlIdIdBH+OPfEWTXXIl6BruS8hIeffUy7w5emWLGSl+u28FWp8YIj8NroSnl/u/pSSKTLPZ6xuWhuoH7XQxRT5SYZ08QK6N7BLY0Y670wMcA== 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=/vyJRg8MfjzmYVhiVuzP14aZOa9Dr//4PR+Tm8Pxrwc=; b=H3gJz/7oUS5JBe8qcH5eqISFm+Lx79t3s3eZjDfREo50IYhhG0JHJVJvv5DgTtQHP9y1EVQEl8Qukhc/9gbM+gAqot4zXMZZmQFey53OuJOlTELTTDe082narttW/UI7pgSNWuVUfVjEjvI9xEP8fm5Qk2GVIHIlY2ELt2FFbtJAsNCvpj736vaTGnr9oIH+tVaqTwo6LGnCr5fbA7VBO/eVJryM0tiWi3oNpZAvBOYD9umsX4t3/Zev3kFs71KDa0tO4AxxeuQxRInjUSOP4kBLgxcV1ZzW7q3HNnOMDcwRmdjexjJ/Nu/C9p1Qzt75AHfQPem94S0UlQWJTJnxBQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by PAXPR01MB10215.eurprd01.prod.exchangelabs.com (2603:10a6:102:24f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.19; Sun, 12 Jun 2022 20:01:39 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.020; Sun, 12 Jun 2022 20:01:39 +0000 Message-ID: Date: Sun, 12 Jun 2022 22:01:37 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220611140820.105906-1-leo.izen@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20220611140820.105906-1-leo.izen@gmail.com> X-TMN: [pvLUQwsNWgrId1O4GH2kaM7LWOCT7Jew] X-ClientProxiedBy: ZR0P278CA0048.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1d::17) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <6a44c7a5-a537-2adf-bdc2-bc6d14fc085e@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 171dd285-8fba-43ac-6962-08da4cae5cc7 X-MS-TrafficTypeDiagnostic: PAXPR01MB10215:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Jtpp3Ykh2mVpemYj63Be2kKZFphvDq4v+gH7a3A5cB4esBQotjbm+FgdFlXRNeyOJ2+VfcOaL2vbENOm0RMbWAUk3pkiOtFN75LCYkpXCKEKMK/XjZ017UdXYWQQDWZiW9vhhFuE95F5+JfLUfE70JQItMc0ZpyCAkvaKvpBV/stt72rubHYGmwQHgqfyG1YkS67tRDKfWcmJ0bXXMK23VsTiyJE6nmoC7y72Q1teoYsBg1fH2p8yIJem2WQwvumERhKEHKgFDHcFd7EDEXEiHoYRCpRkmd8UOXFIUoaxZD6fz3iH7JSDBKP3NJUCZ3JJSGg/Q1ibAALEXMOULwVudAC4sLlgDx1JSG/XpypTAaT68Cn4tCY/psCF4mrgWd4RqJ6jeSYTprvE5vpxvrWG14ws6pdbw75zxxzuFkNVeKl0TdJ6G+q/HXHqxj26nUPfdtgr6HsmIPos97uUhZfA17FkUQOwAqc1aV7Or3tzOXSy8iCMabkXzcdTQsyrluGyLFm99a7X3uTAnJF/aPtGOi9hoPlO7m57PIgvQ5kWzDa/DuKsKD7C7SsQuEQLz2xvkJ5AkPdfnftg4Qs8Q1wQA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q1A5ekFLMUR3VXZTWXNDS2JWWCtvcDJyWUEwTVI3b0NvTmxLSU9qUjVvc1dE?= =?utf-8?B?Rk82VjhmVElYWlkyQkhuektwYU80SjZUWkxBZm1lOXMzandLTXdSZzRvVUdD?= =?utf-8?B?WjJraEo5UlFDaDhkQ0gxYlEzOVdJKzBjNlB2Z2prelZrbG5jK0I2bEVNRC8x?= =?utf-8?B?TSs1ZGV3NFlkcVByMzhBeW1tWFVEWFNhbVlJMlRUZi84V3hVYmVGQzJHM3Nx?= =?utf-8?B?V0xidFFQMEVWamcwNWRIRENPckFVYVhZdnR0a3g1Q0pHQzlmV21YTHpvcXlL?= =?utf-8?B?OHB5NE84cTRYLy9oYTlVcmJFck9GU2pMa0ViUVN6ZVJ5WW5DVWJvMzhRVU5S?= =?utf-8?B?T1JKY3pGcEkvalpaSXJKRHlVcnExalNVUHhLb2phSG8zN1d5Yk5IVERQd0Vm?= =?utf-8?B?bTZzLzJ6NEZGQ1B0U2xtbFFHU1kxOTRqT0tjZzJmOWpwV0J5bUtEUmtiOUJa?= =?utf-8?B?c0ErVVJ0bXFicVpkMVRKNWxaZnZxVjZzYklkVS9rdE80TkdDa1NxOUk1SmFL?= =?utf-8?B?ZGtzU1lrOXFYMmt1K0N2aG1Kb2FTV2pTQzJ3aHJMVmdmODRQRFE3em9rcUV4?= =?utf-8?B?bWtrWjFWQW9BNVBybkljUGt4cFdlUytCVkJsNk5SYktsZXV2MnZ4MjlNSnJx?= =?utf-8?B?T0lFR2NIcy94djVyUGh6Y3Y3TnJmdzNKdytlekRKL0FmOWJyMFJtS0ZkcStR?= =?utf-8?B?VGROZTNrTUtia0I2WVlJYlBmTEVOVmpxRW5xSFVWRU9sOEs1OFh3b2NYRW5k?= =?utf-8?B?UDljNnMzd3ZjNDljTTJ3UW93ZGtOaFpBdmZsc2pGcnRJSmw2S2l6T0l5V1Br?= =?utf-8?B?bjFHSi9wdlFldHk3d3ZZTkdxaVFCYW53MjF2TkRQaFVaRTdyV3pVWkJwMGJF?= =?utf-8?B?dGZINUdQZnpac1N1RTlQWkhTbUdOTHlvZEJ6ZmdKOXRVRnkzWkZOaFVUa3pt?= =?utf-8?B?YmlDSzhjbGsyMHNIVGRHa1hwaElGL0ZsTlVxWi9hUm9iVmEyTGJ1SWF3OXF2?= =?utf-8?B?ejVYWkhaL1JoeXFsemtUWHRVZVF0ZG96WnpETGdFTm5ueE1RdTN6RkhnTytN?= =?utf-8?B?cElGSmF0MW5KaE9QWmxrUjkwaHhSdTRRamprV2I4K3FsUmpUaGxUaUZaOXdO?= =?utf-8?B?OHQ3SmVWOTI4RDFobCtNRFk5LzdCTHZlWERUWHlyc2p1MWx1QklWNklhMlJl?= =?utf-8?B?UU9ldUVQR3BCOUVwSjFKS0Z1d3BrOXl0Qk95UGpvVW1FdEZoK0lnV2hBclpL?= =?utf-8?B?ZGdTc2hGZWNwVmVEZkxoZC9MYXVseFI5Z2NyMUF3Sm1XOU1BMmJ5ZjVKbE5F?= =?utf-8?B?a3pOZFp0THFGVGF4S2FXcytoczIvd1EyK0w4YW5QQmUzYmtWbVh1ZXQrK0hx?= =?utf-8?B?SEE4UG1FRWswTDg2ajVtVkVMTGlxM1ZwbHdVOVZYZXRhdlpPQWVLbnVYNVQz?= =?utf-8?B?TG9tQmRld1ZSc0tSNlA5WHB0MjU5ZmtuQ0phV0xld21ab0RNWXZ0SWEwb3ph?= =?utf-8?B?aHRabVFkLzBpSVBWeWVFMko0bW1RU3JTM3V2b0RVL2MyR2oyMElEb2Fwb21W?= =?utf-8?B?eGVuVzdqcUgwUEVoTk1uSEJxT0ZVZlhTV2oveXJ6WGFDcWh6VWZYY1YzTzl2?= =?utf-8?B?eXVXTFF5a2dXK2NSU3AvNmlaMjAwUzZRVUlPZEZNcWRvQmt5dU1pWmxWdGNF?= =?utf-8?B?M0JBdlBuMExHcldQeVQvYWF1T0d2c3hPVFZZa1pJMFZYYzZVVjUyQ1NqL2R2?= =?utf-8?B?Y2RUSHlWbGRrMGw4bmNaWTVUOFFWdnRYMWx1OEFub0lVWmc3dFBGakFQWHFr?= =?utf-8?B?ZUNjaFFpYWt1YjZ0cW00NFZOZ2xEN3Y1M1dUeWc1SllGZGlxWGtZZkN0aFJl?= =?utf-8?B?cHdrOS9maFRkdlNoOHNZOEN4bXg5QnhWckhmNXA1RVJiR3JpeStwT2ZFL0dM?= =?utf-8?B?bTVpQkxxVWNZdEoydm8vdks4dEh1QTdvNkxVUG53L2RHUVJTWE5PSm9jR3l1?= =?utf-8?B?R0hPaEJ6VVdRPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 171dd285-8fba-43ac-6962-08da4cae5cc7 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2022 20:01:39.3439 (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: PAXPR01MB10215 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/get_bits: declare VLC table args as const 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: Leo Izen: > Declaring the VLC table as const allows a caller to call get_vlc2() > with a pre-generated static const table without generating warnings > for -Wdiscarded-qualifiers. > --- > libavcodec/get_bits.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/get_bits.h b/libavcodec/get_bits.h > index d4e9276da1..49202b0211 100644 > --- a/libavcodec/get_bits.h > +++ b/libavcodec/get_bits.h > @@ -775,7 +775,7 @@ static inline const uint8_t *align_get_bits(GetBitContext *s) > > /* Return the LUT element for the given bitstream configuration. */ > static inline int set_idx(GetBitContext *s, int code, int *n, int *nb_bits, > - VLC_TYPE (*table)[2]) > + const VLC_TYPE (*table)[2]) > { > unsigned idx; > > @@ -795,7 +795,7 @@ static inline int set_idx(GetBitContext *s, int code, int *n, int *nb_bits, > * = (max_vlc_length + bits - 1) / bits > * @returns the code parsed or -1 if no vlc matches > */ > -static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2], > +static av_always_inline int get_vlc2(GetBitContext *s, const VLC_TYPE (*table)[2], > int bits, int max_depth) > { > #if CACHED_BITSTREAM_READER There is unfortunately an issue here: C11 6.7.3/9 contains the following: "If the specification of an array type includes any type qualifiers, the element type is so-qualified, not the array type." Therefore adding const above means that the functions accept a pointer-to-array-of-two-const-VLC_TYPE, but ordinary callers call this with a pointer-to-array-of-two-VLC_TYPE; the automatic conversion from pointer-to-T to pointer-to-const-T does not help you here, because it would only give you a pointer-to-const-array-of-two-VLC_TYPE, but not a pointer-to-an-array-of-two-const-VLC_TYPE; at least that is the prevailing interpretation of the above part of the spec (I don't get why one does not just use 6.7.3/9 once more to conclude that pointer-to-const-array-of-two-VLC_TYPE is actually equivalent to pointer-to-array-of-const-VLC_TYPE). Older versions of GCC warned by default for such conversions (when using an ISO standard -- it is legal in GNU C standards); current versions still do so when compiling with -pedantic. Clang does not warn about this at all, not even with -pedantic. I see three ways to fix this: a) Add a get_vlc2c that accepts const. It will have the implementation of the current get_vlc2; get_vlc2 meanwhile would be turned into a wrapper for get_vlc2c, i.e. it would solely be used to cast to the expected pointer type. b) Add the necessary casts in the only user that wants to use a const table. c) Stop using VLC_TYPE[2] altogether; use a struct { VLC_TYPE symbol, bits; } (it feels like this struct should actually be called VLC_TYPE). Then adding const works fine as usual; it would IMO be more readable, too, because it would be automatically documented which of the entries is what. This is therefore my preferred option. Would you mind if I implemented this or do you want to do it? - 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".