From patchwork Fri Oct 1 21:08:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30879 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp2090086iob; Fri, 1 Oct 2021 14:12:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwLakEUSvWcNEM5S8EMK84NX/3mRpEZQO1iOnM/Hs6t2bghJhyyMwNLWpyzuoUjx0HcdHwt X-Received: by 2002:a17:906:2a8e:: with SMTP id l14mr105055eje.321.1633122734810; Fri, 01 Oct 2021 14:12:14 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u23si8931072ejm.298.2021.10.01.14.12.14; Fri, 01 Oct 2021 14:12:14 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=Cyp3BjHa; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D624468AA3C; Sat, 2 Oct 2021 00:10:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068089.outbound.protection.outlook.com [40.92.68.89]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C3CB468AA63 for ; Sat, 2 Oct 2021 00:09:59 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aYvcruSr1sgjgXxhIYuWqNIfoCRmQ7fcL+iKGi4ZdrJL/AzpgUliG0towGGCcpRb7KMQc7co+SmWJ4PcXoVUZtZFeIFU+r6f4xrPaDll05gutJy7rhswAJeKQrxmlNrpQWTZ53Cx7QzNgKx6mNPXKkhM0hgfPn/dSG3mKVwnzEgt16UpwWIY8yIRM6Ye2o7+nbfZUMU+DCU5gMrJLKZzdE5+6VC/uuQEk/zA/7iPF9GJDAqsJ3/QPv805V8Ia85wDGtsJ4ZUv93RERwAf8CJRQezpvwfu4dGh7xnlUy732ljnvEQpjJVNmp1UejZCErnnVK+pXV/rT/nUMyREgjWAw== 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=/HtYICkeBoaiz4q3Baxy0e0w6Gv6epSgqmMdxOsJyDY=; b=FszR/m7MnM+F9lPRKRiot62Ct2N9Hx3IrnZvl2WMszWXmgoBY8qeuqWCbl3dWhxiaZbUYoBbIpwWIk8fo0VL1mYZw7MwwOeO+T4qjpg8jqZWmGrlp3n/4g1NRXzhAt6R0DcLPM/cxODi2s/zdtx4tB+eVHU7AUbkoDLIB9QpriqBTPq8D7lnlj/D/y1kOYgQsWV9XYigjf1lC4PZ4vT+D/ztj5AfWsQZctLaZtzWQDLNLnPqBYt8xz28BK10s3qb+Z6e5WCYUM1nrKUvUDgMgpK6yZZdTSS2xbIDgjBR1rqCf1wnDX5ME9HFqzbz8el2WCPfaSJ4kE4R+j7HShsg2g== 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=/HtYICkeBoaiz4q3Baxy0e0w6Gv6epSgqmMdxOsJyDY=; b=Cyp3BjHaK7X1AJu6qlF8JMapSmKUXthIT0SKjO/Fi6s2rQNa9+HPv7N79z7N6FOEggtzN4HJ07DBEHx+wq6QV0zGefndWBL/uth/O4c48kasWzTQInJk7NoXpZTGZW6R6MDbmXGMXkX5wMkekLMXvGyhH+J0VTliBwv4Jagfa1R1NNmWFvLyw0UzxVbUZxY6axjlsd6c2cw6IPRmdLkI5bOypnirVGCzaj2j1Wq0rrnbX85hbYCm5WZlXtBm+cJA0o6z8fa8EHQe3b6FY4Ijf++y+q6z2c258kau1WSGTAfIG7hQoXHqfcdaXZXPpTJOQaiqtj0MelObh+3p8JEW8Q== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AS8PR03MB6952.eurprd03.prod.outlook.com (2603:10a6:20b:29a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.17; Fri, 1 Oct 2021 21:09:58 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::700f:d70b:3bb8:4d51]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::700f:d70b:3bb8:4d51%7]) with mapi id 15.20.4566.019; Fri, 1 Oct 2021 21:09:58 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 Oct 2021 23:08:35 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [5PAB76bVrIrc1d6ykEg/IONtPAafzh6G] X-ClientProxiedBy: FR3P281CA0071.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4b::7) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211001210837.2879205-17-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by FR3P281CA0071.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.8 via Frontend Transport; Fri, 1 Oct 2021 21:09:57 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0e481936-13b5-4346-c7a0-08d9851fd305 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVM2asYY12qjM1/Eg4mHSQyQbx0tG2k6hIj/r8zekBus/lOOhJ9pUbV0ob1F5Uk+X8vBfompf3Sut91/DdpQIDeHdV5Y/07ISnn9w+zMhGkmQsuGg0YQj003Wpc/BHH5tnTE89gLLIj4wDhb2vI0bHMBO5Lp6z3qtZtIG4GX5Oogs8tgSH6L151xgGe+VgoIz7OMma5K8sqPe+33FstlkVIQRt/lCi9PPIc1pAl3RTEg+KG0BQwuqyTP0OQ8fU4J6n//owgZYwtyyXwyTLSOKoVqFsSxN4QHM6Ir+XFIxbJbhIDB/cIGd2K5kVrikltSK+6LYJOebrQNEfEzTMtAHAuN+msPmo6mDNknlQD/ZO0l7dO2axGSHOd3vAzzfXpckDERUSF+f2ouhyPkL8yY29XHYgsNF/sLLlDthUWuSxMkGrUN4mbO8Oa4iAd/XUUwWZIWogPkIhi8CVZFdc1uD0YkTWsl33aKIJEpJngEdzTTAOmKRSB6U/eHI+aP5Fk87MxN46zzZsHxymOTmP4zzw2h6sdxKIjgueoM7beWsBx2zUFKXZpgxYCV9y0YuZgjgHyr8jToQ1PGtVk9yzmVlj3xfPPOEsDsy8SO1fWSWoFUyUx3LJJwB6CZhw+MZjB3IBCuCvn6vw/b8vW2tMGsILSXnNXPz8m/YRS4xgLQPxcEIM9VH3x0tWhdC7fFFLu/BqtLad6vmbbBB7VHlblHkUfeQ9aXwh7v48= X-MS-TrafficTypeDiagnostic: AS8PR03MB6952: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qC5/kien7j38SZLF8DX0l0t/MyGIpVIUtIE3M5MAXRUWtFXyD9QlRSLhwBjXf9GA1Uf9+pp5Ggma+WtlJ2TJqpEErzGAYVet3mt5sFLOhgLRdT/UbDAuoSBVR2770DY8O9hiN+S0V1niWFwyHHC3+qwk0XiDMa/hlUpoxVNUSIGAudYHAgzTpm5vOHD/pT2bNtkabjb64zBL+l4AojDtiQSEHZg/fRRkRaoRBumYhTn1TXwSFNGrsi7E0H9BpXnCjYF8mdc6IAGudgXL4mVfDfBrVJsq/sG14I7I/LbnVC2vbx7AKnwbadujPQhdp8uQsG6uC0FNudZIIF/v3gcmIztmnWWnzoeuBGDJGz/Ru0uawDVlZypfNt40AAuyWxn5MzyTLDC2Ll9l/iVis9mixbcoW5keBMv6dlbGpi/GfLnFgePizQfawmcP12AA+k0s X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: K648XGcYnyrojtcMT+ryjxOjZzQLJ3slhbDhu8np6nD4pws7Y9tCkRZqwqIKGq2VqRCcZEBjMfK+XaNc34c75wnfs84TysZu7HBq2afE6ocGuMFEW+mtCVcOnXx6GozC2LPW99utGlaZxGysviWEtQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0e481936-13b5-4346-c7a0-08d9851fd305 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2021 21:09:58.3484 (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: AS8PR03MB6952 Subject: [FFmpeg-devel] [PATCH 18/20] avformat/lrcenc: Avoid allocations for writing packet data 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: GvIP+T76qEbD Signed-off-by: Andreas Rheinhardt --- libavformat/lrcenc.c | 44 ++++++++++++++++++-------------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/libavformat/lrcenc.c b/libavformat/lrcenc.c index 0de0bb18f4..21cb3860ab 100644 --- a/libavformat/lrcenc.c +++ b/libavformat/lrcenc.c @@ -86,33 +86,25 @@ static int lrc_write_header(AVFormatContext *s) static int lrc_write_packet(AVFormatContext *s, AVPacket *pkt) { if(pkt->pts != AV_NOPTS_VALUE) { - char *data = av_malloc(pkt->size + 1); - char *line; - char *delim; + const uint8_t *line = pkt->data; + const uint8_t *end = pkt->data + pkt->size; - if(!data) { - return AVERROR(ENOMEM); - } - memcpy(data, pkt->data, pkt->size); - data[pkt->size] = '\0'; - - for(delim = data + pkt->size - 1; - delim >= data && (delim[0] == '\n' || delim[0] == '\r'); delim--) { - delim[0] = '\0'; // Strip last empty lines - } - line = data; - while(line[0] == '\n' || line[0] == '\r') { - line++; // Skip first empty lines + while (end > line && (end[-1] == '\n' || end[-1] == '\r')) + end--; + if (line != end) { + while (line[0] == '\n' || line[0] == '\r') + line++; // Skip first empty lines } while(line) { - delim = strchr(line, '\n'); - if(delim) { - if(delim > line && delim[-1] == '\r') { - delim[-1] = '\0'; - } - delim[0] = '\0'; - delim++; + const uint8_t *next_line = memchr(line, '\n', end - line); + size_t size = end - line; + + if (next_line) { + size = next_line - line; + if (next_line > line && next_line[-1] == '\r') + size--; + next_line++; } if(line[0] == '[') { av_log(s, AV_LOG_WARNING, @@ -132,10 +124,10 @@ static int lrc_write_packet(AVFormatContext *s, AVPacket *pkt) ((-pkt->pts) / 100) % 60, (-pkt->pts) % 100); } - avio_printf(s->pb, "%s\n", line); - line = delim; + avio_write(s->pb, line, size); + avio_w8(s->pb, '\n'); + line = next_line; } - av_free(data); } return 0; }