From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 17D1A4E9E8 for <ffmpegdev@gitmailbox.com>; Thu, 20 Mar 2025 08:02:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 36DD2687B97; Thu, 20 Mar 2025 10:02:55 +0200 (EET) Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2023.outbound.protection.outlook.com [40.92.58.23]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5E316687B82 for <ffmpeg-devel@ffmpeg.org>; Thu, 20 Mar 2025 10:02:48 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bx6ei9gZZa9tRgXgZbxD5+pJ6l/c6w5ox2JJS11K0LV24vvtDaOrVVMCAKY+HRV4R/gn0I3hs8tS5xsTiXENJcPLoH1JsnDXCXIGlykLwRAWfRgm7SPp08X3sGHdL7piVCd1tkV+tJ3RUR9ZWJPUa6Z+4feHqVCljRNYn4Q5cchvOiMaByL7ZKck8tgXI06xpsFvTs3clQ7elshCDNB6WrNcspmtLDvmo94iF88P8PnhJHUTfUWzC+QYu1jzTr/39FBeiItdUsoHrVQF5bhNuWo7C+5qTKpKnWzBVVmrRbtJ3YXNjB6vbq9k1Aj6YyBve7aJUHFMb7RsTMTc1RKD8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=V2REyKNmaO5KZszCqxqyDTng3BanWp4riM9yUfqpc+Y=; b=BF6OmcE5VKT6QYKUTVLDnDfLPbbkQTI6Llb5M50cdufrlw5y6faZ2fZmU0UtOWl8FivqRfVsehlB+n85VScuhsUpIlL+9OZ+HtFig3WmeUYw2C5ZRcgBpw9doi3F9Gh/9/o40H9rb01tBy93JS3C+DIDTcKYsyaQwEqhVXnyMC6hc/Pc4dlURR71GhT7Kxlde3YaFFtbaqpICgQYb3WFJnA98ojo6VmUVwXWaTxoBIMsgfOOcJ2RWVcbg+Z5wQAYY8QWlAb0j0FCtkLMccy5uurz++dgStnq3hYLrDqqOzdFdC61KAEnDLiiUow/hsE9EWUzcmS8yPw3QFlf0aNqdA== 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=V2REyKNmaO5KZszCqxqyDTng3BanWp4riM9yUfqpc+Y=; b=qmRb/IcKvXs8CAxbHMnNVNytwtjBBZ3MWK/oQBnAffArVUWyYL8n1jObv7lMGJGTjaZGZ7M/LPF4hlgIYgToDHJraaIQ31v16pr9I+n94ffV/Mdje/Sh2D7+e529Uu9C8BL7w19M/2BBl6E96gNlYkccRCKA2eurJhb8MjJoyyfPcuZtgJa8uC7MCNUI2XHUIIccCK+BsQPom0kEYKCSNCqILPuoePbDJuG0CGmWzdZxDcBO5ohj3pdxd3lOVUNvWbWivNlP8BCSGKuc/D0FQVMTekQCcjz84XaUka58yO2YinfrZtNbjMu03d1/RncGyIa9ElaIQMu0uxxsI5BU6w== Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) by DU2P250MB0335.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8583.13; Thu, 20 Mar 2025 08:02:46 +0000 Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM ([fe80::1f36:56b3:1d04:c7a6]) by DU0P250MB0747.EURP250.PROD.OUTLOOK.COM ([fe80::1f36:56b3:1d04:c7a6%6]) with mapi id 15.20.8534.031; Thu, 20 Mar 2025 08:02:46 +0000 Message-ID: <DU0P250MB074785FBAC352DECD4E31FB88FD82@DU0P250MB0747.EURP250.PROD.OUTLOOK.COM> Date: Thu, 20 Mar 2025 09:02:44 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250320072450.1164-1-gruttersleonbot2@gmail.com> Content-Language: en-US From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> In-Reply-To: <20250320072450.1164-1-gruttersleonbot2@gmail.com> X-ClientProxiedBy: ZR2P278CA0089.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:65::20) To DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) X-Microsoft-Original-Message-ID: <34e72226-4bdd-4862-9bd2-8a093f891ef7@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0P250MB0747:EE_|DU2P250MB0335:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ab1186e-6f8d-447d-dd6a-08dd67859945 X-Microsoft-Antispam: BCL:0; ARA:14566002|7092599003|19110799003|8060799006|15080799006|461199028|6090799003|5072599009|19061999003|440099028|3412199025|18061999006|41001999003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SmY0U2QvR0hsZFZiOUliYndYbTc0aHZKSFhhVTBUTXpZb3drWWYzbTZFNnV5?= =?utf-8?B?SjQySnR6WjI2Y00rUG9lK1UvaURZUitSL0dKYVRUcE5qdElkRFBWbWdTdzZo?= =?utf-8?B?bU1hWnpVY2UzZHZjUi8xTFNGZmJidGxFdG9XdzFEK3A2TWNPSzhsaVFMeTRL?= =?utf-8?B?b05Qc0YrTnVwU3BiQy9VclNyVUJKM244ZnBIbTBDeTNEZk9LOUZDMWNMcWJz?= =?utf-8?B?K2RzYzBzSmRYRE9YakZJVTZ3YlUvNHBFekdEUWRxMXAxT2xsWmNlRUdRMG9x?= =?utf-8?B?OEsxcDFtRWxnM2d5cCtlcUx5eVpRSWxPZVNiZ3NSVEpGWnloNE5VbWdsMlk0?= =?utf-8?B?bkxJTWMvWnNzaDYwaXJrbExOQlQ0YmZJWUoreWQzYU0yYWozVjdsKzdPSlhs?= =?utf-8?B?WmI1OGtsdFNuTkpkQmFWeHlaQ1ZqRkkvR3JGcTYrbk1PM0d2VUJkZSswa21m?= =?utf-8?B?cDdkbDh2QjdZVTJ4OGwrTEpiZzJIME1jSkJLbnUyRnhQNzdRQWowaWpLL3pi?= =?utf-8?B?YVo0NW1XU3Y3ei9JYmgzL1RleU5iamlCR245YVF2ZXBobkhuK3RSdGhrVnFk?= =?utf-8?B?NUFaVHVkR3lTT3drbUhaMUZZNGljWWNzeGZCWHdIdUxqZW1wMTk1NVVzdjlJ?= =?utf-8?B?UERDYy9Fa3UxN0ZjYUZiKzIrc1JkeGlobkZvT0llMkl4MDdydUxZRWVXTFlZ?= =?utf-8?B?SC8yaVVMR1VVUnJubUhycU91T2x6NVRORHp5Q1NPdVA0Z2lnWWVJNWpnTzVX?= =?utf-8?B?M2pwUzdHZ29EUTREWkh0a0dJMFV5dVB6T3ovR0VtWW5LTkZTbDdURDVHSElO?= =?utf-8?B?T0lpSngyeHJ3azB1RWdjeXBGN1JldjVDVk0rN2FqZjV5eUh5SHIwTW1wSVBr?= =?utf-8?B?UlZEWE9paGJoZnlGUFZlME10UUE5eEZucFB6TzhKQ1htcktNN0xjUjNUNFN2?= =?utf-8?B?YlJ5WGVkTVNSc1FBdUlZZzM2ZldiWldZVmZuVVF0VXliWlhBTEpKTEw4eDhI?= =?utf-8?B?UXV6cWsrd3prSVppY1NLU1JDdkpFUER4dG93SlI1enE1bkRqQ2dTV2dEUzJP?= =?utf-8?B?YTczTG5vUVorNTEvTFdpWnlHYkZNaVZSVDBQeTVTUVlZK1ZiVjIzdEVqMWFX?= =?utf-8?B?ajgwanVtaGovRGc0eFNvNjRoS3o2TjFMYkRHbS9McVczb3VHaEk2OVJKckc1?= =?utf-8?B?dkZMNEZ3bFVEM2x2WWpLY0hBS2JPSERlbCszM09UVndnai9yd2l5OWllamdL?= =?utf-8?B?bkpHNkl0UC9YOHAxOW8vWE5WcDJIdWF3NE90aVpJV0FKMEs1V2RCTkFJUDVW?= =?utf-8?B?V2Ftb3czdzRhTHVTNjl0Y01iSWJaM0h2cndsY3Q5c3h5NzdQSGRrd2NOZUJZ?= =?utf-8?B?TDJ0UUc4TWIwVE1hTnFyV2RFNzg4SnNzcDZEM1Q3VldiSGxpMlNUa3lGSkVE?= =?utf-8?B?OVhPTUc5RWZWajBUV0pjeFVINjZ5TkpBck5zQmEreG9NT01sdzBXay91c3Mv?= =?utf-8?B?Rm9oRExqM0M4Y2ZXdzZCVHFNV045UTFrc09CNW42OUM4TmlvL3pobjFFVEpH?= =?utf-8?B?VXkwdjJ5dndKQXpxL0FDL1RtQ2pvTjBlZTBUWWozdGFlK1UvOHEzcEF2S25r?= =?utf-8?Q?d/HoK5kv9DuOsdM5AsXz0icWaW6EMNCeqQwtA+YeD0zY=3D?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N2d3Q2FLcWlocVpFdkRxSjhhdVVSbXMwTFpSVGF0cVFvYkVLV3g0MFcyT3Yy?= =?utf-8?B?UUxacVM3QWI3YmZqaGptVW5RaWpKZExWTExvMUhsRFJsV1V6Ykg2aUZPKzZw?= =?utf-8?B?UkczaVZOUlE3NU5scG1QK2U5VFN1QmxMcS9xZFhvRGpmUTYxdE55QlVraFNI?= =?utf-8?B?cVF2SFd2K3hNcEI1SE1BYlNLcUVVYU9nd0JvYTJRV3JYMTMydUt4ejREQXNO?= =?utf-8?B?Y2xobVVreCtDbHBtV2E3cU5FQ3ZyOGRka0xzM1NoUy9pVlNqYllwaG9yblVi?= =?utf-8?B?a1liMlRHS1N4aVBWaVJXdnh6ckZuR2UzdC85d1MwVGR4VjE1UDVNYWJrQnVp?= =?utf-8?B?cm5LazBGKzlCczN1MEFVLzFNZjlCYWtOVktMUUI5Mm9MTnpQczBsRFA1Vkp4?= =?utf-8?B?Q1VnbHdkdjd2cG5nazMxdnNYUVFsU0tIKzdkTU5USitGVVIxWGRMc3FNOXhR?= =?utf-8?B?MU5icWtkSE4zSHE0V3Yvd3ErbDVDRGJmU005SVhXQWZ6aE9XTTlIQm1DQXc3?= =?utf-8?B?U2pYRnhLTGUrTHVBSTZSYWxhQmdMQVE0OCtWMlpRY0wvY3Z3Nk1wTWZoU1RK?= =?utf-8?B?QlZIRGhzeUJCYW9QOWZFVEw5MUtHdzhPRHA3V1ZuN0tTamVMc1MwdXFmT3hE?= =?utf-8?B?MlNkTmNRbGZ3dmVxbWI4dUY1QkY2UnRpdlhuaHZCREFaSW9BMW9uLzdLckNB?= =?utf-8?B?cWxQdlVSeEhBang2dXA3MkU4a3NydVM1b3ZBczVkbVVPRmpvKzFSVGRBbTNP?= =?utf-8?B?aGlpL0NjRWFyVVB6a0RxbEoxQXQwQ1EyNVo1Q0orYTVHWFVNQmNNVmVDZW9k?= =?utf-8?B?eStBeEoxb0wxT2lLV2VvMVlEQzJudlRJd0QwSzRqL3hBYjhOaU4va0srTjBh?= =?utf-8?B?bW5JU0JoNUhjM1RGREFvN0pJdnBlNzNwQ1I2dG1YcjVEalp6TGo1ZTlwWlJ4?= =?utf-8?B?VXdjNEpyZWRFQ3JYczlETHRsc2FXRmtjMmpwWWIrZnoreXdvZVdFd2IxYWZM?= =?utf-8?B?MFlROWFHUWZjekt2cm9kaHpJcExvcWxXT2NIMEtLMFNEcVM1ejNLckxBSWhZ?= =?utf-8?B?U1UvV0dlWG1TL1F3ejAxUStOeGhrSXViQVJlZjRRSWxWbDBKUXJXN3dxYi9n?= =?utf-8?B?VHg3T1ZYeWRXL3pDcXkzWm5LVGQvb1lEdWtmVVd3QURuMTdHaFF5ZE9Ga1Vo?= =?utf-8?B?NEVrVWVDbUJsSFdleXRpQVc1a29vMHc4N3hTc2VXN2daUE5DaXdPNFNCQ2Nh?= =?utf-8?B?WVcyMzZnUFhGZ3BYdUV0a3JnTW1YM3ZCSG4wSXF6V0VCV1JzYXlmL0dxdzgz?= =?utf-8?B?QStVWTJhVlVXcktOYmR5WlpBRkxXc21zOFNSWE40TytmQlM1RzBRb2dSeDl4?= =?utf-8?B?L2dIdTB5NTFCK1FtZXEza2FnS0RwdmNKd25GRURvWVREMWpIblFTemNSZU0r?= =?utf-8?B?Z2U3SWhra3ZXWkhUQzRhaFNzZUR4MVdZV2pXUVVyRGRhaEdLcmNMa1NIUXc4?= =?utf-8?B?ek9zb1VBOUhjeWJEaDVOc25KeFJzUmxpQ3JmQkFIc00rcDlLVnJ6UmdnUjYz?= =?utf-8?B?eVltcm8zV2xhV1lRTmdSZ0p0SHM5bCsweXp1VlFCS0ZCWXpGNlN6NzBYc3Zr?= =?utf-8?B?OGROelNOeVQwVlhId0F1U1BhVkpuenBiaEZMS3Y3R0pGMi9GRWdGd0tDZVRt?= =?utf-8?B?QTQ5TTFzWkUwcDc5SGpoOVhJY1c5R0FYdVZVRWo5Ky9ETk91b0J0VmxBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ab1186e-6f8d-447d-dd6a-08dd67859945 X-MS-Exchange-CrossTenant-AuthSource: DU0P250MB0747.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2025 08:02:46.1708 (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: DU2P250MB0335 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/webvttdec: strip classes X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/DU0P250MB074785FBAC352DECD4E31FB88FD82@DU0P250MB0747.EURP250.PROD.OUTLOOK.COM/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> Leon Grutters: > If a supported tag has a class, e.g "<i.bold>" it is ignored entirely; > so for example "<i.bold>Hello</i>" would be converted to "Hello{\i0}" > instead of the intended "{\i1}Hello{\i0}". > > Signed-off-by: Leon Grutters <gruttersleonbot2@gmail.com> > --- > libavcodec/webvttdec.c | 51 +++++++++++++++++++++++++++++++++--------- > 1 file changed, 40 insertions(+), 11 deletions(-) > > diff --git a/libavcodec/webvttdec.c b/libavcodec/webvttdec.c > index 35bdbe805d..4111d138c4 100644 > --- a/libavcodec/webvttdec.c > +++ b/libavcodec/webvttdec.c > @@ -29,25 +29,53 @@ > #include "ass.h" > #include "codec_internal.h" > #include "libavutil/bprint.h" > +#include "libavutil/mem.h" > > static const struct { > const char *from; > const char *to; > } webvtt_tag_replace[] = { > - {"<i>", "{\\i1}"}, {"</i>", "{\\i0}"}, > - {"<b>", "{\\b1}"}, {"</b>", "{\\b0}"}, > - {"<u>", "{\\u1}"}, {"</u>", "{\\u0}"}, > {"{", "\\{{}"}, {"\\", "\\\xe2\x81\xa0"}, // escape to avoid ASS markup conflicts > {">", ">"}, {"<", "<"}, > {"‎", "\xe2\x80\x8e"}, {"‏", "\xe2\x80\x8f"}, > {"&", "&"}, {" ", "\\h"}, > }; > +static const struct { > + const char *from; > + const char *to; > +} webvtt_valid_tags[] = { > + {"i", "{\\i1}"}, {"/i", "{\\i0}"}, > + {"b", "{\\b1}"}, {"/b", "{\\b0}"}, > + {"u", "{\\u1}"}, {"/u", "{\\u0}"}, > +}; These strings are so small that one can avoid the relocations by using fixes-size buffers. > > static int webvtt_event_to_ass(AVBPrint *buf, const char *p) > { > - int i, again = 0, skip = 0; > + int i, again = 0/*, skip = 0*/; > > while (*p) { > + if (*p == '<') { > + const char *tag_end = strchr(p, '>'); > + char *tag_body, *tag_name, *saveptr = NULL; > + ptrdiff_t len; > + if (!tag_end) > + break; > + len = tag_end - p + 1; > + tag_body = av_strndup(p + 1, len - 2); > + if (!tag_body) > + return AVERROR(ENOMEM); This allocation seems unnecessary. You can inspect the string without modifying it by using strncmp() below and by using a maximum field width for the %s directive in a parameter. > + tag_name = av_strtok(tag_body, ".", &saveptr); > + for (i = 0; i < FF_ARRAY_ELEMS(webvtt_valid_tags); i++) { > + const char *from = webvtt_valid_tags[i].from; > + if(!strcmp(tag_name, from)) { > + av_bprintf(buf, "%s", webvtt_valid_tags[i].to); > + break; > + } > + } > + p += len; > + again = 1; > + av_freep(&tag_body); > + } > > for (i = 0; i < FF_ARRAY_ELEMS(webvtt_tag_replace); i++) { > const char *from = webvtt_tag_replace[i].from; > @@ -59,21 +87,22 @@ static int webvtt_event_to_ass(AVBPrint *buf, const char *p) > break; > } > } > + > if (!*p) > break; > > if (again) { > again = 0; > - skip = 0; > + // skip = 0; > continue; > } > - if (*p == '<') > - skip = 1; > - else if (*p == '>') > - skip = 0; > - else if (p[0] == '\n' && p[1]) > + // if (*p == '<') > + // skip = 1; > + // else if (*p == '>') > + // skip = 0; > + if (p[0] == '\n' && p[1]) > av_bprintf(buf, "\\N"); > - else if (!skip && *p != '\r') > + else if (/*!skip && */*p != '\r') > av_bprint_chars(buf, *p, 1); > p++; > } _______________________________________________ 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".