From patchwork Thu Apr 29 23:57:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27523 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp2019794pxb; Thu, 29 Apr 2021 17:04:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxLnq+APidAvWF1JhAZnH2idDjiNFfObF4wrJIFzpD1GOpL6u53aYtieIfXUUxSyzlv8Lwl X-Received: by 2002:aa7:c7cc:: with SMTP id o12mr2567787eds.291.1619741077969; Thu, 29 Apr 2021 17:04:37 -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 g19si119901edu.85.2021.04.29.17.04.28; Thu, 29 Apr 2021 17:04:37 -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=C1HmUmb8; 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 57C9068A46F; Fri, 30 Apr 2021 03:00:15 +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-vi1eur06olkn2020.outbound.protection.outlook.com [40.92.17.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0287868A4C5 for ; Fri, 30 Apr 2021 03:00:12 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AzhLeUYK1aBObsRXoJe6D/H1aKyYSaV1jVHd0UMidllZNinFBpSJPBqRSLzjuw9MR1xCet7mHiFv27ZPrZWTJcZmCgeX7Q/DrxZKVWoITb4HP5tg1U/w79Pz0qhZI5MnKo+BS5SUsBv4v4/LxJqjCAQxtXq0uArhdInujIZwh1EfVEPSPvEbRxrTqdlgoFGz60a1i4WgQ7ixqbKT2jIxqSQIP0ds8VVjZHwXvoLMDhR3oXFRYcAl5MwxTp3zLoqlvU10cwydazrIBd5gId0eNNqrVfbZwH9YxJGSGIEjNHk/ZkgzxNLnwrvHAPg+mIU8BHDr9gVrLorBB9m1LzrYfA== 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=rVL9f7VK+ypDe1EzXBit/g6xErUuZIUYIac3YlUlxZ8=; b=V4B5jeY0VLtdG6ktPo9dE+8WsgMItYXiEvpzXgtYR7fAOdw8tIp8560LFITG3uXb6dQaPyxu8mAVDHNZVS/G675h8thTMP9u8A3ZmuyxODYeKvCCHh+VBkh8+/gTNIMSeEQJ/0YmKP9vZYs18ZrJFtb9WiPfxN53NTWfO5FUVnHQ0XH9ftEv7g60y75ri1jKN08R2Mt/HKkOJLbVC8eoNoTtKDLKDRhmk9e5CTfNZ3CdZ+zAHjWgZ4DY6g2BgDxREOJaYOH5ovc0HLMh+4MslB76mp+f2FSk9qFxh7HjOnvJQJ6+aSD+woJCnJuo4uwrTwSnrMNN+Xd5Dp/3OHWOPA== 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=rVL9f7VK+ypDe1EzXBit/g6xErUuZIUYIac3YlUlxZ8=; b=C1HmUmb8WVKSr7c/rZtSkaMSeoRQpVUKhY9ZMsp6h7ZqaL3wsDz2oFJaAsMKto7Qq7zkFOJi0d9jHJd3X04202Mav/cUhrUZkFLwWpvB46OmFSMtym64D3KX7zoVlXdOT/Xg44e/HCh4WNYZJjSwWAIyZ+71ksw1s1rJsqpQTXXacbxcD66tmPShMObwjBonS2IVWlyV02fr38Q7RXmGnoVcZC9svoS0pOaxwvpjgnnRJzsHQ1SIo+3uE1T1ZYZ2F1eSQo1RCp5VLkIhxD2tgm+lFMfMIpeJ5CfdnE7ux0IR4Cu5tziBQHwFkKq6cixWAeUXm3QN4Or/CFx5nlz3cA== Received: from AM7EUR06FT057.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::52) by AM7EUR06HT256.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::280) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27; Fri, 30 Apr 2021 00:00:12 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:fc36::4f) by AM7EUR06FT057.mail.protection.outlook.com (2a01:111:e400:fc36::445) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Fri, 30 Apr 2021 00:00:11 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:3DB166ECFA62E1AFD6AC6627CCD49E0114BB99AEFEA0E0D94DA5F1891FE6491E; UpperCasedChecksum:0C94D20BE1374906423FA411B07B7B9756B572558B8DA8C3B5BA2F29DA084185; SizeAsReceived:7765; 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; Fri, 30 Apr 2021 00:00:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Apr 2021 01:57:14 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [TNuZjCWRjrgA3/CuwWz9u8wIXxDVg/M2] 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-42-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; Fri, 30 Apr 2021 00:00:11 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 50 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 3d2bc775-88fd-4b1b-9a87-08d90b6aecc7 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNU6XUx7q8EQ5McclV510mdNSQ6zVwN/I7HB/GmqUZWlwWszcNHnb+WvjPbV+P98tA79l3Xw9ieZsX+ysZO7FR7BWeipSnroLU5S/1yi8HSgUwMuWK+9UOhbgh8bVOppDWS5h701iA4rgWTwaoFAXg7frgjKaBFczDQPzeX04RQl2cSI7xJnhABP2qskbaxE7WxU3bl16lWwol6QK/kOn2qXAECjahyOmFm7DydVlsGJH8VMSEmg9GQjVsiyVeDW+iG00EWcKo/Y4s5nyziisN/oo+tVxcXGpwqczrW/n2EW9Vr7GvCnA8vk1gf4xJ1pcyg2GqeiLSaenxda8Fv2jWHBYUFDUXBxbSDJvnTfnOsV4wSNTMoAekGszhP8gmEOS2+WYv10TrgIEI/w/8cEIkLZ/gGaMksQSa5L0t4vKOYwuR2MOFMORShdB0q40Nxi4e2SGLKG0nbggUIPtXwAZQIVL4Q6b8qGa4tJDsy3SvAsF6I1kruIT/J4eioU61ZHrh/SOyUPuH98d0+zB4cCXu99cS0LS6zISqY91QeMkF4V8R7KHVuFuwvBWMJiqeCXjSL43wV3OLqFUojt2K0EIcaBi1GwNaQ+a7obmfRFaD+3fN2d7ndRAp136Koh4aynlTmfFxrqdYv9q26ar1q5aX5Q2OuMFy5Bz/Wzw+vVTkurGaqz3y0pHW5ruhLWnev+NEfKO0hx6Icc9XBv+oFHgHAo25wmGT7FekU= X-MS-TrafficTypeDiagnostic: AM7EUR06HT256: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: azbXiSK5CG0jWDf8DicOe0wijdPth5c3+Ht5rPXmAS5+ojEJHyYldub5tFtVE7G0QreJLQp1iBKJF5U5CT1y+z8OY8Z1C/acO6kFXKYRKyUSP+OO8gg5GNCR0Bc5efJv/JtQ8dZMFwp40cmGAc6iUgp4M/AxGVYEQiCifCRFzjT2dmZoZgSM1UxRdM/JuYALqe7wDHup6YwgfGm/+2s3VS7ZK2eeKk3jH1RpbOmleBsmAGXoklqr0U8T6HPONHWFeF0seppUv2Jk5LOxjoAZE1rSyHV3EdUF6LWwNK4itKrFlkbJ5ckGG3D7mk4C3HkcT0y2BoxbYd63R5PXGIQXA59EhFD7/6h1dcZoCdJGQztF1YaNQ2YguGq/h3h6FCjvjiTTt+N4ceXFEZ4b1VEqhQ== X-MS-Exchange-AntiSpam-MessageData: 1NicjihJrT5Q6AjL7Fcpe7EdXVdgxSWgDFjTn8TGomnXGMoZKEomuQrpMNUzlSuLlitOu4NvrsbOiKlSiyx3xvUaZfkNL3GEbpZ5nG+QL3iqjMCNY7U+KoOXFQbyCi712s0TjM4XFYe5pSzgWOZTHg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3d2bc775-88fd-4b1b-9a87-08d90b6aecc7 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 00:00:11.9347 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: AM7EUR06FT057.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: AM7EUR06HT256 Subject: [FFmpeg-devel] [PATCH 43/46] avcodec/xwdenc: 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: MQ6bKBuMbUlB 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/xwdenc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/xwdenc.c b/libavcodec/xwdenc.c index 8eec700e9d..d7d18f913c 100644 --- a/libavcodec/xwdenc.c +++ b/libavcodec/xwdenc.c @@ -24,6 +24,7 @@ #include "libavutil/pixdesc.h" #include "avcodec.h" #include "bytestream.h" +#include "encode.h" #include "internal.h" #include "xwd.h" @@ -147,7 +148,7 @@ static int xwd_encode_frame(AVCodecContext *avctx, AVPacket *pkt, header_size = XWD_HEADER_SIZE + WINDOW_NAME_SIZE; out_size = header_size + ncolors * XWD_CMAP_SIZE + avctx->height * lsize; - if ((ret = ff_alloc_packet2(avctx, pkt, out_size, 0)) < 0) + if ((ret = ff_get_encode_buffer(avctx, pkt, out_size, 0)) < 0) return ret; buf = pkt->data; @@ -220,6 +221,7 @@ const AVCodec ff_xwd_encoder = { .long_name = NULL_IF_CONFIG_SMALL("XWD (X Window Dump) image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_XWD, + .capabilities = AV_CODEC_CAP_DR1, .encode2 = xwd_encode_frame, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_BGRA, AV_PIX_FMT_RGBA,