From patchwork Thu Apr 29 23:57:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27513 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp2018868pxb; Thu, 29 Apr 2021 17:03:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzK84mUaOp3zoX+krAoS0eaLfdEQOxFLQAnlUNoQI1byGoiKs2ZPMWQtW7AXHfD8HzTCkkM X-Received: by 2002:a50:fe8c:: with SMTP id d12mr2580410edt.336.1619741014756; Thu, 29 Apr 2021 17:03:34 -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 me3si1488692ejb.129.2021.04.29.17.03.27; Thu, 29 Apr 2021 17:03:34 -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=jtfur8vQ; 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 EB27568A464; Fri, 30 Apr 2021 03:00:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR06-DB8-obe.outbound.protection.outlook.com (mail-db8eur06olkn2094.outbound.protection.outlook.com [40.92.51.94]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 16F0968A467 for ; Fri, 30 Apr 2021 03:00:00 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W5dCE11MSx76IXWdOP8DbHCzrhA7wpuTYaBKkKUAeutXawL53YCQNZmQj1+f4nHnLPB2q6Wp9w+H9YFBZ4aZ+5/E5wweSLcibfaDymyZXGdZQ9tZpupnMzIOmxJ20i+f+wlvu+MwXP27W5/QLXcsRzasPzRk8TC1FKOZrRGvOpmllOpL31ujgfoDTHfcvYRmQ0cYfba+vHRslOeiZ+43oqMy3XMtH/YwYJJSC1zh4Khx22JdUTw2AsK6mdolXBOxzKeGYBu2rRFqs3uguH3Hix6cfMmHIM3enZgY04OaX6xRQCYAQLLkWrkeznE8PPfy9RWlnlZ81oSjHETmSrQu1Q== 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=ZN+/QAtnzRvsseRPeuKA7kgwenpDuHwP06I8JdXj+rk=; b=kg36tDhTOAJCFOkCSUK7TwghK1UYc1aNz4XeyTfg6zciofUq8A5HYGr4iclAEcOuDMFPEVRCqmYSXUsduHPYf9faSbH0D2jN6FqKn3uM2sHmI9+wxfYiSe9alxqwybpNFCTDGyD42IAuHSnzp/9jneawCn+Hh8g1YcWFh1uLncv4w7shLW4NVtq5qfegyptXXXGbmo3Gx8BORrAzj7V6H11+xnS8kldyqm8Rd9ESx2EgEsTTdHQ9RS/bTFGUy54klRO5WvH592on8MZzbvg3Ey97sRFUf23iBktLIDo9Z6+9/k5uU4dyrYI2tHKllWcAGPfHifWfOsfikrsSN9jWUQ== 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=ZN+/QAtnzRvsseRPeuKA7kgwenpDuHwP06I8JdXj+rk=; b=jtfur8vQVZ5HiRYLr0MKTPBIpaMVGvTB/F+aK7kFjKp+xCxrV7bTsftVictmF5BU4uGffmjta8ntr4O+wDJxrPfNS+j0otIKVsVPtxKPcPv8o0/2FM85YogJdcadWPh/gpsnd8bcY03AG4sMo1MOW6E9rdPeaAP4I+xRwnpB5CStiajq4XnQW8kwvKDtIso/43uxUcbe1U0wXHE0zd4HrOhABxCMM+LUKfiIbHj9L32bm6dcfa+oFZtqWcTRMrOH8GmBWMv/OvtN68GTdrIwLCYvYMWknh/cGWaCz+AXgK5CuUJOnjTk4XRh8CcBI7oLvaAOflPKaB9/nJAWgHsXiQ== Received: from AM7EUR06FT055.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::4a) by AM7EUR06HT040.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::94) 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:59 +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; Thu, 29 Apr 2021 23:59:59 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:5BB83758294DFA631D0D2796B5985F6EE7C19FC37C20377792C438BF3DF16836; UpperCasedChecksum:2E20D0CB0517D1A801F2134704E8F94B210A1C73DB9700FB8A666D8C20A27CA2; SizeAsReceived:7777; 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; Thu, 29 Apr 2021 23:59:59 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Apr 2021 01:57:08 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [62XyXkXRqYNg/fghmGmQua0VpCu+bj2N] 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-36-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:58 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 50 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: b0f3550e-45d2-4de4-b168-08d90b6ae54e X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNU6XUx7q8EQ5McclV510mdNSQ6zVwN/I7EX+rk7h1h8rgqhciQx18U9NLAZa+qA6gywEMO0gZY3oJdyL8QvwqvEI6c6viBW11p/QMKTf40K/eVqCMZOcUPLwNQoroVPuv7nFlD6hk2rJ8iA0CrP7OIcPUXItQ6qTQiGBZIaOojUN8amR0SeuzkN256iJ/4qyqED/wb0kgo1bcbCVanISL28LvxY0S+Z4OVj8yzAit664SGmatH334VTUiBw8HwonWh37g5lGxpfbcUfB+bu+u4sJqOz9KwkB6j3zphJBXqzOx/GyPV9GCmGAVxlsCBaLaVyJLOEznylvgiylzvKU9xhkQt/C+4nQ7lvd3zuuOcAxfARD5FhXG+nQpyGML9cmrayIlxJfkOqb0bayjPA911hiLYaKcmrhgiJxTBbfya9Z5F3TQTC8JzlKnApE+tmBSniLGkYUSfX37P4qLWa62VD7osDrsvoBXZo+IaeqpTmDOSn9G2kyiRITdeClSf/u8Ebq1cuJrXnW092zvKUXLeRjI/jXNIOL//H7eCYEltCwiYF9JGuij2UAJ2YGsk/UYBn3h/3kFKB4tIbeR6l80s+5f1EhrmkqI5i6j1bMnKbMzO3wGc3V29xgV+1xZ59oNJQfEmo5hUjA7WVM94now2UxOS+m51adSmyziw4I447ptH/SSGVBlyn89m8nwRkHxCtZt5djsiDnPMnEV1tyXcb+MPU0RIDobM= X-MS-TrafficTypeDiagnostic: AM7EUR06HT040: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DLqp0VxhR0SKb0d1Sdyz+iOoDealckfwQm4Dx7Y2i/vZ6PNYMyLIFMgLljNyt2So6GqEPwkbUGboeUwlEVLBY/T5PKWEQh9bqktMVXHaUzPel09Q0swW1SZQSHIsV0Z+Gm9QKJbnScVBxoPp+p8N3Xkgdzyo89x4wW7PUD7zqmI4QjpuIHuNIHxziOBAoTtyssnMpewahu+SpyHIaRSoEwuLJXsDqhDuGdNcEe+FW6TE5fXARB8QLUNvo2J6P3IzrMDfFfBsgEDuOWC+xkBlrJSUiXlk0ZL09PtHa3fQ0Ohnm4360qL8ws+wPfuSvnl8wfoP49Vllwz+I1e/ZpQSJ3wqMDyI2fJEdUbN4JzBwf0G9xt969DgJNkpMN71ZXuWkHI+0LgPAG3nPVEBkOwxSg== X-MS-Exchange-AntiSpam-MessageData: 6ZzsJCusII4rMDMrH4x59b9wE9eM0Zd49d8oSFrrbSMvLyVkb6kQ2zxjoBqYorr7tEN7ow/6UvIL7lVwbPVeDFAPxyoOkp05jOXWvCT63cO9rozVPt0XTgSep8HbfIiU3fNfnauT0KMRu3LfDL4LWA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b0f3550e-45d2-4de4-b168-08d90b6ae54e X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2021 23:59:59.3093 (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: AM7EUR06HT040 Subject: [FFmpeg-devel] [PATCH 37/46] avcodec/v308enc: 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: J9yWEkup1zvo 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/v308enc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/v308enc.c b/libavcodec/v308enc.c index 919f0ea10b..18ce926b15 100644 --- a/libavcodec/v308enc.c +++ b/libavcodec/v308enc.c @@ -22,6 +22,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" +#include "encode.h" #include "internal.h" static av_cold int v308_encode_init(AVCodecContext *avctx) @@ -44,7 +45,8 @@ static int v308_encode_frame(AVCodecContext *avctx, AVPacket *pkt, uint8_t *y, *u, *v; int i, j, ret; - if ((ret = ff_alloc_packet2(avctx, pkt, avctx->width * avctx->height * 3, 0)) < 0) + ret = ff_get_encode_buffer(avctx, pkt, avctx->width * avctx->height * 3, 0); + if (ret < 0) return ret; dst = pkt->data; @@ -73,6 +75,7 @@ const AVCodec ff_v308_encoder = { .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed 4:4:4"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_V308, + .capabilities = AV_CODEC_CAP_DR1, .init = v308_encode_init, .encode2 = v308_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE },