From patchwork Thu Apr 29 23:57:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27522 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp2018067pxb; Thu, 29 Apr 2021 17:02:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx+Am9rTSfYtJMkIQqZsefL1coEYmmKcX5pJz9BgsRU0OvLdJ84cKwniMFT6X/6lqpmnC+R X-Received: by 2002:a05:6402:120c:: with SMTP id c12mr2588334edw.98.1619740961502; Thu, 29 Apr 2021 17:02:41 -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 a20si1937257ejg.286.2021.04.29.17.02.41; Thu, 29 Apr 2021 17:02:41 -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=BJpZVyoE; 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 B2F3D689F10; Fri, 30 Apr 2021 02:59:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR06-VI1-obe.outbound.protection.outlook.com (mail-vi1eur06olkn2104.outbound.protection.outlook.com [40.92.17.104]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1B02A689923 for ; Fri, 30 Apr 2021 02:59:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J6k7W6hzG9hiFWlwR722I+w8PnVU1KqCe3mFtk4lzW36q/RR3WHvMGbEpKvCXG4NPl3mVl5Rh14LMlOdJtEcXTx+VSyZHQymoP3LoWhmAL8bf7nBlhW332seevJq/EZzt/UbvGrTbi2OF+8jedXx0zTvkfg7K4KZS5daKxzUAOPSRdIcX4gA7jAHGaUGEKVWCcatb3KBGXSMyu34NlwlUFat8GXUNDb4+eL2f3eHwFZ2yWUpkZMmTN6bFJ1oMF/RKg6Xrpx+9oP1AqDYJv4wN1dtYqBjJ6eBPqmqcxaHhbOs3+e7LZWyFMW6FsH4zkUO2+HfN/6HDrjPHWfiYBjcBw== 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=g4D0AV6i/0BnGA+dF5njwGXkDLpsYR96VvjNr+wz2Ok=; b=UgRIc/XlzwjrK95+xcVbkFcxL9TB2JnZGJMlgAV+p0Q8R0CIBMXMeOuVguF7MitQo8hf+JbKkWFN+cwdsqcRS9BCQgPBwUH1Cupry4WzMuaGAP/SQ/p9hkaaGnQEc+mdVgFj9eh3L9e2saEHpQTs2kMVs13z3ROMi2m9PIqVmXAGEQ0lZNLvae/DtcQNE+yiH5xnurYW35Pl21klIwQnzHWlxluM48M1sb9hvX3XZOhKJ9vvvRmQqbmowpvNvD/gW7pHCiHwoe3Hfx2kfLnyJG6p9rurfih9VtlrtQiBQjYKtBrMHS3AHblPzpQ8RmA/ha0aGvrNXrC5OorbGQ3ZIQ== 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=g4D0AV6i/0BnGA+dF5njwGXkDLpsYR96VvjNr+wz2Ok=; b=BJpZVyoEIwIxFGd/V72OTubbalZjU4wje4AUHKWBPuuXQWnv6aZfz1nA+jEZTDDK4TsKJnvsL8EsDM3o1CJEeJQoAQaee5M03SQUs8Ha2E+HCQJPxPCyWjdcFkrWTUWgb9YjHSCFEz9/JeTzoFFHyMZwj51mGmscbxO7pjNopHrejhEJI4dg3sH/5dkeWVIYv3Fimcr4PaxxdDNC1b4MXPvDuNNX+uYYMNs0dXfgXkXi73l9jGkO7824QL7CctD7NC2RQLzxUND9AHnntMlGIinveZtvn89P4Ra9mEIv94mcz+sMCmhGR4MOkLB8ACqs1SOxxeaM0nUmwn6tplWJTA== Received: from AM7EUR06FT055.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::50) by AM7EUR06HT029.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::477) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27; Thu, 29 Apr 2021 23:59:52 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:fc36::49) by AM7EUR06FT055.mail.protection.outlook.com (2a01:111:e400:fc36::61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Thu, 29 Apr 2021 23:59:52 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:3B3AC445985AD496B56F7158F01E87FD497432909E049001CAF630629E66EC25; UpperCasedChecksum:61F9927E4B253FCBB8642B8456F664C3F3C5A02BA07770F325C85C409470957B; SizeAsReceived:7777; Count:50 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::45bb:c44f:2b75:23b7]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::45bb:c44f:2b75:23b7%5]) with mapi id 15.20.4065.027; Thu, 29 Apr 2021 23:59:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Apr 2021 01:57:03 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [9l8XMSTQegPm3oBANpRGtPlp3mWoxe3k] X-ClientProxiedBy: ZR0P278CA0088.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::21) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210429235717.2067041-31-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.193.248.86) by ZR0P278CA0088.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Thu, 29 Apr 2021 23:59:51 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 50 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 81966fb0-bb2f-46f6-d21e-08d90b6ae0ed X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNU6XUx7q8EQ5McclV510mdNSQ6zVwN/I7EX+rk7h1h8rgqhciQx18U9NLAZa+qA6gywEMO0gZY3oPJJPv7F+yYeSh4tKSZq7WBOqgpTv8bIW5jmAx63XVnKbxK25Uhw2X/WxgjY5ab/pRBv3ZGpqnL0aG6H1uH5lj0iaDzpPRi78JUWEHX7rxbinyBa9bRJYFR5f0sTtQFQBwjeWV9Dn772RczlLh3ihK5AuvvThZ0OjWGJqqysuM3Zt1E4UyzvpakW+kgS5Q27V8k2CDgC5KmCB8IBuXVQS1sITcVdYOYuRV+e+utjbovyeOndNk5IPrgVJNWl8uqlkjbeAlWa4DZJWccb7yUf9GFulJywpUdMtF7q+YTqDrmG0Uk/I9jY2B+YKuGTnzOq97X1XYuZZzW7oOCpcsJaql6b7UUiId8lKKjlkEc+7nUIhOUgoVZVfHyaKKYLtpzGlodCb1YN8+xvXqJqLOz7IqMSDcuy64cGEcoyozWY+CGnU2fYbZkHE8n9wCFA6gR7mksHGQoFmSCsJNiL6LJm9UGkUnbk5QemZEZ7++MpuhSEOeRxokgxXEUuZBOntz0gl9iN2s6Lh3jehMtSpVvbal2rkf0uHuvGsK1yJCvbA7pDQCIXIHdTGtleL5xYcOBFrgEcJNNheAkEMAGG+5ira+7L2nCKvJBRCCqvBp+RT1o+Q/z1yoO1kUAUxhSmynHo0jsHGi1watCbqnNxtuIoqHQ= X-MS-TrafficTypeDiagnostic: AM7EUR06HT029: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3uAeCFEXz76eWogBijHzR+fJ6xaRprgRU/ASxIJBxUC4qwdEHl0FxykUAvgcVoy3RiT8ycOflQOVN66VLuuVSDFv5VSGnhA3nxvJPFuirt1OAvPGZsvlpP13nSXqXdP7zAbo3KArqo9CJHBNgCyph6BUg6ZbkZBVf3L6WsDLQl8ljKIwrrgMI7rW2T2NW0cOnHARNBFzgvzlib4KW9Kt8Et9lRqun7DPx4QQXdAIlo98Hpe1pxALNH6zZrEdWLlBC5NrVs7XS8Cb6P20qBRht/UfPWrOg5Lslcv3jxrsc9nALilLSEmZYv2agHZt70ZX52ax94Ah6VtMRnXDsHM0T+piqvS22wn/IvLM9JFWS0y5lfao8wC0RevAIzCOH6ghuhcSyi65BEGLVf9joL397w== X-MS-Exchange-AntiSpam-MessageData: zJX0cM90NpnmCrlJh3kPmpQ9ag22cpTc/D1viSskUbnDP1LTlPBP8rVTp2+rIpI3QH0gRprWO7sYhgUwFrkgNTAIczNT/Gstm8VcKvIHpHzwlA7jxkkHwGwhg65IGfCn9NIb7F24ESFYy5qyGyU9jw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81966fb0-bb2f-46f6-d21e-08d90b6ae0ed X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2021 23:59:51.9446 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: AM7EUR06FT055.eop-eur06.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: AM7EUR06HT029 Subject: [FFmpeg-devel] [PATCH 32/46] avcodec/ra144enc: Avoid copying packet data, allow user-supplied buffers 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: YreghEC4fQsJ When the packet size is known in advance like here, one can avoid an intermediate buffer for the packet data by using ff_get_encode_buffer() and also set AV_CODEC_CAP_DR1 at the same time. Signed-off-by: Andreas Rheinhardt --- libavcodec/ra144enc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/ra144enc.c b/libavcodec/ra144enc.c index 0eb151a49e..fdb2cfae8e 100644 --- a/libavcodec/ra144enc.c +++ b/libavcodec/ra144enc.c @@ -30,6 +30,7 @@ #include "avcodec.h" #include "audio_frame_queue.h" #include "celp_filters.h" +#include "encode.h" #include "internal.h" #include "mathops.h" #include "put_bits.h" @@ -444,7 +445,7 @@ static int ra144_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, if (ractx->last_frame) return 0; - if ((ret = ff_alloc_packet2(avctx, avpkt, FRAME_SIZE, 0)) < 0) + if ((ret = ff_get_encode_buffer(avctx, avpkt, FRAME_SIZE, 0)) < 0) return ret; /** @@ -533,7 +534,6 @@ static int ra144_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, ff_af_queue_remove(&ractx->afq, avctx->frame_size, &avpkt->pts, &avpkt->duration); - avpkt->size = FRAME_SIZE; *got_packet_ptr = 1; return 0; } @@ -544,11 +544,12 @@ const AVCodec ff_ra_144_encoder = { .long_name = NULL_IF_CONFIG_SMALL("RealAudio 1.0 (14.4K)"), .type = AVMEDIA_TYPE_AUDIO, .id = AV_CODEC_ID_RA_144, + .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | + AV_CODEC_CAP_SMALL_LAST_FRAME, .priv_data_size = sizeof(RA144Context), .init = ra144_encode_init, .encode2 = ra144_encode_frame, .close = ra144_encode_close, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SMALL_LAST_FRAME, .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }, .supported_samplerates = (const int[]){ 8000, 0 },