From patchwork Thu Apr 29 23:56:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27487 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp2014385pxb; Thu, 29 Apr 2021 16:57:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwgHo1/HzWID/n4bC5JaA2CwNzn0kueuFISb1+ZzyNKL0wub+QlPx7UrBZlmnOgXBfSIvr9 X-Received: by 2002:a17:907:3e27:: with SMTP id hp39mr997163ejc.373.1619740675780; Thu, 29 Apr 2021 16:57:55 -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 ka21si1432652ejc.323.2021.04.29.16.57.52; Thu, 29 Apr 2021 16:57:55 -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="ZdYso3X/"; 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 180FF689A17; Fri, 30 Apr 2021 02:57:46 +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-am7eur06olkn2075.outbound.protection.outlook.com [40.92.16.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A6D506883B3 for ; Fri, 30 Apr 2021 02:57:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eLDrlIdWjEzdeU0jzqmZF+aSldRlfhBs8yecewHfAdUUMXTZ2EyHFB4SsrY7Kmicn2vh9BZhuCkRhbpDHuXgIM0KbtKO+QESfAzNjlco58W9gdQBR85YtvtQjiMA5S4JJVAwV1TTmtzwnVM6oGJWSB55dOdQm0hRnJE2OOpi4I8Yd12/D+6zPxw55VOGlA7MDgmJes6llFKZyfOmE0Eb4PqOEhLldesOBPAnEan0bV9Ye5/qiAVVoJEPvoa1yKyaRXh+PeNVkwis8xpAMcta9/x1T9U4623PdVfh0XS5R6ip6FRMt9jA+q8NRS+sVARUhabiZrbdI+VNnpGLnot6tg== 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=VcgxLjiHzJdt8xycvf+AYpPZmT6ytBQtDsEInX+jFBg=; b=iPY91M4KT89WH6MNoatO0JwlTffuKeY+U0eX0KaDZiz8X9jsP377krJMHV1kVvwCeNHUvYMXZXnXALg6NX2VlOaqu5saK3aQTqxg7CXL03BzFH1ixnxGtFnuMa4pxOPlzWjObi596Fg3Q2kXFCbCUisUo//CBgbOX+lTlmM1g2WUfUkHLkniS/dl/kpFGP+QTr2rNZFjbOEZlAN5aK0uMvdR66fG+zWdYvXdoOxNyTI5t8y7fZcmTs4wThqY5ZZgGZJH89GEbXf6BRyX2ZqCrYa9hpU8IlCSZ/yeMwG54ZRfKiNqFVwr97bOJ3qPnWDZPqxsepahalMQOx9UyJyEvQ== 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=VcgxLjiHzJdt8xycvf+AYpPZmT6ytBQtDsEInX+jFBg=; b=ZdYso3X/5ExkOUwJP4xFWpaKN1Ii8BLSNzrNbKSaHGe96/LA2yGNrzJqErWaGTj2ldnAl51b/c45EU9vCXQLuk8KgjMXUT3wz+NmQ+gcNxm4thTLLr5dBsk2h0Fq+2C6NrhNLPwmVbb8HfworKPqDyrqs7MlVw+DtPvL+sOcDsTzvSbwU4N4ZaqlJ1t54Be4k6hf9TQZGg3UCEkGwcDYRO5dLyaY0dXYab6y5xT89VUBhc//RGjf5wT3z7K6qYLut3Xb3Ib50uNpBoa3VDvyA7ZuuN3io9texvEUCp5vsjnrLTuHeFBWAP1ZsEhshkniKasAy4Z6Sks5+DlsqceSLw== Received: from AM7EUR06FT005.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::45) by AM7EUR06HT210.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc36::476) 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:57:37 +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:57:37 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:4CE76DBAEE7468A3D97CB2A627EA9B653250D22D217F4BD49E7D146CC3286526; UpperCasedChecksum:EC8BBE531A4233C0981F5F461527215F808176D0F12C08EA9DBFB7B7DC2D2914; SizeAsReceived:7616; 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:57:37 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Apr 2021 01:56:34 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [OsuCviTDwcmDJZLXtJ5eJEAPhb+fvNHW] 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-2-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:57:36 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: f9b35d79-6a21-4997-f7f4-08d90b6a90b2 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQnJqnaHo6w7XTEhYoMxTOU3BddjpLSyRvWaHQ+5gYDMFpFzpnJka0SSyXbIyYYIVs6/tbBVKvSbWS1L/vaVUuIU5Y5Zmfdn92ZUfSL6WNf1H+p4QyB5KyWetR9oDxhJMJ4bEpI1C2CQJT1H3AG2p37zGN4LadpvtpB+a1gPmceDogWqRlvIVkighYE+GaBJs9qSDkUR61Qg6DG8shtzRUOkYvXC/o9V04YBRMs5ml6O6kMGbE9c/Eg5J6euBlCcMfpaUtByZ2lZqq9gbLlJV3DP6lfAh4jo12IKPbvIryB4e84XtOYq39p8QEKF3HH46q/iV4ciaDd/tphMPpmo1pMbjS1B1qLibYzOKegQ7oO549R8rnWHaaD+pBxlydh7hjHAg6m+eDVPI1SbvfBd39zqfFVbIphnSH02qvuMHiUCKjBFBVMi32GHs8AMPcBYdbKyvllJ1zKRayHawrHKmz9bJJbnkDgV+yN3QFFrblBDu/znsF4MxJu+/K2ho03XvX+QIcar4UX+YyB80RyPEa9na2JpGVELofB/51dCOdseE1XMd3YDTvzThcb2bDwpdse0a7+0F0e6w1G0woZGbG17c/OUr8XBA4bw7osmzNuSFhp4/vGfDAZEMC8CCvjtJbvV6nAX7+QkrYDoUqGgftbLNG2eV073N62bD4/7iXwU4kWXnthpxmXIjegGCJ7XBGNwM9oTX65wXlQP7NxW2pYhN1hGv+98ikg5895h3K8bbaaIdHzjR2UXfF4ifuHArE= X-MS-TrafficTypeDiagnostic: AM7EUR06HT210: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Yolxquz5R7/WaLv1F4kAq+nTF5gmA301v42Pc3RJy5g3mpEms0KuinTP2KlLzA1RFMIpy5ziPa6ZHJPrIbm7ShqzotAfp4o16Sz5Hsf8IUB7gqzUSUTQpSvUPVLDya3WOmJ15r5Zvx4a5wQbIYPdKxYAVVxzGHwU29Hb5D+fvmMdJEtMldrkVGLfhfW2SokpJ/YCfIY9ZkQWIbiIGRdyjNdbA6st5tfUtIdvkNth0yG6ZbgZxrVfSftscWfd9LXpguIaDSJ9zrJDP4Kmp5rhYgX+1wBPDmgH2NA6KuoIMLRqXu6cp+OjZYrLiZWy3MpaB2TayumnrW7X7XCKaeFCA0g8IHMZ2K0Seb1ps0qE8BAqxZmV4heFNzHksLfBYSAukh7lISpolwxiiIhDVFSJPA== X-MS-Exchange-AntiSpam-MessageData: VCjPVHpky3+qsHCplNI5sM0cU4w2KDjdLtZXrYxaqhzzceypo6BSkrl8ISKkpMxG2PkTrIin6hccys2gFPJViuMNMNtFUpQWYWOJxW8v+a/c05VRHTFZcYjlYDslhSTCjQRpr0LHvV4ouGFI9jQDpw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9b35d79-6a21-4997-f7f4-08d90b6a90b2 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2021 23:57:37.3421 (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: AM7EUR06HT210 Subject: [FFmpeg-devel] [PATCH 03/46] avcodec/a64multienc: 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: S9stdwizy9wv 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/a64multienc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/a64multienc.c b/libavcodec/a64multienc.c index ad2500e41a..e2dd85b756 100644 --- a/libavcodec/a64multienc.c +++ b/libavcodec/a64multienc.c @@ -27,6 +27,7 @@ #include "a64colors.h" #include "a64tables.h" #include "elbg.h" +#include "encode.h" #include "internal.h" #include "libavutil/avassert.h" #include "libavutil/common.h" @@ -327,7 +328,7 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, /* any frames to encode? */ if (c->mc_lifetime) { int alloc_size = charset_size + c->mc_lifetime*(screen_size + colram_size); - if ((ret = ff_alloc_packet2(avctx, pkt, alloc_size, 0)) < 0) + if ((ret = ff_get_encode_buffer(avctx, pkt, alloc_size, 0)) < 0) return ret; buf = pkt->data; @@ -383,8 +384,7 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, pkt->pts = pkt->dts = c->next_pts; c->next_pts = AV_NOPTS_VALUE; - av_assert0(pkt->size >= req_size); - pkt->size = req_size; + av_assert0(pkt->size == req_size); pkt->flags |= AV_PKT_FLAG_KEY; *got_packet = !!req_size; } @@ -397,12 +397,12 @@ const AVCodec ff_a64multi_encoder = { .long_name = NULL_IF_CONFIG_SMALL("Multicolor charset for Commodore 64"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_A64_MULTI, + .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, .priv_data_size = sizeof(A64Context), .init = a64multi_encode_init, .encode2 = a64multi_encode_frame, .close = a64multi_close_encoder, .pix_fmts = (const enum AVPixelFormat[]) {AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE}, - .capabilities = AV_CODEC_CAP_DELAY, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_INIT_THREADSAFE, }; #endif @@ -412,12 +412,12 @@ const AVCodec ff_a64multi5_encoder = { .long_name = NULL_IF_CONFIG_SMALL("Multicolor charset for Commodore 64, extended with 5th color (colram)"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_A64_MULTI5, + .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, .priv_data_size = sizeof(A64Context), .init = a64multi_encode_init, .encode2 = a64multi_encode_frame, .close = a64multi_close_encoder, .pix_fmts = (const enum AVPixelFormat[]) {AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE}, - .capabilities = AV_CODEC_CAP_DELAY, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_INIT_THREADSAFE, }; #endif