From patchwork Fri May 21 09:17:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27862 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp341941iof; Fri, 21 May 2021 02:21:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxLx8b0AW0Z9Md7q1pPJXAB6U5sdi5qmlQP3jyS/FMjZxci6CSbhilvzsqAcs4LG0AyXFSx X-Received: by 2002:a05:6402:35d4:: with SMTP id z20mr10148146edc.164.1621588912290; Fri, 21 May 2021 02:21: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 cq22si4665648edb.134.2021.05.21.02.21.52; Fri, 21 May 2021 02:21: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=TLeTcnNG; 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 C5463689F14; Fri, 21 May 2021 12:18:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075021.outbound.protection.outlook.com [40.92.75.21]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 10404689E94 for ; Fri, 21 May 2021 12:18:28 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=joqPkqEIdULvFJvvFwkVsbYrlNSLAPa7SM9tcU7RFBf/1CRBG+2eg0KBjRLHFWsS3XY1yFIe0XeHKBsUQx29t/8k94975OLlQGOUQ9PjQWNxKIX641xn+9akFIlSrSUDoEF31ciweEzuHi3itBF9ChK6p6hp+qZG1QWupD1oA9MrmgdhyVsjWG4Qu6IQRIqrd82NtbI5xiTcoec0Nd7rnRdup2ugBVTNjIUIso8LWC/MgTmmA1vuv+M2T5QmAj2MxK06S3Rk1LVSI/xkjiZBcToaS/vKe1WHU/3M/t+8kaMRqigNidk38S40RDvtzg0WrRqJ48Equn+orxCOPlyP5g== 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=0gwZ7jfoQPB6thqMoZStpwoB0KyU3ZMWd4R1Lfqqr1I=; b=nAh2pOy6nkjZCDLdBAxryMhqO1mespsnbmwQDW4nEpwXVnBa+KZ/HZZpeWp7detDujA8Z2SR8e4/y6cLwb61HU0M12JLrpxANZqHrMtbTqn32pHqs1Ndf8AkrgGIYiw9NDSJ/XWtGOGMLPVy0zkNNKXxSft+TVvhgnVpwAeXL8VfdC7UyJlWqHy9RVYzmHbnemZpPzPRD/xNVD5EteVccdrQ/kn52DlJUKKu/242Yg2jJmb3tHC3Bct5mY3hFtWSWhlrNe7k9rC/ugHwxF4ePKssgJlw6QRD6hCk8ZdgstgR/Z7kijRz/dX5DExw/XqOaWrKrzhN61GrcPcFkm7j8A== 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=0gwZ7jfoQPB6thqMoZStpwoB0KyU3ZMWd4R1Lfqqr1I=; b=TLeTcnNGi+PfZRa+KBbsoswb/VANEsLJJQ/fR/SMU6jzU4eUwvFNAsYmHIBHxt+DMPPZGda3Tdc9T039xC+KM+raJO1XMcbIWlaggSrqPAABLLOAhwawWQlEXy4TnVECwNM5PHROX5MToYWHZ0E8mqzdA63t2V7pIE3CKGyRr2jXlsFlCw9efGJFJCHwjMS4FMfzdyyOCJnBA+dSJTTKrZcT88EomMZIAClZAgc+TtsA/Oo0LxYUuKIIDNTTD7O5xfUdR0QXginTw55kUysypEhYJqDThbv2Wuqv/MwtkD0lVQbSYOl4OFrDHTia/8g3HRzrMsauNL7dw8oI2K7tNA== Received: from DB3EUR04FT030.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0c::43) by DB3EUR04HT093.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0c::103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25; Fri, 21 May 2021 09:18:27 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:7e0c::41) by DB3EUR04FT030.mail.protection.outlook.com (2a01:111:e400:7e0c::99) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Fri, 21 May 2021 09:18:27 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:745D2D81055A2D7BC8581BD8B8D766F6245BC26AA9A69A6FC9C5A3FB23B1220C; UpperCasedChecksum:1DE77C135C632991C9C1EB7ABADFEBA0C206EEA4FFCA3C6FA9DA267417D4DD85; SizeAsReceived:7604; Count:48 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::f4cc:63fc:9cef:37fb]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::f4cc:63fc:9cef:37fb%6]) with mapi id 15.20.4150.025; Fri, 21 May 2021 09:18:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 21 May 2021 11:17:26 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [thnZ4Ipaoex3VO/mMtiYDCfZgmF2M1X9] X-ClientProxiedBy: PR0P264CA0070.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1d::34) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210521091742.184902-22-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.95.27) by PR0P264CA0070.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1d::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Fri, 21 May 2021 09:18:27 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 6cc2d80a-f465-488b-d6a6-08d91c39649a X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiSiYaxVAPXjtBLAGaAm06UeVcWFaqRxGVpGMVdEekYZOjmKhanrHCLoYgGksU+sM8tCwjus75dLWY4WMQfxdQPMMm3g8OGBWs1uflTk2XFvltVf5nMp1AxLihCMXrKGQGJt65zTXfY2t4d5nDpVfDj7Dqfn79y6FssZM9FpyvbacAHNcxmYjLU0RkyX/kd3zi3hpI2LaPv/2VKF0555TOwAVm96L5Bs6Nln1HSZ4LLHgAnmjf/lfBHmo0jb0NiiLyXiuZscJ/LKjBqCgFVXpg7EDkMnQAaFhlYNg+KUODIORyhd8w7VqOmVASBOyiPgAxZuov1C+TnLuod666e2yi8F0jCqk0jalShB/y4u5Qt69XYJq9Ku1wh+NQ6HJro/NJ2RjEYVOEzwDfXLJSHAf48hNg84ePlqdEIXWsIMF5CtKK0LisGyN84DToMDqxAaQwZGXlLi5EvhXI968xBw80Wczn+ESNrLlCTWbBFckAVQtBCaP89jKnBBIuFTzD0BBPQ5TfABQMaPoO/JaepfKVhutz6mJNcMQEIdzL31ihUgYKOjK7XxvdYMyuJDPYz2KB0/1P5QNhykcrWRE/nHHu3+mmuzBFlqBUEQXnc4JCT6uur2cYkJ+eZyYPKfQQSuG0NwhPw36h0K38FnFVjJgJHXrYwjPvQofWZrAbiKamLr0fyMMf6gmj1ZbYVpfuXWJa044t/BDQ9n1xNCbVoqMx22jk19SZ75ev0ENLDPWin9pJnLFW/nMlHR9M15km0n4Es= X-MS-TrafficTypeDiagnostic: DB3EUR04HT093: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hoZvuEyxHvQ+cxm23LkLQ1cgPOkT5SVCsIion0ROwWgLxCTrQlHwAqiPi85O1AzOw1yylI3waK8COnGjUr2FDoce97m5+oW+atxINjlTWpkFCjR6liJoQbDQKq+nrlUObbW46TtOnA0TipZybyAlwI6j+XiY4plXPGlMsh7pqYoBUhssf70uYihzyQF8YqsqlDBCfaekr2mUh0Q6JRJiliVsrw9ry6SW43wqZqVjzh9fjumFwY68cPHvQSi6AxCeykKS8QYjbdx3w5BnB4W8atTEBZGbl+sv67zOGq88+9nKiVaKvkcZz3YG4Wz1jxJgVv/U4qHp+cTTni7uWqr4iHFkQ/DbnUT40S9h47XykBbQqtZjLvSHQmkbjifdVs31+iOPf6/w3Y5y0IEvc2eEjQ== X-MS-Exchange-AntiSpam-MessageData: GTc3SqLHiz0QgXk2qC2+ipbfWoHP5b5fWnwp+UN5PDrwJKPVNREGL1AZjM4GpueOvaLWR6XZ7sJE7KWx6HxQpsuYQDmaGwq344Etr4XnWP3qNnGBc9Qb2qk/8isbY3MUACcfqK+VQqmaSSSvlqLhCQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6cc2d80a-f465-488b-d6a6-08d91c39649a X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2021 09:18:27.8587 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: DB3EUR04FT030.eop-eur04.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: DB3EUR04HT093 Subject: [FFmpeg-devel] [PATCH 23/39] avcodec/pngenc: Avoid copying APNG data, allow user-supplied buffer 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: Y528XT4YU8jS The APNG encoder already uses internal buffers, so that the packet size is already known before allocating the packet; therefore one can avoid another (implicit) intermediate buffer by switching to ff_get_encode_buffer(), thereby also supporting user-supplied buffers. Signed-off-by: Andreas Rheinhardt --- libavcodec/pngenc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c index 5a376765cf..894b44197e 100644 --- a/libavcodec/pngenc.c +++ b/libavcodec/pngenc.c @@ -20,6 +20,7 @@ */ #include "avcodec.h" +#include "encode.h" #include "internal.h" #include "bytestream.h" #include "lossless_videoencdsp.h" @@ -887,12 +888,11 @@ static int encode_apng(AVCodecContext *avctx, AVPacket *pkt, if (!s->last_frame_packet) return AVERROR(ENOMEM); } else if (s->last_frame) { - ret = ff_alloc_packet2(avctx, pkt, max_packet_size, 0); + ret = ff_get_encode_buffer(avctx, pkt, s->last_frame_packet_size, 0); if (ret < 0) return ret; memcpy(pkt->data, s->last_frame_packet, s->last_frame_packet_size); - pkt->size = s->last_frame_packet_size; pkt->pts = pkt->dts = s->last_frame->pts; } @@ -1148,11 +1148,11 @@ const AVCodec ff_apng_encoder = { .long_name = NULL_IF_CONFIG_SMALL("APNG (Animated Portable Network Graphics) image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_APNG, + .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, .priv_data_size = sizeof(PNGEncContext), .init = png_enc_init, .close = png_enc_close, .encode2 = encode_apng, - .capabilities = AV_CODEC_CAP_DELAY, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA, AV_PIX_FMT_RGB48BE, AV_PIX_FMT_RGBA64BE,