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 65D5A47FC5 for ; Thu, 7 Mar 2024 08:13:44 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 777FC68CDA0; Thu, 7 Mar 2024 10:13:42 +0200 (EET) Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2106.outbound.protection.outlook.com [40.92.58.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A94568CCD4 for ; Thu, 7 Mar 2024 10:13:40 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TSH3IiRRSXIG7YMRsNITxu4aWp8JiqZ3RppQYVGASyuDZXdKTdWQEUovdo02D07tvA3cjxC/jeS8Vb9+ri42BqTwWsWnXvy32YEOI5Ny8vmej/yc30ht8NL7r+1sREKsujo8lIwPRiKaw2qAmELdnaTukyN5PXClds5zV1QlRs9SFUpVOLwj70eh8hX7WxK8I9IBa7mBWMy3mmwX/alNtqFwsITQyNEiW+Wae6Oi2tzHOA9U7bThGKjDLS2ILdePrcuFQpjp4cdozwz/rnHnOIjT+m/0Qq8T+wGhlfttYKRp9VjDq3QjnLjFpPJmLpLWD/JpUaqJCxE+v7XYZ/9IPg== 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=NsOaUXW1L6gqEB6QoYbMmUPMRYeDWMZfMNqiXJJMEEQ=; b=juZmx/MffMSdSscSFdcW2Pk0mbg8/vts/zEIsxSDLPTZtlNCb+N4qw+AB5ceckP/A3V+JBBBwqrVnRe32Ijuw/1qnXC2UVobd5EhJmB3aIOk4KZs+Del55D2zqccmTFa0cjGV2EG3vbXks00BfftY4vqKCGs+QYtnELzu9gJ3C8REqDPKR490wPFmSY4Mx+PA3r4Ngh+ISsxtMa1peSn1DCFmUlQ0uZoxP8zlfBeKq+F51QEbA64aJYTHdOauOtPQU3pSN55hXb/BQxsIvTd13xIZAn2a+QEeTiK8cvoR9vyPpVrsGgsjTsiLjZLaCHzThqFWaLHNeUn4ZisPQvC4w== 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=NsOaUXW1L6gqEB6QoYbMmUPMRYeDWMZfMNqiXJJMEEQ=; b=E09751/mhBFYz0YEI/gSSkOW93RDDjbp4LkjmfAFWYafQ8Nv/ix93BNpOo8JYT/kmYj35c6ad1dFDlOAIxSa1AAJ2jkYseR9anrgy1xgLDurtYivoOmKeHRzvsGykCfpyeXnzBhRiFQYer6eQZrweA3x/VsWyXanu3TdCXbOFOgY4vMOq+w4+FponSjD1kXQFoQOdALgeCT1+XAjNYrSU9ZA8XC74vpNrNRyIy4IM5wLxcV0Xt4RBa/uD1eY44Oedod3LPC3j3WKJKbSmNx6VOxmIz0XnlsL9MUaoGsGlG2MX3//gRHFa23fxi7FaUEizpL7tZ7P3eepW8tl6JUWBg== Received: from GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::15) by AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.24; Thu, 7 Mar 2024 08:13:37 +0000 Received: from GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM ([fe80::a8f2:5082:22e4:8d1b]) by GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM ([fe80::a8f2:5082:22e4:8d1b%5]) with mapi id 15.20.7339.035; Thu, 7 Mar 2024 08:13:34 +0000 Message-ID: Date: Thu, 7 Mar 2024 09:13:34 +0100 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [gIR27PqknblXIzhRi/ifEcPN7FYGM+42rvBJa6GrOvU=] X-ClientProxiedBy: ZR0P278CA0105.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:23::20) To GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::15) X-Microsoft-Original-Message-ID: <5f605357-03cd-4f0b-97e4-d4627d5bac47@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1SPRMB0052:EE_|AM8P250MB0170:EE_ X-MS-Office365-Filtering-Correlation-Id: 39f08e6c-2be2-4dd4-ed63-08dc3e7e7bf8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IQe2fn2YixPLEXNPEY8SZbMvmCnEt0dR671yPYBSOgAf6nuz4IC3tldPOoIAEK2HDxJyBsIE9WL+SfqRq9/qM/vH2SpLnMpe1DSBQYML+TfpI+VnpuD5PhlikoQUsvVX9sb0utgF5i8rYHdwiPUO44xfqQZnQeDZmFAUk5peyqZiRkuUgcTIx8f58HqrZL+TUVC5yxk/IDd7YgDdjVDYDKjQ4DzvREKVhXNG4IJ0Ju4vo1kypqXf25rhdOH9dcFYRDdtvmusnuzN2SHllibL/Lu6ARLBqlQY5hrP7Ytea79obEPnIw63YtNd+kBBJl06QrJDl5+9Nnz3kY10tKU/jlNeMqgrTOw5KO7GkO6eGA/78zojsBNdRP5Pyi1HVeF1hf+m6uyomXWDDBDzPxYxXfXWlODdrUlRJJmsfD6+Ms9kG2AAFE9vVB9uKkBUbh5ZagTXhAZWz/jI8UDY6xBdc8kaqS6KIAKT8s5aLSn71A6Yy7oJRvhydWiOhFwDlK/Soh7LWXammV5Z4QMPFEYACobv/1zMVX+AsQF4Dx1SdR1e5JzkAkln4VhCXF/yyD3SVtAcUWJ6oJ6BPkbSJPSpv8oV6IezV0m/XetR56vfrUBzXf9deHvjKnzKm3xvwjEqe6U4gygPa+fmqWGv7KztgayzVLT3bBh4xwQxRRIXxLQ= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b3BwYy9JQ3dCcFE0VVJham1uam5JNmdheU5GR0lOQUR2Q0JTRmFheDU5SkI3?= =?utf-8?B?bGRsK0ZYbUt3Mm5sbFVmUjhJZDR1YllTSjFKbDUwNDRLSHRmU1gveWl5NGJx?= =?utf-8?B?QVZHK0l3WDFkQldGQTR4dlU5eTllYURnMVF0V0NyUjd0TlM1cTF4RGVobVVo?= =?utf-8?B?cDZCRlAzc3NUcmtDeE41Z2szWHk4aFp4YTZTVmFId1pyZ3h0eXpIUEZQTUVv?= =?utf-8?B?ZW5Za1lyVFUvZ0JwbDZTSnZKZTA0NDVCc2syRmdod1JNL21nYThZQXFaUmtL?= =?utf-8?B?YWZtZXVNZjR2d2pJS2pJT0hrUHRpZURjOTRDMXd0Q01WNWJZQ1lqWDlkQmE5?= =?utf-8?B?NkdmVmRFMTlYNE0yaVlwamR0dkpSdHBlNG9vTTN3UWdzMWFQMjM1RzUzZ2RP?= =?utf-8?B?TGhhMDBBeWhxb0ZzUy95eGlzSFNnNDNWTGRHSTI0VWY0bU10cmxvTU01NFA2?= =?utf-8?B?cUs2QTNNZTJZQm9hMWZlS3JPRGpSdzNOeEtGcGt2YUQ1WitBNmtWViswWUdB?= =?utf-8?B?NVNSL2pneGJwbTIvU1kvb0ZTeEU1VjV5TDd5eVZVanFUdUxxbFluTytIUWtw?= =?utf-8?B?c3I0VHpncittaUc5N2QySW5RNFh5UWYzM3AwM285SFo2Z1VRblZxTVZ1bXYw?= =?utf-8?B?S0pHczlMamhOY3R5bVN0K1pqbGxMaVBkK1g0SGs0eGM1dzhlVWRvMk9kMkc3?= =?utf-8?B?dW11UFRsNzBOT2ZwbUplQzlKbythNGhXQmZEQmk1SVBXbEdXMGdqVVV1cmsx?= =?utf-8?B?YVVxL2pvOVpSZ1A3V3Q3eml4eFh6LytTVUFoM1FTL1lYdjgrYUgza3JMV1ov?= =?utf-8?B?cFBjQnE1OFRPdllHNDBZbWQ1ZzVvbGhiam9oQ2pEZ0xyM0h3Q0VwR25jUHpE?= =?utf-8?B?dlZjRUFGcHQ1S3A2RWd2YlAxcnRTNDdtK1BnVXJhUFhMQXlsWmRwUUtlYWdw?= =?utf-8?B?NXlqMEE3ZVJjdHFsay9MRVFmVmN6VjVwN0hqdnhXc1pXeVlMOEVqdTBHWEZj?= =?utf-8?B?QTgyTUpBVk1ObU1mOFBHQzA0aHhTYVdyY2w5SE1HbE8zN1FPR2dQMkkyMFFB?= =?utf-8?B?NFNlTGI1VXBxYmY3alorM1B6SlcreWljc2tBeDFhckpOT3B2YjJKZ1FSbFEr?= =?utf-8?B?Q2R2VEt0blI1Mm5VQUVZWVMxN1RvY1NQdTFsbDFGUzMraE1wU1MxSFoxMTF0?= =?utf-8?B?RDU2QS9pcXBMSFVua2I0anBoNHduWXJZUlV5UTQvREFtWFlZYXpkVm9uMHh1?= =?utf-8?B?MDl0OXRXNmNaMmR6OVlHbC9WSmV6RlhJcFN2RTd0NkFNQUFrUnpDckFQMkp5?= =?utf-8?B?QXdkWmRiRDZ3RHh5NWlzdHlJRDNqUmUrWlM2NTNuVjJtaEQwQjZNaE92SWZW?= =?utf-8?B?YUdZaUtlL0p2NEM1d1lKaEZVdmVKVEJyNmx6L3ArWWIzVEROYUtCUGpSeGZY?= =?utf-8?B?RFNrSFoxcHljbkFWbDNJZEpCNjk0Zi9MMjMrbUFydmpqdUkvTEkzMU9YZnBp?= =?utf-8?B?a1pFajNtc2phOStCMWZCd04xYnpCNG1pc1F4bkE0ck1RZFpMSDVaLzI5SFky?= =?utf-8?B?ZURTVWw2U2pac0xBVWtpTE5XdWRxWTUyL2ZsVHJMaUgxRWtqMDhHYlQ0RGtX?= =?utf-8?B?ak1QRDN5dmI0SE1TRE1VbVVoaGtTZ0JoUXFTaDhzcG5uMmFXZnRSV3NCU3l0?= =?utf-8?B?eVMwa3RTM2VabjRONm9ER1l5Nmk3UmZRZHV5WjZoR0xaWnJwWlpPTTRBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 39f08e6c-2be2-4dd4-ed63-08dc3e7e7bf8 X-MS-Exchange-CrossTenant-AuthSource: GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Mar 2024 08:13:34.8456 (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: AM8P250MB0170 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/ccaption_dec: Avoid relocations for strings 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: Andreas Rheinhardt: > The longest string here takes four bytes, so using an array > of pointers is wasteful even when ignoring the cost of relocations; > the lack of relocations also implies that this array > will now be put into .rodata and not into .data.rel.ro. > > Static asserts are used to ensure that all strings are always > properly zero-terminated. > > Signed-off-by: Andreas Rheinhardt > --- > Now using static asserts to address the main point of > criticism in https://patchwork.ffmpeg.org/project/ffmpeg/patch/20210106081702.2495510-1-andreas.rheinhardt@gmail.com/ > > libavcodec/ccaption_dec.c | 215 ++++++++++++++++++++------------------ > 1 file changed, 115 insertions(+), 100 deletions(-) > > diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c > index 95143e7e46..1550e4b253 100644 > --- a/libavcodec/ccaption_dec.c > +++ b/libavcodec/ccaption_dec.c > @@ -67,108 +67,123 @@ enum cc_charset { > CCSET_EXTENDED_PORTUGUESE_GERMAN_DANISH, > }; > > -static const char *charset_overrides[4][128] = > +#define CHARSET_OVERRIDE_LIST(START_SET, ENTRY, END_SET) \ > + START_SET(CCSET_BASIC_AMERICAN) \ > + ENTRY(0x27, "\u2019") \ > + ENTRY(0x2a, "\u00e1") \ > + ENTRY(0x5c, "\u00e9") \ > + ENTRY(0x5e, "\u00ed") \ > + ENTRY(0x5f, "\u00f3") \ > + ENTRY(0x60, "\u00fa") \ > + ENTRY(0x7b, "\u00e7") \ > + ENTRY(0x7c, "\u00f7") \ > + ENTRY(0x7d, "\u00d1") \ > + ENTRY(0x7e, "\u00f1") \ > + ENTRY(0x7f, "\u2588") \ > + END_SET \ > + START_SET(CCSET_SPECIAL_AMERICAN) \ > + ENTRY(0x30, "\u00ae") \ > + ENTRY(0x31, "\u00b0") \ > + ENTRY(0x32, "\u00bd") \ > + ENTRY(0x33, "\u00bf") \ > + ENTRY(0x34, "\u2122") \ > + ENTRY(0x35, "\u00a2") \ > + ENTRY(0x36, "\u00a3") \ > + ENTRY(0x37, "\u266a") \ > + ENTRY(0x38, "\u00e0") \ > + ENTRY(0x39, "\u00A0") \ > + ENTRY(0x3a, "\u00e8") \ > + ENTRY(0x3b, "\u00e2") \ > + ENTRY(0x3c, "\u00ea") \ > + ENTRY(0x3d, "\u00ee") \ > + ENTRY(0x3e, "\u00f4") \ > + ENTRY(0x3f, "\u00fb") \ > + END_SET \ > + START_SET(CCSET_EXTENDED_SPANISH_FRENCH_MISC) \ > + ENTRY(0x20, "\u00c1") \ > + ENTRY(0x21, "\u00c9") \ > + ENTRY(0x22, "\u00d3") \ > + ENTRY(0x23, "\u00da") \ > + ENTRY(0x24, "\u00dc") \ > + ENTRY(0x25, "\u00fc") \ > + ENTRY(0x26, "\u00b4") \ > + ENTRY(0x27, "\u00a1") \ > + ENTRY(0x28, "*") \ > + ENTRY(0x29, "\u2018") \ > + ENTRY(0x2a, "-") \ > + ENTRY(0x2b, "\u00a9") \ > + ENTRY(0x2c, "\u2120") \ > + ENTRY(0x2d, "\u00b7") \ > + ENTRY(0x2e, "\u201c") \ > + ENTRY(0x2f, "\u201d") \ > + ENTRY(0x30, "\u00c0") \ > + ENTRY(0x31, "\u00c2") \ > + ENTRY(0x32, "\u00c7") \ > + ENTRY(0x33, "\u00c8") \ > + ENTRY(0x34, "\u00ca") \ > + ENTRY(0x35, "\u00cb") \ > + ENTRY(0x36, "\u00eb") \ > + ENTRY(0x37, "\u00ce") \ > + ENTRY(0x38, "\u00cf") \ > + ENTRY(0x39, "\u00ef") \ > + ENTRY(0x3a, "\u00d4") \ > + ENTRY(0x3b, "\u00d9") \ > + ENTRY(0x3c, "\u00f9") \ > + ENTRY(0x3d, "\u00db") \ > + ENTRY(0x3e, "\u00ab") \ > + ENTRY(0x3f, "\u00bb") \ > + END_SET \ > + START_SET(CCSET_EXTENDED_PORTUGUESE_GERMAN_DANISH) \ > + ENTRY(0x20, "\u00c3") \ > + ENTRY(0x21, "\u00e3") \ > + ENTRY(0x22, "\u00cd") \ > + ENTRY(0x23, "\u00cc") \ > + ENTRY(0x24, "\u00ec") \ > + ENTRY(0x25, "\u00d2") \ > + ENTRY(0x26, "\u00f2") \ > + ENTRY(0x27, "\u00d5") \ > + ENTRY(0x28, "\u00f5") \ > + ENTRY(0x29, "{") \ > + ENTRY(0x2a, "}") \ > + ENTRY(0x2b, "\\") \ > + ENTRY(0x2c, "^") \ > + ENTRY(0x2d, "_") \ > + ENTRY(0x2e, "|") \ > + ENTRY(0x2f, "~") \ > + ENTRY(0x30, "\u00c4") \ > + ENTRY(0x31, "\u00e4") \ > + ENTRY(0x32, "\u00d6") \ > + ENTRY(0x33, "\u00f6") \ > + ENTRY(0x34, "\u00df") \ > + ENTRY(0x35, "\u00a5") \ > + ENTRY(0x36, "\u00a4") \ > + ENTRY(0x37, "\u00a6") \ > + ENTRY(0x38, "\u00c5") \ > + ENTRY(0x39, "\u00e5") \ > + ENTRY(0x3a, "\u00d8") \ > + ENTRY(0x3b, "\u00f8") \ > + ENTRY(0x3c, "\u250c") \ > + ENTRY(0x3d, "\u2510") \ > + ENTRY(0x3e, "\u2514") \ > + ENTRY(0x3f, "\u2518") \ > + END_SET \ > + > +static const char charset_overrides[4][128][sizeof("\u266a")] = > { > - [CCSET_BASIC_AMERICAN] = { > - [0x27] = "\u2019", > - [0x2a] = "\u00e1", > - [0x5c] = "\u00e9", > - [0x5e] = "\u00ed", > - [0x5f] = "\u00f3", > - [0x60] = "\u00fa", > - [0x7b] = "\u00e7", > - [0x7c] = "\u00f7", > - [0x7d] = "\u00d1", > - [0x7e] = "\u00f1", > - [0x7f] = "\u2588" > - }, > - [CCSET_SPECIAL_AMERICAN] = { > - [0x30] = "\u00ae", > - [0x31] = "\u00b0", > - [0x32] = "\u00bd", > - [0x33] = "\u00bf", > - [0x34] = "\u2122", > - [0x35] = "\u00a2", > - [0x36] = "\u00a3", > - [0x37] = "\u266a", > - [0x38] = "\u00e0", > - [0x39] = "\u00A0", > - [0x3a] = "\u00e8", > - [0x3b] = "\u00e2", > - [0x3c] = "\u00ea", > - [0x3d] = "\u00ee", > - [0x3e] = "\u00f4", > - [0x3f] = "\u00fb", > - }, > - [CCSET_EXTENDED_SPANISH_FRENCH_MISC] = { > - [0x20] = "\u00c1", > - [0x21] = "\u00c9", > - [0x22] = "\u00d3", > - [0x23] = "\u00da", > - [0x24] = "\u00dc", > - [0x25] = "\u00fc", > - [0x26] = "\u00b4", > - [0x27] = "\u00a1", > - [0x28] = "*", > - [0x29] = "\u2018", > - [0x2a] = "-", > - [0x2b] = "\u00a9", > - [0x2c] = "\u2120", > - [0x2d] = "\u00b7", > - [0x2e] = "\u201c", > - [0x2f] = "\u201d", > - [0x30] = "\u00c0", > - [0x31] = "\u00c2", > - [0x32] = "\u00c7", > - [0x33] = "\u00c8", > - [0x34] = "\u00ca", > - [0x35] = "\u00cb", > - [0x36] = "\u00eb", > - [0x37] = "\u00ce", > - [0x38] = "\u00cf", > - [0x39] = "\u00ef", > - [0x3a] = "\u00d4", > - [0x3b] = "\u00d9", > - [0x3c] = "\u00f9", > - [0x3d] = "\u00db", > - [0x3e] = "\u00ab", > - [0x3f] = "\u00bb", > - }, > - [CCSET_EXTENDED_PORTUGUESE_GERMAN_DANISH] = { > - [0x20] = "\u00c3", > - [0x21] = "\u00e3", > - [0x22] = "\u00cd", > - [0x23] = "\u00cc", > - [0x24] = "\u00ec", > - [0x25] = "\u00d2", > - [0x26] = "\u00f2", > - [0x27] = "\u00d5", > - [0x28] = "\u00f5", > - [0x29] = "{", > - [0x2a] = "}", > - [0x2b] = "\\", > - [0x2c] = "^", > - [0x2d] = "_", > - [0x2e] = "|", > - [0x2f] = "~", > - [0x30] = "\u00c4", > - [0x31] = "\u00e4", > - [0x32] = "\u00d6", > - [0x33] = "\u00f6", > - [0x34] = "\u00df", > - [0x35] = "\u00a5", > - [0x36] = "\u00a4", > - [0x37] = "\u00a6", > - [0x38] = "\u00c5", > - [0x39] = "\u00e5", > - [0x3a] = "\u00d8", > - [0x3b] = "\u00f8", > - [0x3c] = "\u250c", > - [0x3d] = "\u2510", > - [0x3e] = "\u2514", > - [0x3f] = "\u2518", > +#define START_SET(IDX) \ > + [IDX] = { > +#define ENTRY(idx, string) \ > + [idx] = string, > +#define END_SET \ > }, > + CHARSET_OVERRIDE_LIST(START_SET, ENTRY, END_SET) > }; > +#define EMPTY_START(IDX) > +#define EMPTY_END > +#define ASSERT_ENTRY(IDX, str) \ > + _Static_assert(sizeof(str) <= sizeof(charset_overrides[0][0]), \ > + "'" str "' string takes too much space"); > +CHARSET_OVERRIDE_LIST(EMPTY_START, ASSERT_ENTRY, EMPTY_END) > > static const unsigned char bg_attribs[8] = // Color > { > @@ -571,7 +586,7 @@ static int capture_screen(CCaptionSubContext *ctx) > prev_color = color[j]; > prev_bg_color = bg[j]; > override = charset_overrides[(int)charset[j]][(int)row[j]]; > - if (override) { > + if (override[0]) { > av_bprintf(&ctx->buffer[bidx], "%s%s%s%s%s", e_tag, s_tag, c_tag, b_tag, override); > seen_char = 1; > } else if (row[j] == ' ' && !seen_char) { Will apply this patch tomorrow unless there are objections. - 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".