From patchwork Thu Apr 29 23:56:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27499 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp2016030pxb; Thu, 29 Apr 2021 17:00:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz3knh5Rq33xRfSLNERklastX+6N2+eQzO95pCuIfX36tQzaS6JfTuW7U5Z4qEAqXWCa19G X-Received: by 2002:a17:906:4ec3:: with SMTP id i3mr1086791ejv.119.1619740821820; Thu, 29 Apr 2021 17:00:21 -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 o9si1477445ejc.407.2021.04.29.17.00.20; Thu, 29 Apr 2021 17:00:21 -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=O+TxgcHH; 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 A3D01689F19; Fri, 30 Apr 2021 02:59:18 +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-vi1eur06olkn2056.outbound.protection.outlook.com [40.92.17.56]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 19E186802B6 for ; Fri, 30 Apr 2021 02:59:16 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MNKHprSq0Yc6fF/2rd/G/J0cWxGzm9MWcpSyeP54ffJ6BXEM+Mi94I5RaissDTkavIatEz/mUMMI8FtwQWd1UqPf4Ok/NE4q2DvnCeKSDpFRt2Y5MTZRFCDrmjD0hxu/j6bznGqMnlAh5+4hImPCuEWkwBNMjvHfcFl45GA3lAT/Fz1E/E+d1saCz3VQQOafVgISUmCnP/8ZPhqs7iTYaL2V7axtTqKU1A0vPL8bSECClxFeDg3uW3j0QSVnletjfaYCaIbCQVvZqcqMXeLLepMIVpRHpt018cKNGxAzSNov9r+/tdhXqG3y8kUQ45/pXk8UxmVAlF8BK39mOcjvbw== 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=eaRJVMvjBaDWOtvwaMZJgBwR+MxLx7PUrPdBtmDZNnI=; b=kQGJs/iShyf1iNF/GvndO/gfn2tr59pI3ohixEBv4WkllnmatcN3dP6pzJbHEjrKCWegwG4oxNWJ2BSEd5GH4wH/qQQEr07ZLWe7ATboeqoPHFeiu6ORJ6+fbSRKJiyyjckfVlp7fjAXOdTbG/Cj5kB2bO4BVhdCchVUfsHR/vgnXXBzImOHt0cD00O8795iw59NqKiTuCYmBxFPH3ooQGzjKh11bDP7klCSxAHJHTyKYgrY+jv/I9j7bKUAA49/N8lDusBm6Vv4dIR6yr3CiBtrFr+P3dK/nk8SONzPXVVMZCsUrZUk+jVjaqkyTwywZnc+5uB+oXTeOHuZm8aCjg== 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=eaRJVMvjBaDWOtvwaMZJgBwR+MxLx7PUrPdBtmDZNnI=; b=O+TxgcHHVVVhnrQOep9AaTGiVpDYEwL3TCtiOPcKCTKCD8PG2UqqSPbU2RKINSxeK7ZiPUPJJK4t6sFSZR9erTCPqRoF4xL8An0CkGCkqPei3WxR8HkrWZczHwiwpQgsfwQypfj5zeHr0V0h48lfkZRE7zF4TF9EyTn05gyezsQtZNsO3i5mN1OM0/pQpyWXMIV6qDP5Pl8WYDS4/eAXgZTxIxoNwXQ4qfA8Kx8euXZYfipBdr2kd08qX+aIWx4Fz8wr6kxUZT88JI7gjjQKJ2tRUTvEEfLBnv+RFeYbUpXE9/H4Fi65xEjhNxz2AcmaVtHccfXZHJcImS0w3DQCQA== Received: from AM7EUR06FT005.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::53) by AM7EUR06HT141.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::120) 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:15 +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:15 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:58322FCB9CFCC368F0F15C406D7A030BE64AB2015454A59EA4A4785AED78C2E4; UpperCasedChecksum:F5AA4720B394788C7E1DAEDA1CB7C7001301ABC4A3FC1AA048F7F3909965D85D; SizeAsReceived:7603; 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:15 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Apr 2021 01:56:49 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [r+puq2edOfHS4Ucs38MXfiFamFm9GuQD] 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-17-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:15 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: a7ebb86d-8e2b-4602-7211-08d90b6acb6c X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNU6XUx7q8EQ5McclV510mdNA5vT/fXqaCFZrX0prHkG4iykoLu1iS6FuwIXk6aZkigrgMZpbXUUCKJyJ8TQ69e8U2ig+1SY9YzwePPwhNg/t5khKRQAAIwpADr3k5fO02+KsbyihHmiwxU9XuDLCWhTb1E8DKHyXhDcm/Q7QncFyWZ6rQD5s5PKAibtulxreGVgGQqu99cREpahnMNQrctHs/yxhU5CPFjON/0a46rxjm8lGwPzd48aX00FrqQXsT2nnElhQ/id7OFbupUHn6vqkfIOXTb0VrS/ThU81MWMeQ6kywm8tSihZk+/+pbL2urUOZ5wShgULch+xnHGchOsCodEA0WgYTE2l+Bvi4paRPD/bhF/ZQ7X7gip98v1IdJ5BjSqaDIslWL8lude/6vY2BH2A73Z0DG6KLyufj/eZ6KTvsSs2uL8iaAjYwM8XWy4hvHJod1eT021mbac9YL/P3uEV0iqkSqUwrZtAkHjb6pkppdAAmjKyVdkHXdkR3XPmDX5qE1fLC/snxwMMOErpp5fznnfidviiAXaF1p9oO9vy997LfcRgSQTE07rjvtHY/8sol3W7JqiVnk9j14dHmWuUfm6P0IGbLJsJnJhAy6gjm/3etXNvdrp+NeepwaRiRomjXpRJRqhyjHbglUr+KQ0j7npSBeAE6Py1YD0NIpLmeKfokjD/1C1tLkfHnBmeX+VCSciTFtnkgJWbmSmqw+rNHwJe0o= X-MS-TrafficTypeDiagnostic: AM7EUR06HT141: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YfMf1O+BQa6b2ilp56JKyaHjKKum4MMyEiLOzuVNChI8czFQpw0RBTlVsRWA2NT4z32Tff0meQQ6j3zdlZAvrbBEpEKyJdeLu8XE3znX4s1qo1IuNuiVicU3zLuuBOBs9wPzd/5vPK0FQeV6OFBfAjVsn1Csr/luQqNA6cZPigBJlImOr7wbV5HhQMCQjiYqZo2Six7gqZrXYEorIVsubtZ9W6Mu0IEIJO/tURM5g8DTrAF4Ol2MWER2V8dsMNc5g2mm/Cwcq9wpix1hJAF9XRavgf/0ppl89jQtGgux87WAyc00V0UB0Bguu9bD1XTdMwn++nnRINafgFDpyAoPXFIwpdf/p0Q63T8lhRbHoPtFiGFp6j0AdLDoxnuZCaLC1SmNtv93IE1SKrjisz79CA== X-MS-Exchange-AntiSpam-MessageData: ZKYk2x768Bol2elYlYzv1tAJ1TZJ4lE08j4XLW6jRmbk8cP0fZsFiFkEHLJuXEUyCrLiSUIBg7aCG9BSdKa4R2vDbFy5Gx/8PY90xA+2ohygyzT+UteIb6koMA4A93t/jwAB5dTJza6N4eD+iDBJ3w== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7ebb86d-8e2b-4602-7211-08d90b6acb6c X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2021 23:59:15.8985 (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: AM7EUR06HT141 Subject: [FFmpeg-devel] [PATCH 18/46] avcodec/fitsenc: 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: K1aM6Sm4Am3y 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/fitsenc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libavcodec/fitsenc.c b/libavcodec/fitsenc.c index 80d0d71d1d..d96baad986 100644 --- a/libavcodec/fitsenc.c +++ b/libavcodec/fitsenc.c @@ -32,13 +32,14 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" #include "bytestream.h" +#include "encode.h" #include "internal.h" static int fits_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pict, int *got_packet) { AVFrame * const p = (AVFrame *)pict; - uint8_t *bytestream, *bytestream_start, *ptr; + uint8_t *bytestream, *ptr; const uint16_t flip = (1 << 15); uint64_t data_size = 0, padded_data_size = 0; int ret, bitpix, naxis3 = 1, i, j, k, bytes_left; @@ -80,10 +81,9 @@ static int fits_encode_frame(AVCodecContext *avctx, AVPacket *pkt, data_size = (bitpix >> 3) * avctx->height * avctx->width * naxis3; padded_data_size = ((data_size + 2879) / 2880 ) * 2880; - if ((ret = ff_alloc_packet2(avctx, pkt, padded_data_size, 0)) < 0) + if ((ret = ff_get_encode_buffer(avctx, pkt, padded_data_size, 0)) < 0) return ret; - bytestream_start = bytestream = pkt->data; for (k = 0; k < naxis3; k++) { @@ -104,9 +104,7 @@ static int fits_encode_frame(AVCodecContext *avctx, AVPacket *pkt, bytes_left = padded_data_size - data_size; memset(bytestream, 0, bytes_left); - bytestream += bytes_left; - pkt->size = bytestream - bytestream_start; pkt->flags |= AV_PKT_FLAG_KEY; *got_packet = 1; @@ -118,6 +116,7 @@ const AVCodec ff_fits_encoder = { .long_name = NULL_IF_CONFIG_SMALL("Flexible Image Transport System"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_FITS, + .capabilities = AV_CODEC_CAP_DR1, .encode2 = fits_encode_frame, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_GBRAP16BE, AV_PIX_FMT_GBRP16BE,