From patchwork Thu Apr 29 23:57:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27505 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp2019121pxb; Thu, 29 Apr 2021 17:03:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx4gWVXwz8zsO/QlG2FVNGCaKHRCPIpANfTjvppUm6f70wAPs4ipD74njdUcD8wjPWcYlwe X-Received: by 2002:a17:906:1684:: with SMTP id s4mr1065308ejd.506.1619741032850; Thu, 29 Apr 2021 17:03:52 -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 zc8si1438216ejb.452.2021.04.29.17.03.47; Thu, 29 Apr 2021 17:03:52 -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=MdRmPAZl; 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 8F77C68A467; Fri, 30 Apr 2021 03:00:08 +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-am7eur06olkn2021.outbound.protection.outlook.com [40.92.16.21]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2D8D468A46F for ; Fri, 30 Apr 2021 03:00:05 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ds+WdkoBBW5rgKTcpw6ysHUnX+gjyRdsMyZ1tTEmBuKRXIBRJvRuvxglg/M5t3897Sj+JReD+j0zCovVIOtt+lBZ5z46zq3lriK51d/khWFsKc+p7svmQdasDRLKuoPyuO1Cjmg+yDjP/nv/CY85PKmr6HRDdnHB5DfkpqzwvT4xYzB13TGRzAwIXCmmk1qPr3erxL1U/7RAcCUWDqEGedot/iRFCv7wxtwrSyBGUlBsNJdvH85G694cToLRzyZWdtMgj/NW5sKwjanssOlK5oPyGgq8/VKzaOqm+Ageeueg15gABohUfQyOVfVwaguoRbJgqAR65EeIkCIKxGrjqg== 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=TUMEjbwfTeQTuQk+3p0bCp35NTS+oBPIl1wmkGbW3eE=; b=ZZwz5YhS4ZOP03P+7mVy16bfduW88zFcC/87Dtf2H4beGkoeyK/dOeWyupcHA4o9M+WA/BTNME8SDkiMUlqKmolWUos6+xTbsSv7s4MN/onqtlH6/GFISVoS6O9rGWpI6TbttKGlzkYV9YGl7OAyCnhi+Yolr4VFi35Pi6kO4R8rV+bIe6eFaY1pCDd6ZsQM7MhIKZugshBUGFRQsZumPkCfOZlwYXXPOqmMBhOduKryr36fBiyIjc8Z4rYNBQXwQ8JhCzulnl2bOtpsyHRJP02KxHMPq8dXgkE8spP/UEsUpl5jtHScgE6WNvsPrMavH0iW4xCbvI+LggbbbLpg4Q== 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=TUMEjbwfTeQTuQk+3p0bCp35NTS+oBPIl1wmkGbW3eE=; b=MdRmPAZlRKUb2vmwGLz8pqvycIoQtPRtaoL7b8dHSivUXZhqMudoXjgDtYw6QJfgsbrzmW3Pam8dJ2AlS6xbkvaUnVXyXoh/JBiVI5OIUQLwlF7Toggtg1NhWDu2/4RLsfJRtBd9VN7QkEcBTtZuUW5PUebikcCvVEYvv1EMa7aNVNuNFVm5AjvF1iaEJ4s5VcReABccU/Cg+DBU6J5claH3E9W8SDwScaaXxpv36Yju0vHXfD4YnLsJpIGlbQdXQ2RLGkAXfG+db5cO7+4dCH/yuCS/GZm0yC1FwlDGNMO+bT8gYuwuUu5VoxQr9v96MOfSJe4hJ5tyX+AYHCTZYQ== Received: from AM7EUR06FT055.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::4b) by AM7EUR06HT209.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::129) 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:04 +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:04 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:72B6478EAF1AAB7B0858FBFBD132AAFC8744AA20E5815777558B8F699D13F977; UpperCasedChecksum:ADF8D23E7FDD07A45DEB733643F6BE82650B74D00B4CA3622C1DA77BCD80CA45; SizeAsReceived:7776; 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:04 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Apr 2021 01:57:10 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [u2hoLH0/r+6oqs7kswbAfisNEWesWV+7] 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-38-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:04 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 50 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 4224766d-644d-4834-56bf-08d90b6ae879 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNU6XUx7q8EQ5McclV510mdNA5vT/fXqaCFWWg8dLxrqsvly2ofy1qPnI1xAoF9E6tcQ3/58sTqneWv/MIjMaKYMTjy35B1av9ijRjz4wscEXdV3b93WShjCT4XtiMi06Tbtd4YxSXhrzt0RnxJ0v8t/Se+iobVSFYs6CQQ/ffqFWB/UYOZYZfWnJLo0RS3fKHnA4ryhdddgsBabD7iZjiUSAfQWux+0ozoemYrZKZFxh4fkYfV4hJNgofK25f29NwDR8kYw6+A7gVHjlXlChNPRRwGrgOHk/BQgHHQYQW0eE0JQRFJ9xtK/61hFKNCesHsaHB+e2DU8k7KxhgaqiKJ8XDgRDKuGVnj+T+id9D715AZD04OAra/knx2cEn5uaR4iwW2IljmaKyH/dFm9mAwAQoy0UINjacWuGBekAfEY9Bi2HFW9qBJWqKsaf/UupyUaebZYJSwvuvlJHz/nOeGRHJXJTCxzcPPtcR7HboW4PYYqz9gJs0Hs2HWgxLwNwmuJjei+NgApdnyzgoD/xjVWofW6hPqz9gsQNdCgGTm1vOi4/ZcuSTLtFoLlXNOF2Oa1bpG2k1UJwMZJpSEw/Dzp/4PHLUp+hAaxfr0FzMxa6qru+FIZ/bEbGE++cTrcmeCkS7F1YR9EKprTlIZ9u1RAFTBBsfTFgKnkp0eUpq7mtrtRCus6tQibu7pp23tNfrH5Shx7q4WT6eWyl07TTmdaqCvYAwgIUiY= X-MS-TrafficTypeDiagnostic: AM7EUR06HT209: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lEYGDYxmU/k1DqumkqYO4xH/n52tRspnqssH4BAjqSPAYp2mET3yN26rwarlGpnzf66Ip7tJgNFXD1QPFovFfm+8MYbVI5gVb+4fnV+82ezO9vPjD2onBClJxlk/rk6/ju32I50xAFVo4EphU9uOMir0EAIK0GvVXgRRQIEKx3jDSwKU+G8tIqhzExLaax3JlsYgXANpA0YBJDdUpSYGMk1X6z1JqKDtXC703ME0Q70m4bGlcBzRDoeyu2RmOjI5TnjdOID6xJaLUdPmMILQ2c9MaaM8DZeQ1zsOs6j52G5Q0x1GmoMd0hoWk11hXsD+Q9jBAOA8zM+xmjDRPRgUjf13khrQniYSU7QGZMUNCgwn65I9vyPEXjx/kf+PQAjj/gmolnT+JQTkapyAsXr2wg== X-MS-Exchange-AntiSpam-MessageData: fgNkEnUG+GA7qDLlKoip2Ox9bKisAn57eNwPSQeeq0ZQroroqyufuk1BXAvmH16UZPFrEbXvspejVCDfoSlfiG2bVX0U2xjR/umHIVHxSnwFqgVN+Zdx8eCfcVdkJHd805ZI1lnFa4bBU+TAFLolzg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4224766d-644d-4834-56bf-08d90b6ae879 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 00:00:04.6050 (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: AM7EUR06HT209 Subject: [FFmpeg-devel] [PATCH 39/46] avcodec/v410enc: 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: U1d8ejFQnsfW 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/v408enc.c | 6 ++++-- libavcodec/v410enc.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/libavcodec/v408enc.c b/libavcodec/v408enc.c index a0cda6fb0c..af9fcfa9e2 100644 --- a/libavcodec/v408enc.c +++ b/libavcodec/v408enc.c @@ -75,6 +75,8 @@ static int v408_encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } +static const enum AVPixelFormat pix_fmt[] = { AV_PIX_FMT_YUVA444P, AV_PIX_FMT_NONE }; + #if CONFIG_AYUV_ENCODER const AVCodec ff_ayuv_encoder = { .name = "ayuv", @@ -84,7 +86,7 @@ const AVCodec ff_ayuv_encoder = { .capabilities = AV_CODEC_CAP_DR1, .init = v408_encode_init, .encode2 = v408_encode_frame, - .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUVA444P, AV_PIX_FMT_NONE }, + .pix_fmts = pix_fmt, }; #endif #if CONFIG_V408_ENCODER @@ -96,6 +98,6 @@ const AVCodec ff_v408_encoder = { .capabilities = AV_CODEC_CAP_DR1, .init = v408_encode_init, .encode2 = v408_encode_frame, - .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUVA444P, AV_PIX_FMT_NONE }, + .pix_fmts = pix_fmt, }; #endif diff --git a/libavcodec/v410enc.c b/libavcodec/v410enc.c index c31bf7f4d8..07d1565980 100644 --- a/libavcodec/v410enc.c +++ b/libavcodec/v410enc.c @@ -23,6 +23,7 @@ #include "libavutil/common.h" #include "libavutil/intreadwrite.h" #include "avcodec.h" +#include "encode.h" #include "internal.h" static av_cold int v410_encode_init(AVCodecContext *avctx) @@ -46,8 +47,8 @@ static int v410_encode_frame(AVCodecContext *avctx, AVPacket *pkt, uint32_t val; int i, j, ret; - if ((ret = ff_alloc_packet2(avctx, pkt, avctx->width * avctx->height * 4, - avctx->width * avctx->height * 4)) < 0) + ret = ff_get_encode_buffer(avctx, pkt, avctx->width * avctx->height * 4, 0); + if (ret < 0) return ret; dst = pkt->data; @@ -78,6 +79,7 @@ const AVCodec ff_v410_encoder = { .long_name = NULL_IF_CONFIG_SMALL("Uncompressed 4:4:4 10-bit"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_V410, + .capabilities = AV_CODEC_CAP_DR1, .init = v410_encode_init, .encode2 = v410_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV444P10, AV_PIX_FMT_NONE },