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 1C3C041099 for ; Tue, 15 Mar 2022 20:07:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9B66468B0F9; Tue, 15 Mar 2022 22:06:41 +0200 (EET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065019.outbound.protection.outlook.com [40.92.65.19]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F92E68AFB7 for ; Tue, 15 Mar 2022 22:06:38 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NcFlDmhYbkzi5AShAp+AU1vMcER9Ma56hlqMSWwR6kFSLIE+1R8Qz4dKzC6zs+kq6GwzfoLyEQb7EX77t9vYeP4+14yiYIUjFFAPYV8Fo+RMOhXyKYNxlvt1rk8XRgMdUN9ytFPezZ0W5WBcJjpxEUnBlEBkHcXZZoxMjYbXZDoIH959L75jbV2AX5s455YpibEvbKhUQEkUAipxYAutRA74psUf5sC4irSPTdrsoZoo7iRSs3CJAyNvzscdy99c6bHpyUL1xKRft4moyk5CnrSDHAwyyKToKoCBGyjzvLR5xkZxljXa3Q6hfq7RMq6+1kIKKDOt0zsD4OvYOuuIug== 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=Tovf29PZH54bRGDSHGop79i/wLQOXEZvc629gxw79ks=; b=Q611fS68A1WHQSborotvI+8wMBbzVR+dhZE7av8xz9HhdFNqgp414h9N74kEYVrUEhqpqVUAGcRi4p+dVFMseIRC6xKA8pJq5UjcS0Mg8ldP90anWbBDtWlOBv4W0oNeEGxKyw7bJToge3iOe+SUpv8tERKk0rTTo0z1V2gbdJFGjwlj2YPJsqiGaPGnkKWlPSiemLsocjgKq5YNiF69dbgj9iNP/6g9LRrhCVzW+RjGmLpjhMdTQZmTCgu27u6vKCLONvufLmQlOm6ttna3zJplngiIiVdbzYet8irGDbY7XiepX7p8DJ+RdrmKRmRrdBdCYpM5KPw1BDsA/bYpsw== 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=Tovf29PZH54bRGDSHGop79i/wLQOXEZvc629gxw79ks=; b=O7IePCQmBdNRkKQzmxNRO1KuYlPer3rt21bHHDRIzfqiI8pbOOOT4E12Z8yipuiUJOTp0LxRlHNMwLNmXm9yaS5WkhKlvH8kvbM2Tybbppf/gtIeGbTpg0FQbCCNiUwo/0O0LGkpoIx/ejJX6buyiKaJi0Z6XuRnAihf2omNO0XCuKyv4LHjMSfghYzwydL8WjumE2aW5CmWy6yFuD5Fcl74pzqRw27NeE2juJ4xL48RdVLUlF68KSpVDifkSYR1yYXdEAzMUuv7M56c0Z4oa6hMnZFx4Mx9wMX5+HvsrBEYceHtLhDfY4rlveFs1l/Oci5FeCCotarNCzOq2aU7rw== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PR3PR01MB7035.eurprd01.prod.exchangelabs.com (2603:10a6:102:7b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.14; Tue, 15 Mar 2022 20:06:37 +0000 Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8]) by AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8%4]) with mapi id 15.20.5061.028; Tue, 15 Mar 2022 20:06:37 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:06:01 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [ke6S28SpEWVtCqpzQguvANjfoJEDe6ux] X-ClientProxiedBy: AM5PR0202CA0004.eurprd02.prod.outlook.com (2603:10a6:203:69::14) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <20220315200611.553534-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d83e1fe9-7c8a-4646-42ad-08da06bf4f80 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVYEcJTRMIz9km4xOIWgzTGWQ37twoh0LGbgZXQMmynEfCcc+8+3cHxLtTqy1VgmXNSnRUk/sC/Ld/CfpSI9oqPp5774Yf79L7apEXkvlqliecXBiJDSMc5Io4x7ebGYpWNFBy58FpXCqu/UNr7q4m7qKZA8Dv18KpU/JbzljMcgEq92UIqiOlzQ/pgjUKrdvShrXTmItZNxxk0B8QJezCH0TT01frp5g6YHPCnxpLqSOSqgsHQNKjIzKoXRBT7NT5DEfRyaNJgBQAcHOTBRlvq1q0bfNXsm86GJxeLLcgUw16i9xnNmnBc7HLRxwq1LzfSz4MtCfjYCQT6A/N2Uu5MunKgClKAVIEG7Ir+GbyBXXV+FmWGhxqQew2Z+Fb1tItcr0/QC3lWHNMmJ92oacWjBhZq2gLuXdYmNUownmpZ64Rstw+jn/I4lxzKN8yuFKyWPcIJHWZ6eLkEV61PM9HUnupElcsUi2BdwfdYVyLQ1calme3gHTwlWRuQsAjY10JOdOBRNIxCbK9r3n+gkev+DZbKy45ZNcxp3DK9G6zLxz7hs0KuVB0G3ylEdIzapZxsvCjo5hdVLVe583oyaSewpty9dJY75aFijq2ANMpEC/z0Qusp3oW/ip4L98WdUMMeeJjZc5d13HI7FIZBoPs79qetdurdgS/AcrY910FNwXRT9qMATStkw9wRRtvy3rU1cfv4JfGBV+58+bv1a9F37ynJZfkFf9APl3Y91Bzyz4= X-MS-TrafficTypeDiagnostic: PR3PR01MB7035:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: skeuz32kV6HzcH9eoX1JwrsSASDho3wzmiuQmjyUWreZte8uqK/JrxOZGzn4+vIIPrKMkkU1mZlj+GPywn0JnjoLHhVsss37dwvVnNwUgTkCVVuQ/kgRiQ6cNGlVvZqI+WdlmDiOiGTh1liB9E0sJ8FUPWETLKJAhH27j4EmACdQ6GGlRWHa3OJB8E9YRP4gWabhPO1GjzlxbEvgVZgeBAKJi6vkuaVI0eL8WkbmsmBoEyxrqZGKc0F5eK314ihhvnf3O3Vz3PbY6Rqvz43RAXKeHgLL2t1nUdAM+4dGoMmxBM+A1MzOBzQOqqJAov9ImRJDW+vJRCojZt+rRxkFvPEQmY33E/tJrbbyNILQ5uluDlPrSsn1o3DP0AH+5FZMVzRp1w1xBG0X1ucl/kisWv1K3KxkC9KiNFBFpFmU5mm+1LU7ey3Ugsx9AybMPr/uf6cMO2sRozGvGaR8wQmgUs2pGzasrTXMws0UpfgHQNfw+aKiznpdK8yXw6y6LASeXZ0oY8tndAVxFUmeH3zFn6483dsPEqilflw9E/Yll+skQw9kzGoAoQ/w6zq5ULvM/MH4c97TqfKq5/LP7swCng== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xyIA75W1Y1E8i1dZpUPPDZKSEzuPhoDLQIF52Rb586z3UxUJFz5Tma8sW62L?= =?us-ascii?Q?WC1jM1aTgUAH3CrCTSx6vcNKrn3ik+J0/IH8uDGCjoF6BOXDq0ChzgM9K/Bt?= =?us-ascii?Q?9ZEyA5GQQFVoKVLHbFNXel8i4jbHU/tEkwRJCk0ZlW5566OlNyL6QLzAal7d?= =?us-ascii?Q?jMZY+Upx67mtXDprrbwhJVIBnd+LBH5fJkDBVhFgZzZ13kE829SJK/GEs4n6?= =?us-ascii?Q?cg1Xz2u8k1O0AVQmJOpLBilJOhGGkAdf6fDH+t91Aw+jhTdrXypMFRpZMGLS?= =?us-ascii?Q?OI6UQ2dJVKwJJjRmAv3oh+InTHkTgd4qDnTRZbrNpF+piNAQwDIgIWpYrH8l?= =?us-ascii?Q?NG8Cf0VModRR7T/FF8gJ8hcbdaw7YDUdhQp+Hyuv4755UKZp1q8qAgITPcZK?= =?us-ascii?Q?VbPuGoFkM5McURQrULMLhRvbQaeQdly/dLB7phXOiCiNtKX/rwFQ77gDAlQ1?= =?us-ascii?Q?5mcfz/tro0CZiHZuD80kgP9EgCkByV69x+GLnQ7kFmkYSOILRHLliah0v+Pq?= =?us-ascii?Q?MZXUyPGNHxXnS/D4OMoaqShlbPEqXbZPOyEwfmRQXj5jlHiEayZMz5PlGKYh?= =?us-ascii?Q?GVEzpXKdoTt+ngKCbhCsaBpbJblFrUuBrcQfeYjmpzBaULY6y0nz8OYISVqD?= =?us-ascii?Q?l0eduysJd1qcBXW4xASps+n/WEweW2gdojAMyqz4fMXqj+2eBl8xtsn266Rd?= =?us-ascii?Q?bOyDvT4r7UV5TqDIAdrfXZolZAWi+Ok3+0gxrpbwMqAUcELbvXcjt2OVsBA+?= =?us-ascii?Q?qq2t3ItaQ1crByoruCDB9HD9Eymw8Bojt3IFEFAIxigrvoYg4J3Cff+hOezS?= =?us-ascii?Q?Bjsw1vtgY2P3zCa9FDUClNldzl7MFix06poq6PQxrh108bKdPQQRe6K6yNGJ?= =?us-ascii?Q?xsxSdpIms48GthvqeRuFGVN5u1NHg30yQwVI/UPvfoViJ8bdJd5Y2XkUjyKt?= =?us-ascii?Q?OS1En8WeFWKDAl14MS6l5kH6vemJZ8UxmaWxlJNepjeBgZn4S5zE59EjIFi7?= =?us-ascii?Q?MhhMavHKXjfOlkPE9NpifJy3puzR79BaHLXCuJzqwJZtZ6yawOZFP8tq5qEc?= =?us-ascii?Q?UnMfNfaCYfq/InIplVxRDGZgNwNFpOfOz/GspPjby1K/IwYy/poXl8CS7WTb?= =?us-ascii?Q?3pCuLf4xIlsyERwRJe2MM41pXGwt9pz8rUYuqFG9BVItORE4EjJP3go=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d83e1fe9-7c8a-4646-42ad-08da06bf4f80 X-MS-Exchange-CrossTenant-AuthSource: AS1PR01MB9564.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2022 20:06:37.3214 (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: PR3PR01MB7035 Subject: [FFmpeg-devel] [PATCH 11/21] avcodec/lcldec: Use ff_inflate_init/end(), cleanup generically 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: Returns better error messages in case of error and deduplicates the inflateInit() code and also allows to cleanup generically in case of errors as it is save to call ff_inflate_end() if ff_inflate_init() has not been called successfully. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/lcldec.c | 43 +++++++++++++++++-------------------------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/configure b/configure index c79908c1bd..c56b7ba85b 100755 --- a/configure +++ b/configure @@ -2990,7 +2990,7 @@ xma1_decoder_select="wmapro_decoder" xma2_decoder_select="wmapro_decoder" ylc_decoder_select="bswapdsp" zerocodec_decoder_select="inflate_wrapper" -zlib_decoder_deps="zlib" +zlib_decoder_select="inflate_wrapper" zlib_encoder_deps="zlib" zmbv_decoder_select="inflate_wrapper" zmbv_encoder_deps="zlib" diff --git a/libavcodec/lcldec.c b/libavcodec/lcldec.c index f3b7a8ac1b..8a66065800 100644 --- a/libavcodec/lcldec.c +++ b/libavcodec/lcldec.c @@ -49,6 +49,7 @@ #include "thread.h" #if CONFIG_ZLIB_DECODER +#include "zlib_wrapper.h" #include #endif @@ -64,7 +65,7 @@ typedef struct LclDecContext { // Decompression buffer unsigned char* decomp_buf; #if CONFIG_ZLIB_DECODER - z_stream zstream; + FFZStream zstream; #endif } LclDecContext; @@ -131,26 +132,27 @@ static unsigned int mszh_decomp(const unsigned char * srcptr, int srclen, unsign static int zlib_decomp(AVCodecContext *avctx, const uint8_t *src, int src_len, int offset, int expected) { LclDecContext *c = avctx->priv_data; - int zret = inflateReset(&c->zstream); + z_stream *const zstream = &c->zstream.zstream; + int zret = inflateReset(zstream); if (zret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret); return AVERROR_UNKNOWN; } - c->zstream.next_in = src; - c->zstream.avail_in = src_len; - c->zstream.next_out = c->decomp_buf + offset; - c->zstream.avail_out = c->decomp_size - offset; - zret = inflate(&c->zstream, Z_FINISH); + zstream->next_in = src; + zstream->avail_in = src_len; + zstream->next_out = c->decomp_buf + offset; + zstream->avail_out = c->decomp_size - offset; + zret = inflate(zstream, Z_FINISH); if (zret != Z_OK && zret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate error: %d\n", zret); return AVERROR_UNKNOWN; } - if (expected != (unsigned int)c->zstream.total_out) { + if (expected != (unsigned int)zstream->total_out) { av_log(avctx, AV_LOG_ERROR, "Decoded size differs (%d != %lu)\n", - expected, c->zstream.total_out); + expected, zstream->total_out); return AVERROR_UNKNOWN; } - return c->zstream.total_out; + return zstream->total_out; } #endif @@ -606,18 +608,8 @@ static av_cold int decode_init(AVCodecContext *avctx) /* If needed init zlib */ #if CONFIG_ZLIB_DECODER - if (avctx->codec_id == AV_CODEC_ID_ZLIB) { - int zret; - c->zstream.zalloc = Z_NULL; - c->zstream.zfree = Z_NULL; - c->zstream.opaque = Z_NULL; - zret = inflateInit(&c->zstream); - if (zret != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); - av_freep(&c->decomp_buf); - return AVERROR_UNKNOWN; - } - } + if (avctx->codec_id == AV_CODEC_ID_ZLIB) + return ff_inflate_init(&c->zstream, avctx); #endif return 0; @@ -629,8 +621,7 @@ static av_cold int decode_end(AVCodecContext *avctx) av_freep(&c->decomp_buf); #if CONFIG_ZLIB_DECODER - if (avctx->codec_id == AV_CODEC_ID_ZLIB) - inflateEnd(&c->zstream); + ff_inflate_end(&c->zstream); #endif return 0; @@ -647,7 +638,7 @@ const AVCodec ff_mszh_decoder = { .close = decode_end, .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, }; #endif @@ -662,6 +653,6 @@ const AVCodec ff_zlib_decoder = { .close = decode_end, .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, }; #endif -- 2.32.0 _______________________________________________ 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".