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 319CC423AD for ; Fri, 17 Dec 2021 22:15:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1BBE868A583; Sat, 18 Dec 2021 00:15:17 +0200 (EET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073019.outbound.protection.outlook.com [40.92.73.19]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 91F2668A133 for ; Sat, 18 Dec 2021 00:15:10 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Oh76mUpmJ1qgRLq6YiGnS4qsYqAEq71pNLeahaBPm6Hdw5i2yK1Dcb4HtHB4dUaO/meK3qeLmS4r64FfUy6ZgvaPyfMBbdC66pW5CtuS3CjDua6efv6mpziGDgM15FRFHArtq6PP0ko4eotITaaps9h0Qa26XN6jD/etMfQRaHUbexCdXv4hLlthFWf1g0/9K23et0jeKnJ5ihu23CY53AtESFLvu5PdDg97CLhWodE2J+znarJJWPL/wTcnEWxf5xgZpUxsUsiREjL0Yss1z+CkUS7j7DtCdvrLOVz0uU2ac/AyII9wZoTq8+qcPzT/LnKzHmrENaqUNocsbj/PXg== 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=KbmDYwGfiAKn/t9Kd/YNWoH9LH0fS7K4IP6t5uwoNRE=; b=QwIXj4TXbfP91msLG6MBRASovtQXJNkTgRj2bDTTmlb2YfPRs3QkFV2pyBbK07/wHx/6R/ixmxPldLVuA/iGpdUVEaNLdcFjQ2aY1+L1TzPlsoqMthO3+wT2wLdh3Hwx2D8VYNlrSZnS0Eb4ffGOhUU2f6y+VlDI2p/rqbqzW1m0I8QC2/mFNsQ2nhakKCJTr3Xf16vj90rduNoLuEs89DlQDdw2OsqtVArWudA965Qvpdz4xCX1Qu7LMePPrgCByEMQ9YsoXkkaVWn63gaka2cFwk0QeWMN5v6OCIwFRoeZbM0KSCcLIH6OK7kHsuU678L2j36Us9JGjYnQKNVIIA== 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=KbmDYwGfiAKn/t9Kd/YNWoH9LH0fS7K4IP6t5uwoNRE=; b=b3pwnm6VPTccIuDVFIFTKBs2cXjSUk9dADUL8qGg5zl5fv7LiefboUrO7tIPROIco+RfFtI1BIOLE0Ra804ihJVOUHvcn/17BX+CwFrw/txB7d4QCu+K9V74Xj5Y05tuvJc7dRCIes0K5XHsjI6UsK6oDx4SOFSkV8JJJGESgdzAeOYn9i/NRKGMIHz5uRyob3SJd307tDmeHirOx4cwCkr5+agcHJvb1mvysvh+qfnFdSnmch4RNN2MxnBRMsob+K6x6XxfBrz28p+Af8lrGFJatqY+vcUiRwEjuzLcgldFpc4kpzWajYPPl5GIosNZC/keaCzfZZVbnmOpmwfsbA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4952.eurprd03.prod.outlook.com (2603:10a6:20b:8a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.17; Fri, 17 Dec 2021 22:15:08 +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.015; Fri, 17 Dec 2021 22:15:08 +0000 Message-ID: Date: Fri, 17 Dec 2021 23:15:06 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20211217215155.19805-1-michael@niedermayer.cc> From: Andreas Rheinhardt In-Reply-To: <20211217215155.19805-1-michael@niedermayer.cc> X-TMN: [3cyNppYq+ml8zxDOkcZPKh9Rlu3Nk8sy] X-ClientProxiedBy: AM6PR01CA0072.eurprd01.prod.exchangelabs.com (2603:10a6:20b:e0::49) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <87d93c61-0a44-a190-007b-1cd00c15ab11@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9897806d-37a7-4e66-54f1-08d9c1aaaf3e X-MS-TrafficTypeDiagnostic: AM6PR03MB4952:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pT23xvbEA+Q7y9QKF0qws64GfR63qhhnecujuiggEdF9wqzh+7hiE8BtQVfc7GrV5m2vMyRRRsykdegp4Ap0z5ecGq0JACKBerKYLFkjLpVJd2tcEmk+B7yo9ohy/ZzPfx5o4M5qstOt4z6Q9uzZ8GuCwFmodrAwaaQwYTcKFpg6c1G0j10ruIoFjbqMOQej30J9g07+4QECvMGCHQ+iad4rAwvZAD0ot/CX2MV28h91WlbnBdPRq/P9q75YIQL64r9eRMY7UaPL3ofj4e0ms7fAbQxthorPFupma+1ZQQ8zMCl+FiVGORnK5spnbxL+R8WFjwMgg6JmGph9wJtnueg9M7Gy388vc44DSgqwJcZvR0l3uN01a3spu1Adx25JMuxNGHCCzxtYdRdeYtLBYcIxnTwSR6uI0xU4xa71puvVSZ52+2FK+03WP7lCkwJbVTianKT7Mq3nOQzEAghI6OM+MTJR//fnEkrSJwO8n51TAHQVQb9QDlnIKc2QRb4a+sIGF5+jH6VJdeY+uPwzEiNtIuaDmCsbuuf9eO6HACEB8g2mV18e1h5uKkvT30/kX2eW6wLPikmmA1RxftWx3+J/XIs2JG/au6iNpoeo+liiyJFc5XO5W4UNJnbQ3vDf X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RmJITnJIcmNEejZBdGI0T2paOFF1STlqc2hSVnRkMFNESWVGN1l3amlTNXFB?= =?utf-8?B?RUU3eXdZZnVVamM3TWZ2L1VFZDV5Wnlndi9iTkZFd0I4dVk3UVNkdXdjSDZB?= =?utf-8?B?eUlkRWNFUW9LUU1TSm80ZDU0MWxuUlhLanExamVhbmltdE81MkZzRjBlNlB0?= =?utf-8?B?cXNkWVBaVVV6bWxackY4K0x6WWZDNy9mdGlqQm1FVWgrYW4vbzdwSDNmazQv?= =?utf-8?B?anQwZGFBRFBWZnYwZzd2VE5tL0QwVlJ3WW4vTU9qQ0pTdzZRWWVFTnpiVHlT?= =?utf-8?B?bGlWR1FrUGZLNWxrUklmMFlTUnBvRWdzaUtwdmZvWFhPOVdPSC9EMkk1eExV?= =?utf-8?B?MStnUU9RYlNFbTBLOWVaalFJNi94UFUvbytBVGE4ZWJ3NlFHdEJSd3RheXJ3?= =?utf-8?B?ZUt0UkNKZkdzang4R09xM09JV285ME9LTlZaMmdacVJYSHRQZzlHd3VUM1lR?= =?utf-8?B?ajFwNjFObjZVdDRYYVZlaHMvOXRNVnFCd2s0alVlaDlQSnFGWVlIVVZ5Rk1E?= =?utf-8?B?TFg4R3dLbmE4dmlSYmVCUzRqZ1YxQUlXcG9maFkyaWJhUUd5SWErR1djRVlW?= =?utf-8?B?U0E2ZmJ4ZzRYa2xiYncwR2ZiR2hvVk83OUJSY0NQNjliNS9vQ2JJQnhYVTJN?= =?utf-8?B?R1VZN1pxL1h2SzR2UU1SYklwVTJlM0pHWTFkOEFYcmVZM1lURnZ3RXBQNS8y?= =?utf-8?B?eHlqajVrOENkbHFNNWhlVUM0azhrZ3BwRjFQUWwwam0weXUwOFZPSkNBTlpv?= =?utf-8?B?eFFwUHhzSzdTbE9ETmJkNEVtWXVxV2lESnYra2dzY0szV2tQODMxNGJFdmdC?= =?utf-8?B?dHVBQnJVOUlxT3p0cS9JSDNNT1hxZG1BUERiSHhrT2gzVDRobTd5ZjF5K3V2?= =?utf-8?B?b2ljcnIzUGNjdURBSlA5WEc1Ulc2eldhYTd5OWw4ejMxTDVwZkZlK2dPMDB3?= =?utf-8?B?aDMzZ3VMT0wrb2sycGxvUVpNVTBHaXNFRitqMjg4TGlCZXVaZWlZcWpNUVZl?= =?utf-8?B?RzI1MVJmZFJSQThhNTMvME1QUmhxTENlWmZPSWRCbzVHejU1QjRiWmc4dFlP?= =?utf-8?B?d25iUU1IS1pLVVdST2IrYWhkWnJqYitIcnJLYUI0a2ZQbzhROWhveklodnN1?= =?utf-8?B?UzhkQkpPTmg1YTBWcndtVEp2NHJmSnFVMFFkMWJ6TklkTUhtMGM2UzNGMkhj?= =?utf-8?B?cnAyM2Q4aWlEM0ZUM3ZuRXJDUU8vVUtocWt1YWIzc1pPMnM0ckVmbFhkSkVC?= =?utf-8?B?NGoxRkc2V3dHNFB5Rkg1T0NTUDNFL2ViSzF1cXZRZ25HMDdTQT09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9897806d-37a7-4e66-54f1-08d9c1aaaf3e X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Dec 2021 22:15:08.0052 (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: AM6PR03MB4952 Subject: Re: [FFmpeg-devel] [PATCH 1/4] 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 | 32 ++++++++++++++++++++++++++------ > libavcodec/ass.h | 7 +++++++ > 2 files changed, 33 insertions(+), 6 deletions(-) > > diff --git a/libavcodec/ass.c b/libavcodec/ass.c > index 725e4d42ba1..d0a4d678bb4 100644 > --- a/libavcodec/ass.c > +++ b/libavcodec/ass.c > @@ -114,17 +114,30 @@ 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, size_t *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 (nb_rect_allocated && *nb_rect_allocated <= sub->num_rects) { > + new_nb = sub->num_rects + sub->num_rects/16LL + 1; > + } else if (!nb_rect_allocated) > + new_nb = sub->num_rects + 1LL; > + if (new_nb > SIZE_MAX) > return AVERROR(ENOMEM); AVSubtitle.num_rects is unsigned, so this number should always be bounded by UINT_MAX (and nb_rect_allocated can be a pointer to unsigned, too). (Feels like I should resurrect my old av_fast_realloc_array: https://patchwork.ffmpeg.org/project/ffmpeg/patch/20200101132758.4452-1-andreas.rheinhardt@gmail.com/) > - sub->rects = rects; > + > + 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 +150,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..784f46c42c5 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, size_t *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".