From patchwork Thu Apr 29 23:56:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27502 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp2016321pxb; Thu, 29 Apr 2021 17:00:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyNEPFnI6Xm9dOoaVlDGFb7NRL04TunvEK+y/wxy9MvivKj9EE6+pXMqI01XiX5xdUZ5LZz X-Received: by 2002:a17:906:ae0a:: with SMTP id le10mr1130869ejb.86.1619740842864; Thu, 29 Apr 2021 17:00:42 -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 g9si57102edb.385.2021.04.29.17.00.42; Thu, 29 Apr 2021 17:00:42 -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=jkeEhMar; 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 D2389689DD1; Fri, 30 Apr 2021 02:59:21 +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-vi1eur06olkn2107.outbound.protection.outlook.com [40.92.17.107]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 62D2868A181 for ; Fri, 30 Apr 2021 02:59:19 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IW9ta17qiTbRG/M7aFEx9caNrlOnhXJpJeTKyljx7SJSQcAeOtq190EQmm6a+NgD65+AD3FwiYx7zdEuRBhm0j4k33k0x550ANG66t/FWHm09IGomf0Fp6ZoPKAk+4XSxU7smMFwj0Xhn03AUPV0gNXbNml9FNxgsgIckSkEjX5mxUaV7EUxdV/fTxO+aAYfii0dlS4jxa/k1eeDnKsiiG2WuJWHHejKmPOwuu0LYrj/Xo/5+YR9T33b6T8+rsOdaUmKTiGx8Kwhq8xRXOqz5yZqOYONxj6UcIteZFyEUjJY3JyuMRv7gw3ejslFxJgGbSceUs0yVyOHu++DkLxZWw== 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=tXIG9T6QS+t5KgirwsLbmcExDwQnS1blJg+4ulk/wbs=; b=gr8a08cRvfPqlsdkzylVfSg7cNEFOM3DmgUN9ryXzRTTMe2ddy+BciAZ5NEpJwchZehsNaLyVggtfxyCd/yGy4Zv1HduiyBNExg2w0yJrGof5od59EHDdLMEug15AWln0s9jCNiycrvCegb6eMiMyZfolCnfOC2h6JT6dN5AG1esc9c3u8I0keyNJ2cPxP/GJGcg1MML5ur/GLuLMkdHHO24mEv+Myu0MRG460WALgEJjkMMOFO9kodiZYBceJRYcCnEw18iT7HYsRI1jhxA/hrjUat1cakU73LxaXBWVfmImOapWu6NErVKiXeADDzgjOP099e5YarQv4F1qUlMUQ== 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=tXIG9T6QS+t5KgirwsLbmcExDwQnS1blJg+4ulk/wbs=; b=jkeEhMarFzlNFc0lY7qNoBGWcwDRE/bKzjspS4Rp6ttwhx57fj2d9yYCNeJNaR1CfcT1CgkrPXlyaoltubmZSxhkk3YGc1MJuX8H7crLmYl+viTFF7seJlE5Eckg1tk6EFlncZaNaYRg+Yx8Kau+qZQXX2PAH476rnGC7q9ukq11qQQq106E2O60EZPDs/uy5lAh2tTaLKoZkKy+vYj+n4fCKrFDhnxdgWXEboXpLpME23UOD4pYvuNZKgLlMrAl4+knD/2cS/xQpET3X5OggDevMdlWlaItHfWpDXZvJvuv7RKZfPQY2LbpLaVnCqnB6KeeZdlE2Bi6UI6Eitymow== Received: from AM7EUR06FT005.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::42) by AM7EUR06HT230.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::216) 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:18 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:fc36::4c) by AM7EUR06FT005.mail.protection.outlook.com (2a01:111:e400:fc36::397) 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:18 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:6BC4E72CA5E843BDD154ABACD3A1CE46BFA7252AA1B9CDDDA08F699F301CD13B; UpperCasedChecksum:2A9E654428DBB112A6E640F5FB5AC5F2D8CC47D810EC83DA4AA81A48C2CFA7A4; SizeAsReceived:7614; Count:48 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:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Apr 2021 01:56:51 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [NUDJfX2PkKp1oTbvrQB0lXsq0bWQwrVY] 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-19-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:17 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 9e9b0462-e7b5-4b44-da97-08d90b6accc2 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQnJqnaHo6w7XTEhYoMxTOU4shK0srjCm8ZsCbtbyYGzU79oqXSEt2D2qCogDYyLa/RshEck92om7bAu5AavlzS9YpTOVF06N5LzZHwrzDgalLALs6BjAh4e1guEvtKXvEvZRGnu8qwAjGLxrAwRHdvr2rVsqqcd+c7tRXwFyUVe2MrkhMRJcUEXDMmF+f/6ucdcC0qWfLGKo9WCLJGPQEfLxVGb7D0BeGuLsKfy1ayVsIY/1BvDjuviACcUnDGk0UgX8iMT3Gx6bFXKDKB5MnnQf4AfMxRNdyU0Q/+kRuX9Nxc2OM3wad3+SD4hRNX/+cYacSE2D/24hDdJRffwVZ2vHhKzJo2fRenN8ipkpT1E7TkA/YpIvi4RrTqVqSMzvpYdxTaGY1PP6o6jXIF0FgyaKhl1GFxDregPFddO5z4HMdjtBYhOPC6rs86GAMRYFNth31G2OVi5YSwSh+2AkiKZzLiLd2dKnMip+oBTGoukdbo5pC5wX/I9/TwXrlgdc31FgWeCc2lDlPz1Yqe3pIGWMX6ilBZOxWGsCc4hi3NAajxbpuvwgWmXgHSxmICYGZlCcM3xXFGxbwNOf01uGRcxfBQpirT4CHGqU5qLSMeoLKuYghwicnncnJQSViEOaO2oDOpBki7cVzU/8GpGCauoypCMNiTeUyIGqc7sSW7I7+unsr1WE8oDRO0QCV2FuQAljkHk4yy8cuAJ4yNaeKna3yZRd/2ODuCUixDAlx2CJg3BSfUlaxgyEJwDNh1pEU= X-MS-TrafficTypeDiagnostic: AM7EUR06HT230: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yWxg316y3cUKJEZ2t0/3Sn4p2UV1U+f4Ns8y0DMZjtnx6sSqaDWjB8uplQfucHBaBDla646rQyxs0Zu7cXk+pmXp7vXBzKPS7YW16seCNV4CeJcWZq0Sbs+HX/YJYP5TGnIfjU5ILvvYGBhYRntTQFf6JJSpJev15uwd53HxdIlGpuWu8Lmj8K0VZpzQjQDYOlLyC2wsWzP55MqtchM50MAz4U6kZxJst94bfrbLSZ8E5sdeWxKEDgSoMKmFWDNaJvyRyW/ijCN8E8CAGa0Wu4TfaULUoc8nDZnMcLoflJx/dg/ev0E2gmEMFvTXquGj9uFHTd87zG0GuMQiAQIwdlIUCCbGnxw7ypnhDDxdTfvl93h8VhP+Jj67MzFYTn/B1IITjoLrki2dkgp1I/FxcA== X-MS-Exchange-AntiSpam-MessageData: 5y215H3+1iodqpEPMXFDwTAGeEuHruNdqz+dEmM1I2kzkIKxi6gGOdVhm5CA1OExvY1goxkmvtPAhbTeczx89AAnEyKb9/mAHDL5D1vv3V0q7NR97ldeYVyeyqEfQDK3JkDmdjYgiSl3Ei83kgNEQA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e9b0462-e7b5-4b44-da97-08d90b6accc2 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2021 23:59:18.1205 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: AM7EUR06FT005.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: AM7EUR06HT230 Subject: [FFmpeg-devel] [PATCH 20/46] avcodec/g723_1enc: 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: OXDQpp5mFjJn 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/g723_1enc.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libavcodec/g723_1enc.c b/libavcodec/g723_1enc.c index 2fb4b7fc82..93e7c1cc60 100644 --- a/libavcodec/g723_1enc.c +++ b/libavcodec/g723_1enc.c @@ -34,6 +34,7 @@ #include "avcodec.h" #include "celp_math.h" +#include "encode.h" #include "g723_1.h" #include "internal.h" @@ -1044,10 +1045,9 @@ static void fcb_search(G723_1_ChannelContext *p, int16_t *impulse_resp, * @param frame output buffer * @param size size of the buffer */ -static int pack_bitstream(G723_1_ChannelContext *p, AVPacket *avpkt) +static void pack_bitstream(G723_1_ChannelContext *p, AVPacket *avpkt, int info_bits) { PutBitContext pb; - int info_bits = 0; int i, temp; init_put_bits(&pb, avpkt->data, avpkt->size); @@ -1099,7 +1099,6 @@ static int pack_bitstream(G723_1_ChannelContext *p, AVPacket *avpkt) } flush_put_bits(&pb); - return frame_size[info_bits]; } static int g723_1_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, @@ -1112,7 +1111,7 @@ static int g723_1_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, int16_t cur_lsp[LPC_ORDER]; int16_t weighted_lpc[LPC_ORDER * SUBFRAMES << 1]; int16_t vector[FRAME_LEN + PITCH_MAX]; - int offset, ret, i, j; + int offset, ret, i, j, info_bits = 0; int16_t *in, *start; HFParam hf[4]; @@ -1231,11 +1230,12 @@ static int g723_1_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, av_free(start); - if ((ret = ff_alloc_packet2(avctx, avpkt, 24, 0)) < 0) + ret = ff_get_encode_buffer(avctx, avpkt, frame_size[info_bits], 0); + if (ret < 0) return ret; *got_packet_ptr = 1; - avpkt->size = pack_bitstream(p, avpkt); + pack_bitstream(p, avpkt, info_bits); return 0; } @@ -1249,6 +1249,7 @@ const AVCodec ff_g723_1_encoder = { .long_name = NULL_IF_CONFIG_SMALL("G.723.1"), .type = AVMEDIA_TYPE_AUDIO, .id = AV_CODEC_ID_G723_1, + .capabilities = AV_CODEC_CAP_DR1, .priv_data_size = sizeof(G723_1_Context), .init = g723_1_encode_init, .encode2 = g723_1_encode_frame,