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 10F6D40253 for ; Mon, 20 Dec 2021 00:40:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E792E68AEEA; Mon, 20 Dec 2021 02:39:58 +0200 (EET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074014.outbound.protection.outlook.com [40.92.74.14]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A4689680050 for ; Mon, 20 Dec 2021 02:39:51 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PJnIG2wzzFfTDLFSOrVJz/Xv11RUrjhe6w3lEmA5neR1D5rJ2aR1AEPrJ6wJMPmT5LIg+UVSOcKYig4T55dnqtLA5d9/PjrxJr9OvVr05weKTNVaJAyFVg7VM4VBrvZY8cMsDFByksUDD7sUy2DP8fzGLSl8iKsj5MqThWm1ofQ9hdmsMqlURB5WfBzox7vetHoz0bW698fm8wh2pkpHgSEh6fj/N3UKgpyAUVOTrrUWtLH9f8nrRu0bnhQEBrCjIG5/kIaRR8as04avOD0eIPHxp0+UIIqTHEiMtwYdCN+0bYTc5+9hBciKJQqd16JTHYed/gm5/Ti02wqysEm+GQ== 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=DNadZJuXPV2cTgbi2/rP2F0Yt1d5ZrcCIwnoJuZLr3M=; b=PasYefivjtW89P4a9zwF7sW9qyV6GMJekvQiT0ndZ2e6thTQkxFlDkIyrHTBeNxQzQiLXZquIgaibS7qHcIuYT/D6qCoAORvAOsvxJtMKPOOj712PLHmrqfmyA/gKJdHxNJCFFivwkb2CP52kgkvR4BNi7VvNq2zTF6FacwLezp6+IoZJZVI6sAzWiAqs2I0UiHq6uWnvcahQXpJKlYDN0iVCaQE+HcwJrfiJSPrIPARxq8LbIUuO7hoDuldbHnG31iMlI3zjWoCu8UyBiOjKAMruCIVXF+vZvMYCF4ph+uh8/Srrou1qxKUgHpMfNN/qrLSUOF0DcHroAFUM6rggg== 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=DNadZJuXPV2cTgbi2/rP2F0Yt1d5ZrcCIwnoJuZLr3M=; b=DqDzuhFGJL1xlA+KbYjYczv5MleErOe+quE+ZyF23549rM3EXwuzY4aDIUjLOLFG5mg3x5ulOAy1MO+nVpIBh+WNy7PE4e8OLBnfafANXor2fc6IinrEnC4EpTZLXxh+lkXH3wAKo+lcMbjzqMmWeJ/FJcXCIY5/+NduKmrXEGiIpOK6D3shZdmK5Q6J+/kq4YmU58/krtjQSU4NhSaXKTrVgMdE24vqsVXS995KovX0ugb7kN4THEeMf5njX+fXcwbxFPIPgG3+LEnAJMSJlT4P3mGHHinVuO710IRZbZoFtnuZr55uTb4yThm2A6ZqRJUET2Dm7d8UhSzEI583Yw== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM5PR03MB2851.eurprd03.prod.outlook.com (2603:10a6:206:24::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4801.20; Mon, 20 Dec 2021 00:39:49 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%6]) with mapi id 15.20.4801.020; Mon, 20 Dec 2021 00:39:49 +0000 Message-ID: Date: Mon, 20 Dec 2021 01:39:47 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20211219235700.16595-1-michael@niedermayer.cc> From: Andreas Rheinhardt In-Reply-To: <20211219235700.16595-1-michael@niedermayer.cc> X-TMN: [wJZ8I7tSMbPRs1fzHbkVWncxmqoyeW8S] X-ClientProxiedBy: AS9PR04CA0079.eurprd04.prod.outlook.com (2603:10a6:20b:48b::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <38eb6262-395d-4b0a-af7a-fa5a7bae04f5@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b048f7c3-dcb8-4860-dad2-08d9c3513a28 X-MS-TrafficTypeDiagnostic: AM5PR03MB2851:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SP/OfCZn5FI66fCzF5b94Y/hIlk7l8V9sqUnIHNktU8Mf4mcAn0kzEvTXbm0QsZhLxnnmvp/VBroDiW3oBiZgHAR3KJW6t788/kb7VcKsySmV8C7mT/8a/LBBZRqkdwNTeMPALuES5PLlp7n3+tv/BT6jTNQcCQUOBaOlijnzvIqkOCm6fwzqYelNAX3dwBxCbmY7vjn5szB+cvGwVvNgwSQYORpOhEkUj9rHggiKhR9pKwA7+qR8YSILg65J2SdvHT41PMwpSEY8wuQ7nqfKEaZSobKSFVmMjkTikRJj0bV1FUi0D/UKTQl41Jd2Ad/kFIRJxixmz562ZiI/x8PBYrqnmMyds9BYmOypz7NQE10fa7BefEi8DynNA2wBA7wbCnfCGIuYRXaHbng6P6NMYZESgbPMVOeee8D+W+w31QUTO5miukYQfwvtez4f0o82Hh7gBFawoLtYMsnACGKy/lNRghaLgG828gkmdEtUC3KkyE34ddb9rGx77r8ifrJzdJ8Ptbi9YsgECvg/sSlJQt34YMoyKCGlBJAgTDDmOMvltjdS5WkHyamCAKoG1FT8IQU7d98lZsbDSv0DOfAxw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?M0h6UU5oV3RrNDlPV0UvRVcxRHlTeHp4a0tKVTc0c09Md2o2dlV5MWNUd1Jr?= =?utf-8?B?eWxLV3o1MUkvZDJxMzJFZFVtd29rWERZcUxpbnFTV1dXaDE2RFhObmY5YnBo?= =?utf-8?B?anI0OXoxQ2RvUGVFRnJmZVE3bkxmYnNaMVA1SXFmZ3NlaWpXYTJDMWlyRVBQ?= =?utf-8?B?ZVFmU29UMlIreVRKMkJZWGl4Wk5TWlIxd2dENE14ZkplSXBEUjhqaWFxWmFN?= =?utf-8?B?RVAxdnFGSDVicHl5N3d3bGswcjJiUlRSdkJnY1BLYXlNbE5SZFQ4TG45SXhN?= =?utf-8?B?U1QzMUtwbnU4NkFkMXNNN1BxcElVRW9kWVNTdG9TdGQ4N0pta3VPeG5iR3pB?= =?utf-8?B?T2NHaUNqd0hXZTVUT2tzUlhzYnU5d1FaZno2NTlFbHY1ejVBSkI4N2IrRnpm?= =?utf-8?B?WHNRRmtqNDhZbjZCc1JRYW5zSDFiUTlDWnl4S0ZUNGhha2FmMmZJaEZ2dlU2?= =?utf-8?B?NkNjaFFacHh1dy9WUi9Oa2F0bnByQ1I1elVMOGlEaVRhTXoxRkVLUi9zcUpP?= =?utf-8?B?bDMwVW9pU3BHYkVlVitGWkZGZDZQeUZRQkpia1djRnVhZTEyNFlnRkVrakhl?= =?utf-8?B?TlVURVU1bjJBYXhJZklPcVpodkRROXJDdEJNVnN0NlRIYlNtQUM0M1VZWVVS?= =?utf-8?B?cjI0R3BXc2VWNWY0SjU5TkJ3U2lBdHdiRVFQOEpIZ1pxRFlzMEZaZzVqTW1z?= =?utf-8?B?c2N3cm5DN1UrZ0lRRWVHMi9xQlNXTXIrSThUeVJoTkZaTWlFQzNQWHl6cWlx?= =?utf-8?B?SzZuNjJWYml0b2lEY1NscGw2a1oxSll4dkc4S1NKelZWNXVpVkwyVWVhamFL?= =?utf-8?B?UHg3a0hkeDhSUXg1NGs1TW9HS3BiWUJWcUd4Q3NKNkRnbkc2RlFLK0pyRVVK?= =?utf-8?B?clVBMm9ZbzNmdGM1VmxwK1FRWmtXRkxPRFBzUCtCc2E1TDZxeWhsY2wvbFlh?= =?utf-8?B?VUhCMy8rWUozbUlKblRiZVh2ZHhZc3U2VG50cW95bkVMNUU0OVpnaHkwU2JQ?= =?utf-8?B?MGJLRDZ3UHd1LzQvWUhJNUtTcmxsM2FXNmtBdjJUQTVVZjgyeW56VlFxa0VH?= =?utf-8?B?aTlBcVptUExVN1ZWeFUyOTdtRGltZlhBdEV1U0RRVzZRZkpvSG1La0gyd2x0?= =?utf-8?B?aXFwQUZSMWlrNDFlelhzaXNEa0dJZ1g4bnNaOGpSYit3eHJZNENibTgxZU9j?= =?utf-8?B?Yjd1RHhFWWxPKy83dmtPU1ZxVXFaV1V2NHFlTmg1cHdDc0dkWlp2Sytwckk4?= =?utf-8?B?YjhWZkF5V0xZdklDYUFEOWY4MXVzVEhEVDc3NTRHNW83bDlqZz09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b048f7c3-dcb8-4860-dad2-08d9c3513a28 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2021 00:39:49.0002 (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: AM5PR03MB2851 Subject: Re: [FFmpeg-devel] [PATCH 1/3] avcodec/ass: Faster ff_ass_add_rect() 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: > Signed-off-by: Michael Niedermayer > --- > libavcodec/ass.c | 33 +++++++++++++++++++++++++++------ > libavcodec/ass.h | 7 +++++++ > 2 files changed, 34 insertions(+), 6 deletions(-) > > diff --git a/libavcodec/ass.c b/libavcodec/ass.c > index 725e4d42ba1..06714678722 100644 > --- a/libavcodec/ass.c > +++ b/libavcodec/ass.c > @@ -114,17 +114,31 @@ char *ff_ass_get_dialog(int readorder, int layer, const char *style, > speaker ? speaker : "", text); > } > > -int ff_ass_add_rect(AVSubtitle *sub, const char *dialog, > +int ff_ass_add_rect2(AVSubtitle *sub, const char *dialog, > int readorder, int layer, const char *style, > - const char *speaker) > + const char *speaker, unsigned *nb_rect_allocated) > { > - AVSubtitleRect **rects, *rect; > + AVSubtitleRect **rects = sub->rects, *rect; > char *ass_str; > + uint64_t new_nb = 0; > > - rects = av_realloc_array(sub->rects, sub->num_rects+1, sizeof(*sub->rects)); > - if (!rects) > + if (sub->num_rects >= UINT_MAX) > return AVERROR(ENOMEM); > - sub->rects = rects; > + > + if (nb_rect_allocated && *nb_rect_allocated <= sub->num_rects) { > + new_nb = FFMIN(sub->num_rects + sub->num_rects/16LL + 1, UINT_MAX); This presumes that unsigned is not 64bits itself; I have no problem with this, so LGTM from me. Others may disagree. > + } else if (!nb_rect_allocated) > + new_nb = sub->num_rects + 1LL; +1 is enough (it has been checked that sub->num_rects is < UINT_MAX). > + > + if (new_nb) { > + rects = av_realloc_array(rects, new_nb, sizeof(*sub->rects)); > + if (!rects) > + return AVERROR(ENOMEM); > + if (nb_rect_allocated) > + *nb_rect_allocated = new_nb; > + sub->rects = rects; > + } > + > rect = av_mallocz(sizeof(*rect)); > if (!rect) > return AVERROR(ENOMEM); > @@ -137,6 +151,13 @@ int ff_ass_add_rect(AVSubtitle *sub, const char *dialog, > return 0; > } > > +int ff_ass_add_rect(AVSubtitle *sub, const char *dialog, > + int readorder, int layer, const char *style, > + const char *speaker) > +{ > + return ff_ass_add_rect2(sub, dialog, readorder, layer, style, speaker, NULL); > +} > + > void ff_ass_decoder_flush(AVCodecContext *avctx) > { > FFASSDecoderContext *s = avctx->priv_data; > diff --git a/libavcodec/ass.h b/libavcodec/ass.h > index 2c260e4e785..4dffe923d9f 100644 > --- a/libavcodec/ass.h > +++ b/libavcodec/ass.h > @@ -118,6 +118,13 @@ int ff_ass_add_rect(AVSubtitle *sub, const char *dialog, > int readorder, int layer, const char *style, > const char *speaker); > > +/** > + * Add an ASS dialog to a subtitle. > + */ > +int ff_ass_add_rect2(AVSubtitle *sub, const char *dialog, > + int readorder, int layer, const char *style, > + const char *speaker, unsigned *nb_rect_allocated); > + > /** > * Helper to flush a text subtitles decoder making use of the > * FFASSDecoderContext. > _______________________________________________ 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".