From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 5C6EA40A7B for ; Mon, 4 Jul 2022 15:25:53 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6262A68B955; Mon, 4 Jul 2022 18:25:47 +0300 (EEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2061.outbound.protection.outlook.com [40.92.90.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E558F68B920 for ; Mon, 4 Jul 2022 18:25:40 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K92jtK/uu+M6RTzjTc2xi+2W/5cEiI0wTaKpITPM602ttaHL54HQuiRW4Cvxzy0k7L9rR30wGonll6YaPDfUkj5krOBfA2bonDw4kYQ5vcgIUqAAbQD6toFbWhdjZQZvMUwW6oMnI4vC+Tt1MmAxYfof5p74bR5UKjwqpu3GgVNLenH9jkZ9upsfhSMV6TZB8hvcsGSPMXgEwyo8X7ZlwpyUP5PQKUqUh/GkDHcxQODganYU5J/V6byIH0raoQ8nWIwqtUs8nV25ZbJIO5/Tz5NLwNzIzvvEL2N85cUUzuLH8nprCBOWL8i3Pos+RTdTDPr7OGuKqTWaQv7y2gQHKA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/8Oi05TJIYy53kL2Sqai+prG70RHwO0OpycOSX8149I=; b=mcEz5dfA/GRFEZCYqiWJctSQkrKukUQtyyi899+m00gawQ6IlNhPBS5T7BInTtBy0I7jY7a8uNfbe8e9vMsJxZHwEzga2fz9EFtWtKk0DuZpwgOCYAqt7zWnJwp61iTyAtnRHc0ifMFzGCmJXDJIu1ukv1L6Mu6dyhv71z7s96wBcEld09Sd0Zjd7lV5vWdcgtBr26oUmsR2VusVMNwZx36HUjcQWplNtzgaR6fECOS2eJVIeEbrHkXLrxlo1RK2qiiYAzilTt1pYI5O3T7Sx6bZ9UniWftQmSslLSSzqJwEVUaEeKW23WM712QqJhbSQkBJ1l7xzQ+FJQ/2FryMDg== 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=/8Oi05TJIYy53kL2Sqai+prG70RHwO0OpycOSX8149I=; b=c9bDmyzI1y+MUL+IGnRP7vdEAV7ZDnCM7gEadQrtfUbDpNG610QjgkAgHLVHalcf9Gx/BJdSUxWgcnMcHoUgY6m2a+Xn6gVyfpKjOALosx9jgYK7rgYYptDIbnYR2JsBxK0ncqUol2la4MydBjE1Bx7xDpd5Cg6oCtOzHXTT71Inz4bLyp2kfXmWqRvCkLjwLzhQNrijuKV/TfFkPtpBiWuFL4e2OzEKN1UInKZDwy0A1G7pyolXQk5oXGN1MkqYKXSRR05pEt4eLJwzTxLMzewWqRkyn8QUoEjlWjFkH/aZCV9i7sE4147n9AT7gKgkCQvDULdXcsXWR/U9eaohAA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by PAXPR01MB8566.eurprd01.prod.exchangelabs.com (2603:10a6:102:22d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.15; Mon, 4 Jul 2022 15:25:31 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.020; Mon, 4 Jul 2022 15:25:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 4 Jul 2022 17:25:19 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [Qtpyy3UfxXrmlgNxYSO7Qh9jZZFycZU8] X-ClientProxiedBy: AS9P251CA0017.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:50f::22) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220704152520.1106645-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6bb8e9a0-e019-4b16-89e2-08da5dd16e6e X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiSUs0MpKjnPJCEF4AMFZodniWfFV3uiF1f6r7XkDB143Zf0JOon+PYQXhKOgQOnWNEEoFaHEAxFb9UUz/5yAIpbOJLBuBHPzMhHaFBrIUs/TX9B/kM6uQpCZQbNi/yAVq9dgxIFIRI65+G687NMNdrpVK0k9m8bsNSnPL7tZOBbbiHenpQdH9sq/ytAK+HFgwW2PsNydmUUaFfLRzgKTgDvKuW1+RsLv/9tO7HEUGpdCkssFG6ac+dbqSPJFt6B+cyUJpz7h0lEPHQgClkVK8ihnMQzXgZn41TdYcyTI6IUnZjYabGBBUDtXBeQbmMGu+sygwg+FuXxvX29WJDzPvDnuyBVIctlG7StxaslNTouFF0ixQMRyVqWD02hsMnKcJrAHirQ7oEF4dnTIYAkwHcRCkzfHElVlDXJhwhO0ciWfGk0GPOmtaI1HPObMXYRA4+YBZTHcUjFAVzGdr6tEPlnM2dG5Uis/s9PKT2IFaMiBb9Ow70HLhL9srjC4twdxmXSfCUc+OM2zWOKEPwyXxd7YK1JvD2N2tV9Xci5AeJ/tk0Go14CLhm07r7c/Oi25PB3p3oc4hkKTH6XNbDrwjRcZBab8Vwkk3czJsD5R/NPmL4so3+SxKvCw25TgKLdlZPdU+rm5Egngo9p2vMUc7lbEUnUR+FLXcVMiPn51Ws9/aXY/YS6ktnLEt3abNGa08Ejw5M6QrSsDHodNYIZAx+pZ3YJzTlhjGcE1Ciup6+xPqSNUFNHBCO/QRdmL2ZAmow= X-MS-TrafficTypeDiagnostic: PAXPR01MB8566:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /nD7X97Tfj+gqXz4/VsRuVYiWzrnHwIaKjDJWR2kyJmSCIlCOIDEquKJYRoipSRgzgmUXrI7wF9Qi7vWqjCNvdpekF2oJ1gLXjMrZGSDJUCR/Ii+gufOc+1EJIJRrP21rSLhgRJo8GdQvNEbhh9c0LklWVshlO7yOagH2KG5wlj5h0MDFL2V0GYdHuF5nst60BWknYwdtUzv3dpeFLnzf/9HEF2mF+s9RUsh6Ef62acpwI6eev3sMjNVU9exb0VjFJlRTbYIoPWsVg3EsNKmfeVDAl1Dj2mwpA2JIdaD1D09/jOifGPmzOE1cFjTQfWBCqdodzsuaBq8YGhfnPEw8jMukNBQz8By8f5yE65qXV7B0oMsGynVXjUERi5riyOVHRIWd6e01RsYmIJvkpRKpbmLdGy47SCHQJZ/Vq+gO4f9twv7NqUor0FRHW8CbRbQhAh30smOME4gJvA6wytYwv8OpDLCXEenWgUpE2iSeGub440j8mAivSJDNL+LNXy3fJkzrZ3yn1Smwx+hnAta6ywJonYkLQLtl2wu7AdaqXMjWh9l1SIVg1/iqx1AFHVPvdi95HrJkDaN/qDwEwogQqwBd0nE6+GuKXXOfQlce0Ty62LECeN1LyBJM3FjKAWPjywTZYR06Pm4XopC+XSw0A== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pryeDRYeoFGgJlxC18OTNsATwIfOKuoXmzj2uN17AyKdhrr/nCKNGKS8YStg?= =?us-ascii?Q?of9dTxMhto23/3tddVwVPywuRjGNLhTlSwVX9yX7YBXb+bqXpcSmSSBA1Yhi?= =?us-ascii?Q?4Kd5JMyDLHiIroZng/vkZmj8o+IPRWgWIBaJvkftR+JuVJJ3X2OzXhdW0RA9?= =?us-ascii?Q?J9HsjThK4UcUGPXD5l2VAzxyNYbDwSpgWZtxlK70aLkLuSxw/4fcvwDFk8CC?= =?us-ascii?Q?0vs6cWZe6K4qAmtKLQ+uraWV2JHBlfoQeeLNdoxiLDDz6hjDrtxAKAuBMdiA?= =?us-ascii?Q?RGJIrnZH9Oy5yp96f/oviKLbzsP+BXpzkui3YkdpYoPgPdYHWfcs0v4UEp+x?= =?us-ascii?Q?dHlN+uUH3Z1N2YBsbLtvL/s8/YNzag/BfJpQemCm4u6hNoQQzJPHgxilEdQG?= =?us-ascii?Q?tTGeRGIkZLhUKXd9YBCcFi1F10CW2jLjMQJ/Dw8X0Vczzxs28OVgYRJjXuPu?= =?us-ascii?Q?nvAc5ckpS0okMHWC2Xo4vs3btLXy+4+SgGfM8xOmx5fp5uRzStkGzUBN6tZW?= =?us-ascii?Q?mLvszKA8JdAH/m1XtNxEdn8cDLb6mt39Zc+BmyZFeBjtMC6zidR+hyBVgdTU?= =?us-ascii?Q?aatQUZgWJTZ8liqz/1goLqBLQOy5ZqS/4QyzYelLgnhQiUFWTu+6LWeIrlcd?= =?us-ascii?Q?S8+6WNqlAeNI9oVUSoUiHTDN9vBa8/tpnL3wyMhAzxTTLkftyvDwgH/BCA1P?= =?us-ascii?Q?XsA/SzxKBAMNYWO7weI3meqCWvpQmCl9lW7X6qyUz6W/gHUSADvx1MId56XL?= =?us-ascii?Q?Ur6qhKm+zT/A5Xy92oUiEU23AFSXz/iK5oC6zB/xjdIEv0oBnGA2J26cnpoI?= =?us-ascii?Q?WOkkT2rppiPuPJlFZq/7exPtdnL0nRxeJ5cnxmWQ++xqOjcfHCGv0tAMMgPi?= =?us-ascii?Q?b4SPd5oKbj4gr36bDoMyEoVa5KYQUCh8muA16t1VkaPfItt4Y//pqQvg31Di?= =?us-ascii?Q?95SpFqNhoYcTVQi1Ud1ThHo+NLi0isQbrE4yY7jAMlb0KkBKqp/B3r6BcG32?= =?us-ascii?Q?KkkvckiP1Kbx3zHBMXtCdVk1SErDqvTPfav2ExeA6FSyOxm9yyv9cH2uQPYw?= =?us-ascii?Q?EyoGguvkXZjZ3/PY0c0NtyxHREzqziEiEAba2hsD+hahtFAqu9EKzZdQSxwm?= =?us-ascii?Q?bJ2kQ2rUHqcjoxHvofQM2uL9BX/0Zp2f3GN6cxIPrFcUzOm5jr0BxGtDc2Ck?= =?us-ascii?Q?H+2enkT+M3JGs25kUXJvYpnNqCsR78tuHZzBZqchhD9UPaCDb2WEFdf1sJ0P?= =?us-ascii?Q?aNYvipRFOA6wobhXbBAfbH72NXMJ2GkEfvBloBswxqjUZtmOlNBEmnS1Yn2L?= =?us-ascii?Q?zv4=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6bb8e9a0-e019-4b16-89e2-08da5dd16e6e X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2022 15:25:31.1266 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR01MB8566 Subject: [FFmpeg-devel] [PATCH 4/5] avformat/apngenc: Don't modify input packet 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: It might not be writable at this point. Signed-off-by: Andreas Rheinhardt --- libavformat/apngenc.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/libavformat/apngenc.c b/libavformat/apngenc.c index 1c039685f2..c219b80161 100644 --- a/libavformat/apngenc.c +++ b/libavformat/apngenc.c @@ -159,6 +159,7 @@ static int flush_packet(AVFormatContext *format_context, AVPacket *packet) avio_write(io_context, apng->prev_packet->data, apng->prev_packet->size); } } else { + const uint8_t *data, *data_end; uint8_t *existing_fcTL_chunk; if (apng->frame_number == 0) { @@ -178,6 +179,8 @@ static int flush_packet(AVFormatContext *format_context, AVPacket *packet) } } + data = apng->prev_packet->data; + data_end = data + apng->prev_packet->size; existing_fcTL_chunk = apng_find_chunk(MKBETAG('f', 'c', 'T', 'L'), apng->prev_packet->data, apng->prev_packet->size); if (existing_fcTL_chunk) { AVRational delay; @@ -190,6 +193,8 @@ static int flush_packet(AVFormatContext *format_context, AVPacket *packet) delay.den = AV_RB16(existing_fcTL_chunk + 22); if (delay.num == 0 && delay.den == 0) { + uint8_t new_fcTL_chunk[APNG_FCTL_CHUNK_SIZE]; + if (packet) { int64_t delay_num_raw = (packet->dts - apng->prev_packet->dts) * codec_stream->time_base.num; int64_t delay_den_raw = codec_stream->time_base.den; @@ -205,16 +210,20 @@ static int flush_packet(AVFormatContext *format_context, AVPacket *packet) delay = apng->prev_delay; } + avio_write(io_context, data, (existing_fcTL_chunk - 8) - data); + data = existing_fcTL_chunk + APNG_FCTL_CHUNK_SIZE + 4 /* CRC-32 */; // Update frame control header with new delay - AV_WB16(existing_fcTL_chunk + 20, delay.num); - AV_WB16(existing_fcTL_chunk + 22, delay.den); - AV_WB32(existing_fcTL_chunk + 26, ~av_crc(av_crc_get_table(AV_CRC_32_IEEE_LE), ~0U, existing_fcTL_chunk - 4, 26 + 4)); + memcpy(new_fcTL_chunk, existing_fcTL_chunk, sizeof(new_fcTL_chunk)); + AV_WB16(new_fcTL_chunk + 20, delay.num); + AV_WB16(new_fcTL_chunk + 22, delay.den); + apng_write_chunk(io_context, MKBETAG('f', 'c', 'T', 'L'), + new_fcTL_chunk, sizeof(new_fcTL_chunk)); } apng->prev_delay = delay; } // Write frame data - avio_write(io_context, apng->prev_packet->data, apng->prev_packet->size); + avio_write(io_context, data, data_end - data); } ++apng->frame_number; -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".