From patchwork Thu Apr 1 21:26:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26696 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 2D18B44A5B2 for ; Fri, 2 Apr 2021 00:26:55 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1A6DB68836F; Fri, 2 Apr 2021 00:26:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2031.outbound.protection.outlook.com [40.92.90.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4934A68836F for ; Fri, 2 Apr 2021 00:26:48 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WMLS+F9KRcPiSpAnyTLA5s8jGiK2dD+nXAdPtGc0lT6A8TEt9sXYkCpMBOsTxU3G5ZwlxoCMV6uwOXTTrpXyCgLuy4LFy+FZf//LF/nEV+EJYpj1JZAjb1okKkgUirZEPt+kQJ49+SbBQO1AA2oay3t4D/VRScxoAES/YdeLol2+JSrEdCY624uxXEbbdPafiXwX2cru9Fw9uGSsehs0cn4ksU44yI9p0BAYcWowKi1V67xS6z+QaPhU6hXujVhYO+02mkCC6HPD0dRMhRif/xCBL39BmCiIdPM5ru+jZP/oeeQhMVbusu9QNZK+9LcqGaqt/dkad2fcUSSKjCdtzw== 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-SenderADCheck; bh=vtkkBGTFwCRvA83OkQMSD4dI7IaHaTREfksaoVZ2EwQ=; b=kIiOsocMI+SZF6KU+5umuuh4K4HW2K4ARmRWNJJbkIPIufSCbX8hEkBRspUWxp+lSgnB2k14uSnSJ3bpu1bYt5xc4UT8OxAJCS/EKVQoYB+8LcJ1ysEavSeIhBu7whX1zTqfAUa0Gfje5AB7tfEqa1/9Lj3tLxV8IlHeLQst22MwdpW/mL90OsQaIlvlPH6L9antyKPUFP9NQL2ND4Kqo/1nbnHZUFKSHEWOWuvf7+kgSn7S7/2BTb91W5/21T/B2ecIU8/y6sRxFAEw/W3bqyiGZJtG8wUQfAL42azyaeNgTNfz5Fdp7jfPPMhq/G68q/KGpO40ZBeYK9jXlOxgdw== 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=vtkkBGTFwCRvA83OkQMSD4dI7IaHaTREfksaoVZ2EwQ=; b=e1X57Crh32Yupg1xImB8VS7HBzZM8wfhdw9/r3HQCWEZyhWXtl7+oIL7LIgut/KI22qZU6NjhqUy5OEdIdluqWKd65ltwMfrH44cBSi1j++wbRxc8k2U/gtmX+8ih+b8MUEI//Hqr9dR5jbHWsT5xSroUx/7hgETIF4F2DrsW8YPtbuUfeTp3j+maSs0Wo95enHcKDPW4fqcLBTbWWU9dWkkYYTY5rgfH4UMS9eRluK0PYbsURb/g69CllDhCdHR3wHEZYc5XoCAkRiGuMZOwX8ehMqdlkdiOFu9IdE0cecFodiHhOTN6FQLL4pH0LoIMyNftZ3ZcurV3RJXvMXT6Q== Received: from DB8EUR05FT053.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::41) by DB8EUR05HT070.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::94) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Thu, 1 Apr 2021 21:26:44 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:fc0f::51) by DB8EUR05FT053.mail.protection.outlook.com (2a01:111:e400:fc0f::98) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28 via Frontend Transport; Thu, 1 Apr 2021 21:26:44 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:D5EFF5EB58537E134B04FF3B1A1663C4DC9CAEE71D276FFA86B821C8C29B9EA4; UpperCasedChecksum:75BE971C0FDFA0105EC2602BBE25FD9F52A389F72338C682519070090EF8261E; SizeAsReceived:7578; Count:48 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::8128:5de5:4e94:9a21]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::8128:5de5:4e94:9a21%3]) with mapi id 15.20.3999.028; Thu, 1 Apr 2021 21:26:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 1 Apr 2021 23:26:09 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [o2FjL2od4xMjagz7Wg+hQGoFQ2vRpjva] X-ClientProxiedBy: AM0PR10CA0016.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::26) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210401212612.2343423-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.137.96) by AM0PR10CA0016.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28 via Frontend Transport; Thu, 1 Apr 2021 21:26:43 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 30c14bc3-90db-4726-f043-08d8f554d908 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXIGlc7gHXb8Sy31K73vdRqpC+CEvkxLYCqLTw8TC3KmdGBBMIv5gvx+uvql40rJh8/C0bFQhKIsNLOgeS3+wbNQGTZmtKJozy6/xUT993ewCVasgqwImrjnTj/8raoHsAYYotdbt4psv/LLYkhvnPmTVV+i5BQiFAY9zucFdHxjiTnAed6xiQB7KOGQ1hftATEkXv426Rwm9zDc1Dx+/qsGcbWX4wEY87pphuOa3muS2fKbWNkKmrnTA0q0gHl6StXSQq6CruruRpDUm+oT5McfytdidDNlXhzOiW46cpljWOjwvTeXDNw9APNg6/JVG6Hq9u2/Uu1KwJSU9J4HyxUolPJt+Bi7teoVEQy9NxZMY9onKCTCGq1Rp6mfQZYauwh2hH3O/o3cXYygFTex81Rc+hj0tz/KQ6XpKf1EivF0ZWHA3Tu8IhsnvB06cpIFJxmsAH1JrSq5LMVNeIbq/UqmPMd0oW6lqMVlaBRdCl2JfXE4v3QEThimt2OcDf/FR589uZ2PAOoosRQZLYef82PZ+UWyQ1JFGSIe55SWet6hX1RWEF8r25uoJ1ee4gOTPlODWFAfzNsOQCQogXhNddrGS0tTvXK5uObFO67qOs38Q91iRQJZRpAgZGIG7TBHyaFObvT2epqMgSAtZbRYdHVz6rEpoKASEmvR773TTGzJVtDfKk3tJ79eoHtARwRxr8mtwDWbw7FL08jfy9IDZX5Qj7K7xETxww= X-MS-TrafficTypeDiagnostic: DB8EUR05HT070: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5qI+F2L00D03JFlH9vKql0DgVYSn+u9UTJfzIWaJ940hI8dxC+aF5QUIMLt09xSb6coskX9e0ACHe93FMZXazdkBOnQBKV2DBGnDh2A+htWVl57yc1t/AqT9lOIejTizIln9fPZOiKtX2YF9D3Ua5ytlsgYGKy1VplToLplRZC29CpPauUVgnZ+jKNSHBSMGdrC+zGUkkNwvvAuXrbey81kcoJl9I5++Rtlsw+JRzdhc98mwm1JAYYfGePonsr8AgzA1T4k47aG3YM0jcko8lvitlNRR+OvuiBFIg1/Ac2FkweySxBaJHKAUZ7lUTay9spGBcplLwjhxTVqkD353eROwRnz3NbPKIe4+rc9Szhzojf+I8qpv57bLPUdB4c4sXPd5gwTu1q5FP+m2zaH6iQ== X-MS-Exchange-AntiSpam-MessageData: /lAKkftlPVyVxAQO2c49bgS32UUC24fWXa19jK7d775I1KAWbVxpcO7OGrXHeSEVgyqLGISV651mcxLUF7OPdEB7x+gGPlcMp1HPTtscA8HT0MPwLT5JEEL3oGhvaPnMbA45lY2kW0oTcZS85SQTMQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30c14bc3-90db-4726-f043-08d8f554d908 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2021 21:26:44.1864 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: DB8EUR05FT053.eop-eur05.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8EUR05HT070 Subject: [FFmpeg-devel] [PATCH 4/7] avformat/dss: Avoid using intermediate buffer X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" All one needs is one byte beyond the end of the normal data; and because the packet is padded, one already has it. Signed-off-by: Andreas Rheinhardt --- libavformat/dss.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/libavformat/dss.c b/libavformat/dss.c index 0b6d68af99..f4545326d2 100644 --- a/libavformat/dss.c +++ b/libavformat/dss.c @@ -50,7 +50,6 @@ typedef struct DSSDemuxContext { int counter; int swap; int dss_sp_swap_byte; - int8_t dss_sp_buf[DSS_FRAME_SIZE + 1]; int packet_size; int dss_header_size; @@ -182,26 +181,23 @@ static void dss_skip_audio_header(AVFormatContext *s, AVPacket *pkt) ctx->counter += DSS_BLOCK_SIZE - DSS_AUDIO_BLOCK_HEADER_SIZE; } -static void dss_sp_byte_swap(DSSDemuxContext *ctx, - uint8_t *dst, const uint8_t *src) +static void dss_sp_byte_swap(DSSDemuxContext *ctx, uint8_t *data) { int i; if (ctx->swap) { - for (i = 3; i < DSS_FRAME_SIZE; i += 2) - dst[i] = src[i]; - for (i = 0; i < DSS_FRAME_SIZE - 2; i += 2) - dst[i] = src[i + 4]; + data[i] = data[i + 4]; - dst[1] = ctx->dss_sp_swap_byte; + /* Zero the padding. */ + data[DSS_FRAME_SIZE] = 0; + data[1] = ctx->dss_sp_swap_byte; } else { - memcpy(dst, src, DSS_FRAME_SIZE); - ctx->dss_sp_swap_byte = src[DSS_FRAME_SIZE - 2]; + ctx->dss_sp_swap_byte = data[DSS_FRAME_SIZE - 2]; } /* make sure byte 40 is always 0 */ - dst[DSS_FRAME_SIZE - 2] = 0; + data[DSS_FRAME_SIZE - 2] = 0; ctx->swap ^= 1; } @@ -229,7 +225,7 @@ static int dss_sp_read_packet(AVFormatContext *s, AVPacket *pkt) pkt->stream_index = 0; if (ctx->counter < read_size) { - ret = avio_read(s->pb, ctx->dss_sp_buf + buff_offset, + ret = avio_read(s->pb, pkt->data + buff_offset, ctx->counter); if (ret < ctx->counter) goto error_eof; @@ -239,12 +235,13 @@ static int dss_sp_read_packet(AVFormatContext *s, AVPacket *pkt) } ctx->counter -= read_size; - ret = avio_read(s->pb, ctx->dss_sp_buf + offset + buff_offset, + /* This will read one byte into pkt's padding if buff_offset == 3 */ + ret = avio_read(s->pb, pkt->data + offset + buff_offset, read_size - offset); if (ret < read_size - offset) goto error_eof; - dss_sp_byte_swap(ctx, pkt->data, ctx->dss_sp_buf); + dss_sp_byte_swap(ctx, pkt->data); if (ctx->dss_sp_swap_byte < 0) { return AVERROR(EAGAIN);