From patchwork Thu Apr 29 23:57:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27526 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp2019316pxb; Thu, 29 Apr 2021 17:04:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwJMMLnUtj+i+X0HiLoM4+Hy0A6fpf4C670gKajVh4ZWcqEVpsQkqBsB5t0ao/FBRCh5jXf X-Received: by 2002:aa7:cb48:: with SMTP id w8mr2562540edt.55.1619741047069; Thu, 29 Apr 2021 17:04:07 -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 x25si65908edl.238.2021.04.29.17.03.57; Thu, 29 Apr 2021 17:04:07 -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=Ffaesxc4; 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 85ECF68A4B0; Fri, 30 Apr 2021 03:00:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR06-AM7-obe.outbound.protection.outlook.com (mail-am7eur06olkn2085.outbound.protection.outlook.com [40.92.16.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3A65C68A473 for ; Fri, 30 Apr 2021 03:00:06 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PK8GVZHodFi/uVlQGCj5K78WgVyHsGiqXF/OTAf67+YBDCRc1qekOfoy+vRF/EC4M/1Rg76OQO/DrR3JRw11S5FRBkFxJS3FlvVBzTDGzLXCKkZTHXnYY2fhXTQ9B7IdWNk7RNDkzOnqxJS3HDLkbmdF1V6/HcIwcLSgpXCcTSy24gN6lV6O57x6ccNAv38FaHjbCfCb0+jDnZpxGoWo5SLnPHV7OQGJanPDq2sjx04TXZZoTThoPXclHr8BxNHO+SVDoJ/UoS3tOvIGkh+lzzDAUAk+4ZHg+tMpHgDbu8GkjGBz7MKerYJpZok7+NmKvYbnT11xmaCWU6nsAGbWPQ== 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=B6WpdI5i71rOMmERZbQkpSQAatAS/YiIACqsc1cy2gs=; b=S4JEGsu21DZAhKQzKmse/29GFXrpfC9rskcqYAXWbxuKk0q6pG6kvLuCvH73VDRbR5fFBvMhjaNkbbKRFl1OK5smp1Hw/enHAVT6RFFZ5JVwLaRE3Pjs9LdXMz6l393/AMdDtHCUftAFqI9bJfh7hP2IwfnoJXrfJTEO4JzHFity1zAUbeWZI2XzWabOtSsA30wzFMMUjZE+3x3GY2YYviL9zRampEwdCK1lorS1WuZ3izCM8oKj2EX6jcF3/MzO4ezyzDmVjM9Twy/mxgjYk1XBkJpi2eonf5RrAlLqbDMXVUwhl/L18rxNiVze7iHM5UpM8B5I0Z8qDtqV/OY2LA== 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=B6WpdI5i71rOMmERZbQkpSQAatAS/YiIACqsc1cy2gs=; b=Ffaesxc4FPthqmqQvjLiTJmWX8WLJI/WDAY9s6o/sR5h1sQZaMt11BVGjCReIrhNr69aYAHy0tu2T7V1QtwszoWkQ4t0rpN9ifUUZAn4pRAi/rsaCKyZOM4ha6hKD2IGe27zlxKUhleJ+bMbWz5wbEByPTl2PN8gW8SQ6Qq8QdZ+oyvWGOYespudH3r/6lOsf0VqMqZxc2xQK4w+2dwJ9bCI6XFKjy5gGq5h1YskyeEdhwe/Ov+xnqiAvosYKnIfPIlth/2hxNKi9BF0aQcY12r+dQkXUcvYMwKJe96hzijgtG8mPhNH+RBTriL6JAVaUpm9XQez26Ac6ak8LQOXvQ== Received: from AM7EUR06FT055.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::44) by AM7EUR06HT075.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::73) 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:06 +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; Fri, 30 Apr 2021 00:00:06 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:12F5665A435F9D6DA10FC2635FD2953EA4270E3AECBCBB19CF6150EEAF450D75; UpperCasedChecksum:DD52C89D29D9B8BE53F82E41A83697D8834097A9AB7844A312B7A03C149E70A2; SizeAsReceived:7778; 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:06 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Apr 2021 01:57:11 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [mEXfsV2lXDJJX4a4i9QAyu48Kp4bEkTp] 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-39-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:05 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 50 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 25172adb-b9f5-4258-7211-08d90b6ae941 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNU6XUx7q8EQ5McclV510mdNSQ6zVwN/I7EX+rk7h1h8roCTGdsyjXMArBwxX0cv8ZAYALSTjF4VUdO3YS3J0sWa1YDgyFInh/qTVEcWc3yrDvRxnhFZsFGfgSz/g9wUy6HhfkZmAmEecdPpCeq4zZ5/3vjpXmJGxuIg2meezMu3pmAjP6HTBfDgJxtRnqt43cLWDVOWiwC3w1xVms67kCwCmUwGjUfB6TUVmAyuki4wPGIPPsYNm2JFAN/IuY4d6N4WzHEq0Zgj6/syRhvnoAbng/0EaEgOTm76EJFyo+M5djAAF2vf8g72IbS1tfvstFkHOryFY4d8Qw12i+wBV3HphVDZ1IPCzSGS9LP1HR+3COaR/BSA94JM6lXiGVnW/l9o4UThxGXTDVeR8zEP/MuLP0i4Tk/ne/1seEe43bbNA7q1LDGeKHBd3vdAePz+b/pzNnclaKsAmnxdq+lx3jx7uEKd1MqhHzK2Ft4HNU5ZudKa9RdnvB7h4DysdBZlD9r99TGHuX30GvocviQa4wQUDEQWHNjgM+lwGvdwKdCxrpzEcVCrbVe6c0RKcZcpnf87ioTnNBB4qhhQB1ARhr4hxjRdpgmrQ8YadQmc8eCCvWnqcBPFtw84AyWQUna27MRa31WkE5AqEyxqiAuxtssKRRmb+plsYv+YrOTkD/DLrZEv7YBJGZkGM7OML/DUU03dQL7IshsP34KDaAQBFECE86+W3L0lWv4= X-MS-TrafficTypeDiagnostic: AM7EUR06HT075: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9xTv81Hy4aYLduRDwJVglewyhaQ6i40TINJihBKOwvAygaUMRfNP8SpT0lNxXvjcsHHri7S44qUnRb3UBQnl6mw7eT8wrr+7i33cfxjVMgC6nNxZHD8/F5qGw3xfMiJduVWBEZ0n3yWss898iZdDnTO1e4Xu5z4lev0jP15718T8Q8CNtzC8p26rePyMw56eOZJmwYDzVnRalrgVHYRP+pcqZHU1ZAq+5Conr3qNKQS4IOYS1DkYE7r7rhNq9g7bHrjy4qAw7XJmaR/kKgqGczfIDN1k772TLTuF7zRXQzmXoiNpji4GHb8P9FuujX27A+/zGgMKQcMBcBhNpzrMdLv3O9XESWFnvk9XsXwZ7RMUPqHI6KdLBSzKo9dQO/RW3B19ppt/T4pNQh5InviBFA== X-MS-Exchange-AntiSpam-MessageData: xr+xLDR3rurmZZTHexOC2xvlJOHD3pOffZ0hMGpIUr3VJQYFylP1QoHhK/ivM7tJ65uJeB8jP8Z0Uay/FBHwsyMSs8M9QpviJoA7qKATtcwWyW1icz4GUBEoomalbm1kXt5oUKmVAbHpDih5kFYd1A== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25172adb-b9f5-4258-7211-08d90b6ae941 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 00:00:06.0223 (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: AM7EUR06HT075 Subject: [FFmpeg-devel] [PATCH 40/46] avcodec/xfaceenc: 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: kgzFkSGYoFwy 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/xfaceenc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/xfaceenc.c b/libavcodec/xfaceenc.c index 21c7d8f31c..aa9e905965 100644 --- a/libavcodec/xfaceenc.c +++ b/libavcodec/xfaceenc.c @@ -26,6 +26,7 @@ #include "xface.h" #include "avcodec.h" +#include "encode.h" #include "internal.h" #include "libavutil/avassert.h" @@ -195,7 +196,7 @@ static int xface_encode_frame(AVCodecContext *avctx, AVPacket *pkt, intbuf[i++] = r + XFACE_FIRST_PRINT; } - if ((ret = ff_alloc_packet2(avctx, pkt, i+2, 0)) < 0) + if ((ret = ff_get_encode_buffer(avctx, pkt, i + 2, 0)) < 0) return ret; /* revert the number, and close the buffer */ @@ -216,6 +217,7 @@ const AVCodec ff_xface_encoder = { .long_name = NULL_IF_CONFIG_SMALL("X-face image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_XFACE, + .capabilities = AV_CODEC_CAP_DR1, .priv_data_size = sizeof(XFaceContext), .encode2 = xface_encode_frame, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_MONOWHITE, AV_PIX_FMT_NONE },