From patchwork Fri May 21 09:17: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: 27857 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp339918iof; Fri, 21 May 2021 02:18:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwsZTkfdYR9CUSEAIqtCcUJXjWbjEmhc27n8dgbS3N5TwHrkU/TqvDQCPTvB3Exurep25Se X-Received: by 2002:a05:6402:5174:: with SMTP id d20mr10310682ede.248.1621588716189; Fri, 21 May 2021 02:18:36 -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 zg9si5802901ejb.426.2021.05.21.02.18.35; Fri, 21 May 2021 02:18:36 -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=nAGGKtlt; 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 C92AC68995F; Fri, 21 May 2021 12:18:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-oln040092066061.outbound.protection.outlook.com [40.92.66.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B0B7668993B for ; Fri, 21 May 2021 12:18:09 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M5N/jR455b8fwdTZySyXFg2VcmtY15/mAL5ahj8fq8zR4RDSQ4Fa/kDNwn2KplLkLc0VfRcjk3Hwv6RESrRpM1Ah/ha20PlvG9pvbRlvDpjaRjUkARVh6S52JlJW/hrirxJJmiJcSSoYQimfz7oNe7HeYFLLu/P70klF12sCN1aAy0GEQRyu7TgNFCLeT11zDJuCOLltqkh0fXxINQ5UffZywYo1/ncKRH2iiQr9PORNfv9Ag7HtgQ9A1X6X3HXVhhSxYbEVUaiGTfaL8TsvQ29wIR1aUiciL7Du3LR7NwvRpvY1OSCI3vUZYZ1do9dadmOqXX5+I0lrfcn/SOfa+Q== 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=qCd2pKyg9cHVW2qRJBQu1S9kEI1i1ssgjg66E4UWLSM=; b=d0LGf/ynnHsvBL1PpFEzt2ZoJ80i2Bb6RvPUxoVzhyf9eduNsvhFDcceqNAc9oqisqXU+1Pv0P1SQi6o8TSW5f141/wT8+zfLCuxBDgTuF30KCHnPAXgPCz0gyxI4qVplzg+Q5zUjoAfy3pOQg74CxXyBWUWwEePG1Ld7dOQo98cShy5YBDFLHLGZwaHuI4ZCy0Vo9Fkee+VYTah0nHztN0KRgqoSsKT8K95bEmW1+4mvRjJK5ctr3K4UeKi/pHPWzHkh2Qox7WgYDNOBNEvVpdUD+4NzKifKHJkDfR8DYsz16Uwdrz2boiyxLd0MisEyEosY6DfN2TTGRZbN0ixgQ== 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=qCd2pKyg9cHVW2qRJBQu1S9kEI1i1ssgjg66E4UWLSM=; b=nAGGKtltg2WpxiU4jZRhNtaxcRX5VC3YVdKry5jidHVKxpcYwwn0+1JahG1/FoE+6AuxdMYilaLIjJxJJ1cQ1exxnvgRzqdaUgrvJzb6lrG4fez6HqnmC+IniNPHDMd/i+A9TNhjiyiwhOXO/BFTcxdjBS1IKyA1yXenjZndPbeTCurX8MmT9XBjIuDkTTUWt/2syHwtwARaiuWwnKGX9ktAYLdew0x4Cxc1W8/QzsNf6ZoQl7/Ryg6Iggye5WXcdB2nuV76WD2jXKo4eRmeul9ksMWxjsuK3kJEKj6k80zIBeB9XuFtmhf9C5hyDXz4a77R/YVuGIysSbn0ZwxbKw== Received: from VE1EUR01FT010.eop-EUR01.prod.protection.outlook.com (2a01:111:e400:7e19::53) by VE1EUR01HT017.eop-EUR01.prod.protection.outlook.com (2a01:111:e400:7e19::292) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25; Fri, 21 May 2021 09:18:06 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:7e19::41) by VE1EUR01FT010.mail.protection.outlook.com (2a01:111:e400:7e19::83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Fri, 21 May 2021 09:18:06 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:DE290DDFDD81E29F8A9AF84BF462983EDC2F0A7C6460B4C95486730C7DD19BBA; UpperCasedChecksum:C605EC1E74F42D8194E27CDEFAE8304A0B55AFAF8AE5F7423D518340DFE3398C; SizeAsReceived:7602; Count:48 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::f4cc:63fc:9cef:37fb]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::f4cc:63fc:9cef:37fb%6]) with mapi id 15.20.4150.025; Fri, 21 May 2021 09:18:06 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 21 May 2021 11:17:09 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [iWmT7Ugt4AJR39VrJVwKvhjqu3ivnWHO] X-ClientProxiedBy: PR0P264CA0070.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1d::34) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210521091742.184902-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.95.27) by PR0P264CA0070.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1d::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Fri, 21 May 2021 09:18:06 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 6a8f4c71-af8e-42f9-d113-08d91c3957e4 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNU/M7M4vrgvBd+IenKLBfauqlx93HHcvn67vjFjhWkjF/t+0T5bBJBRbY5WGeM59QNTiA4JqKfOYfoOb/uxngCm11RY+x+1NtWIFbvDPOautFjv4GE7yRmk6+GAYdernhFlTHl2+SnOYuLsUYt+Zg8Q7GX1aqVRGbE4gBcEAN27pvVyFNzhIgTSshar7pRdCq6JSNVZId6BaMRzElXsMzwvhhWVSW5Io2Y1S8PuNDuniKmwRl9YORE6AE8wrkBJ8ZHK3uARANcssYCuc6U4Lx+nu9nuiWvtcRF+KRyH6/WFyfCVFhraqM1kILi9dejsaLPIao500cOJbrhKQ3otMvsEtd+kzU26vhH1szTVpZ3ay05V2SAnYuR9EGUBRA4hWRn6elj1ByVgZTvGZFe59gSgkPsfA5/NeEdAozgJIMkLOjgAx93U0+CfsXg6e+NXbHNwDwnFS5SQRlqtPkidv8+zKEr0zjK8UW51uma2bi+mQ7bqcu76azobeiJJWVG8J0bmpVGSSqQUIURUReMEaSGOUqKrIVZvkvenQokQ2swmwThyuAra8KFcceeRSuFGoyjyilmhOWEajHSANfw6c5n6eOlA/ZRZ7waMQGghXsR/Gc35wUMHODYs5A+yZE9blBwUFjB2Hvg2+8EuEshF5oKpyAqbEpfiJeqibNGFUxXOcaEfcSlFQ/tdU/GIq6/sUPNV7kLaY2XgckokYSchbOyCS7ESHSAaBAc= X-MS-TrafficTypeDiagnostic: VE1EUR01HT017: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M0meD6+UtpMwkwe1claNcgOd+KIrvjAkOKNZxJvrbfGaQbffkGko1AHHYhIkygBUfLy18ES/RtV2J+YGIgvuev0hTUJx5EOXvI+z8BtXKo+lC3wPBYNdy+uPl2Iu6lRPwgQgFstHyRB1k303zzYidehm4dTkyNULpCDoLSOfi32RoN68zWzR4r/1A/8H5lcFfsWnyDe8akhbNlWRo+F84dDTMdswHTVYbM+IphMDk4l5/jbZEsx83LZZrs8G1TAMKNFdNy8vLwiyzmZj5ZOs2Ac/VlHi6LT1UaKFKjZr/oB9PvtXUYTAF9v44iNR0da2D+41G3PbZrimNvkxgrcdCHsInzWBkJtXDNv+lu4C+iuZVlWdKtqNADrSBOaK6REJbtMRcQS+CU614q5ZZ6067w== X-MS-Exchange-AntiSpam-MessageData: +esJJmXAwJ1hCDM3OXVWh5cLYgS6am5TeiN4749utEpffbgoXRimT9ZhyZDhBEfCzt5jk1OeDmxzvBCKFbUklZkI0wKFgOoKnZ52QbwaNuei72n74HVPCnP79lCFoOlXeFy4YT0n3CQJV5Lo5hgSfg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a8f4c71-af8e-42f9-d113-08d91c3957e4 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2021 09:18:06.5062 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT010.eop-EUR01.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: VE1EUR01HT017 Subject: [FFmpeg-devel] [PATCH 06/39] avcodec/libmp3lame: Avoid copying data, allow user-supplied buffer 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: sNw1u/itJt9F The libmp3lame encoder already uses an internal buffer, so that the packet size is already known before allocating the packet; therefore one can avoid another (implicit) intermediate buffer by switching to ff_get_encode_buffer(), thereby also supporting user-supplied buffers.. Signed-off-by: Andreas Rheinhardt --- libavcodec/libmp3lame.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/libmp3lame.c b/libavcodec/libmp3lame.c index fe4b50257f..5675864bb2 100644 --- a/libavcodec/libmp3lame.c +++ b/libavcodec/libmp3lame.c @@ -34,6 +34,7 @@ #include "libavutil/opt.h" #include "avcodec.h" #include "audio_frame_queue.h" +#include "encode.h" #include "internal.h" #include "mpegaudio.h" #include "mpegaudiodecheader.h" @@ -264,7 +265,7 @@ static int mp3lame_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, ff_dlog(avctx, "in:%d packet-len:%d index:%d\n", avctx->frame_size, len, s->buffer_index); if (len <= s->buffer_index) { - if ((ret = ff_alloc_packet2(avctx, avpkt, len, 0)) < 0) + if ((ret = ff_get_encode_buffer(avctx, avpkt, len, 0)) < 0) return ret; memcpy(avpkt->data, s->buffer, len); s->buffer_index -= len; @@ -296,7 +297,6 @@ static int mp3lame_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, AV_WL32(side_data + 4, discard_padding); } - avpkt->size = len; *got_packet_ptr = 1; } return 0; @@ -332,11 +332,12 @@ const AVCodec ff_libmp3lame_encoder = { .long_name = NULL_IF_CONFIG_SMALL("libmp3lame MP3 (MPEG audio layer 3)"), .type = AVMEDIA_TYPE_AUDIO, .id = AV_CODEC_ID_MP3, + .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | + AV_CODEC_CAP_SMALL_LAST_FRAME, .priv_data_size = sizeof(LAMEContext), .init = mp3lame_encode_init, .encode2 = mp3lame_encode_frame, .close = mp3lame_encode_close, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SMALL_LAST_FRAME, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_S16P,