From patchwork Tue Mar 15 20:03:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34764 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3312283nkb; Tue, 15 Mar 2022 13:04:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzud/GQ3eHPzmDRTb+S/6Xq4ZvWYXV/1gpA8ymsyvYTQqWS1t2/Hm6E3h87cN86GjMwW4aq X-Received: by 2002:a17:907:97c5:b0:6da:c285:44f5 with SMTP id js5-20020a17090797c500b006dac28544f5mr24342136ejc.208.1647374676368; Tue, 15 Mar 2022 13:04:36 -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 z12-20020a056402274c00b004167e4606b1si27186edd.266.2022.03.15.13.04.35; Tue, 15 Mar 2022 13:04:36 -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=EJW5Ezu8; 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 EE74068AB48; Tue, 15 Mar 2022 22:04:30 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065026.outbound.protection.outlook.com [40.92.65.26]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 91181689F20 for ; Tue, 15 Mar 2022 22:04:23 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dmtBV6GPabrSFgs1p8jOILACVpgwi4LddN3rs7/lYxyMeINNN3IYKRoxsdPsu3RBH0TV1PFsNAppCfdJDa0W83azqEkJZdyVl+8Ej0BiE32IsmCbNhMAzYAvjHP5i4Lf1l/gkSe+lCOyKqc4wevv8xab14xnGIX4293PwFfft6ys8H41uUmquj71uV78yAKK867++c5kFNmQka7AzEAyl8g9tQsGG7Jjo4daPukyTbbKFkq3HTS6Sd5ftlcCmze60BNhjV9xh7C7Yi4DA+jQ2gGNX8F3UM98VsC0NAJn2eowD/wZz6FJUd+1rNN0xrH7AwRUJ9Sj/CjKjWXrn/ekmg== 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=phdFaY3M4UgEZJDHtXq6DJgkAphZRQiZjQY9fCch1Iw=; b=Ncg781F2Uip8cmUbTdJU2X1DX5ZhV6PptlEh5VJLx+B33TbbrHIEilFxLBCOdCRGYH/Q3kVH04UEVs/zhe9CS7xWxbUoRTnoLja/JWvSdUbH+TnKbXViBXFB0j21J8yTYHvIZlzdrUlQBnBbi/WbD9NmOofgG1+HuPuNGwCAE2SrIhwPhucLlvEc0uT724eZk879ua//N5IXh7JRQ1OcDxD05K7HKf+9IsCcQb01nZlemwS99X8SlQYGm51LXm8o+7FYSMSbegQwDPuY3+Kf5QhRSMnGa+NdpCBapRhxWv40mY/5hV5eFenhQU4kCAUFreTyIGJCsfCH5m1oV5gYIQ== 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=phdFaY3M4UgEZJDHtXq6DJgkAphZRQiZjQY9fCch1Iw=; b=EJW5Ezu85sLF924xl28HQRDBkOKCIhgCKcQgdhqblfVkbklk6CWx6orrjv4RHT0G3NP6T++zOELHHJCcwc1wP7XRvJTyI8tNzuHA03mCGVU7ea72fTw+fdwapZT2YlucuIiI+Pk+OFHxsHbq2ZHrN9xq0lrMPlSV6SBqTP3lJed40VdsKLfD9reQvuYcpTqsvaeyA17cjGyCka7vuJmWQYBp+GcifBLMl84VuM9//UleGzhsbaWQ0Q+g87WBDPZJ2jFM7jmirDkxXRnZYQOOLJmNN1396nls/Ufhs7G2JCKE6G5Ti32Lc9JGDyT6sRdE8zdR248QUD92JE+pudoXCA== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PA4PR01MB8947.eurprd01.prod.exchangelabs.com (2603:10a6:102:2a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Tue, 15 Mar 2022 20:04:21 +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:04:21 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:03:54 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 X-TMN: [0MwekPeSFS/gdLw5Sk8qbQnQUBT4FuUi] X-ClientProxiedBy: AS9PR0301CA0010.eurprd03.prod.outlook.com (2603:10a6:20b:468::6) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <20220315200414.553385-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 828cc0f8-44fe-4b60-7983-08da06befebc X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVf+PcTdbcvjaDtfbcUOhIAbqfJVWu43yPuA13GZWSVWJnOy/alZWyGrZNymGO5bRmUQZoiDUc/EKpUC596N5GcPp8mM9eZBk6Rd8B9LgEB6hfCcSAyqY4zljSi5b69+euh5yYAHRgiWDliyIVQvmxKgXKezedLdlq53tlkjfn9yLnI9YkTOBwXCIZIdeszwpGbQlO6snfVCBf9gLZxs5Tv49y2nEffYzQeylN46yV0sNmqnSz8wK70IvDOt0Shn2dE5wqbQm7gHNdnlL/YYdUDj5MWXVhdkdVWakKwUbHmEV4gnSxj5jPsHCekVZp8bd5MXA/k6c7pOcWvdzmUB+9C9IFMjxAugvb/HaqPWRWtSMeOrrVx2TWayY/JI7HFbhoc4IhxiS47AoKkHEIVZIsEfUnQ2X/XJOkbzzFTskvGOLbFvSMoEvseggpFkAaszjbQFcegoTxDe4bcK3kPH3bbA/9GQbttmkrfOeb39PBQfrLKSO5lOzdxW2Q4dtdf9sMJoabWXgII5NFGHFOfJyNAMG1XIlnBb2dkj2Z7e7rf5IsNPCAs5aH5m8AddjJg+c7K9vA7vQycmmT0YKoqTx9VWm+EVl8xDMw7YJqaRd/wydgdw1LtVOw6g/0mxXv2KNgVkCUrytbk9gaKjMjCTm1wUKdHL0zGN6S1FCNtN1L8jII6MGLu+5w38wbpqhH7rC6TN7fDsKVldPJ96LITyRb9O+voAkYX9jk= X-MS-TrafficTypeDiagnostic: PA4PR01MB8947:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IkeQd+gdCd1kY17fpZSEYKDVRFxo2fou9/3d9AVIIZP19SKW5X9MJWn9iwSHxAODfs2PKmpmq4l3i3sncGrUeNqY32xKJvgK5ygW6o9tcg1MQTejWc+H/Zt5pJj8tyTqRpAOrm/reUs5+5e6XNnI1OW2HaezuoP1BjizoYFAbsW/KXEjp5j9JqShsXwkujLdvFVCwe7SzhMNi3DfbI035aXTv9Xhku2POVvFJUyoLOXBemEQ244TV5j4MiW+B2gcIQmHp0b+HO7lXl8x8fg1vph/YbHmXioxf+dJkkYx6xCdwJwfbf3EnNUZEZHuNWC3ng24Sj4TNTDJc2q2XbjcomDuRofHtJu7CjglLQbtzabKXy1a9IodeRrOq2ypWTaY4ZR4jxkac4hMI3b6WaODaeO0gMx2aMqcQfcnFE418cagUM/KuL/g4XNNg8XX4i02cwIy90TA0w6k8sqV20BYcyLNkoTa7/DCjQBsACH+ogGGfTnPIEvyjqay6zZCMUQMJ/NSV4NVgmYIUsVkAW5HhqjbTOwVx/BH7MI+0/vbIEFJ4zn7Ikhv/g1CpnZssZ5DiisLs4xthiRbKClPihHKng== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZoNkVWrslL1m5IPscrgx02wE7/KcmLrmfGqMpXhyg2X/N1FrRfjjPPvjCCWE3ySzWsy82vTCan9ov8+KvUcrO9sBBrU9g3L4LNtm0UW+UFk9UJlsPKlIc2FWvG+xwpQZHUQ0OZDA7hmZ9n4AobZfKIOVpCrs9mhcrPOkpFsM6n7tqi3VqJM/mGzQ9XIsXl58NsAwmYQwLfrTnqDqXioOW+6qJP2j9AV56QMWY4WoBqOSHk3dFnqbpEPDnCI/XkRFpX3Lv0lDKdKjfZ6Q0jcdde0RAIJgabuyv89y1yiOmhdtGe5cTVYHudGFj0xZOgA2Q/KcAtVVB+vA8W1BVyc64gjbl+c0fAgEEbU+01WkQLvfotlGmLHi7BdbfWd7kX7kif9X0ynTXU3hc4efB18N5zoIn91F1LofyJuSe8iz0bHmDpOf676JHXyJhRdriAHjUhZMHs35pFHS0Klpq41Fco8NjKqSaIez7vd/EeNkiYrNo5BOCshjviQ+bL52C2HWaOwVeMNpAQM00vuMrYe1yCpcR6eGEmrea7UhbxbLlpk+gWn2f+/aUyTEhOLzFFCXaOO8DM4Mnliz238+xnl0z5TvYKdqQBmn46IsFrQEUK36SSZUxUAVKxQHmDamJR8YWnmPgEzLQiATIHrmIIy4aVbdSJNUQYuAuqoVyuL11zfCcfoWB1n8i27+YCYlJ8RVLyKT3FcA++Lz6umnNRbEYWUhlvCsNx+jQjfYKW8BeUFH8ICq066RV750lR8rCuOFFzICgiwz6ulRA/F4/drXGnhcUGa4IENBdfFa6PNwfb3rJNx/4JeuV+VHSKmyaaEpgcZ6YJaatbrG/rvwpUdHnrflTloghgJTrQ3inr3UG+Yir/FM0Bysu9gC0KqXCvFmFM+jDGHYSd1Qh/rzOk67gLSwzV/QruPVmsKyGRiZGVqQs4Ddhv0znisVO7aLlpPdpjY0ETMS7mkGBTl8qniGPcKYWsOAlOJxLhQHJB4q2Q1gm5kNO6fOnzkwxu9ela+I9kPSeHppmCr9tR3HzwXWQ40375Ve67mQD0buPsJLCVdLFu+Yi+/oKbZL5GcecsBb+u8APJ+ochaol8XP+essbbh4JhuzteRJmOtcANxPMlGfi3ofxWCpVt+QVpKYtcvVXuCZqztWywtGt6vq/rsrCo31HajVyXAbMu5aC+UwEQA= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 828cc0f8-44fe-4b60-7983-08da06befebc 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:04:21.8350 (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: PA4PR01MB8947 Subject: [FFmpeg-devel] [PATCH 01/21] avcodec/pngenc: Avoid potentially truncating integers 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: 8c+s9RLkq2m0 So use 64bits for max_packet_size instead of size_t which might be 32 bits; this is consistent with ff_alloc_packet(). Also remove a redundant size check (ff_alloc_packet() already checks for that). Signed-off-by: Andreas Rheinhardt --- libavcodec/pngenc.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c index 3ebcc1e571..64a9f5cc95 100644 --- a/libavcodec/pngenc.c +++ b/libavcodec/pngenc.c @@ -528,7 +528,7 @@ static int encode_png(AVCodecContext *avctx, AVPacket *pkt, PNGEncContext *s = avctx->priv_data; int ret; int enc_row_size; - size_t max_packet_size; + int64_t max_packet_size; enc_row_size = deflateBound(&s->zstream, (avctx->width * s->bits_per_pixel + 7) >> 3); max_packet_size = @@ -537,8 +537,6 @@ static int encode_png(AVCodecContext *avctx, AVPacket *pkt, enc_row_size + 12 * (((int64_t)enc_row_size + IOBUF_SIZE - 1) / IOBUF_SIZE) // IDAT * ceil(enc_row_size / IOBUF_SIZE) ); - if (max_packet_size > INT_MAX) - return AVERROR(ENOMEM); ret = ff_alloc_packet(avctx, pkt, max_packet_size); if (ret < 0) return ret; @@ -845,7 +843,7 @@ static int encode_apng(AVCodecContext *avctx, AVPacket *pkt, PNGEncContext *s = avctx->priv_data; int ret; int enc_row_size; - size_t max_packet_size; + int64_t max_packet_size; APNGFctlChunk fctl_chunk = {0}; if (pict && s->color_type == PNG_COLOR_TYPE_PALETTE) { From patchwork Tue Mar 15 20:05:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34766 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3313911nkb; Tue, 15 Mar 2022 13:06:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz/f0H99PwIF20MumY8EpBLW9RkWQbv1873RYBC9vOior30pID8V/Cotn2YIU4UCPToveX2 X-Received: by 2002:a05:6402:2915:b0:416:cad2:d619 with SMTP id ee21-20020a056402291500b00416cad2d619mr21864410edb.221.1647374803526; Tue, 15 Mar 2022 13:06:43 -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 n13-20020a05640205cd00b0041649c1b010si26306edx.229.2022.03.15.13.06.28; Tue, 15 Mar 2022 13:06:43 -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=lNUd9YRp; 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 5231E68AB7C; Tue, 15 Mar 2022 22:06:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2108.outbound.protection.outlook.com [40.92.90.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CC733680488 for ; Tue, 15 Mar 2022 22:06:19 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PqsDfUrmMQQDPXoTO51Z+o48VjoKDe6PzhMR4j7snw5AiVmrNiw7uoumLdTYY9xlgvxJGb1tyChNzX4ehQ+EjyhWvjjFcU2NKBO5wg6PyNu762ijwOkKx1BIFJKYfGWEYqmT01ehkBfsy5QkMkhki1I6868vjornC8sqiT3EmBVQXXMbQIfHaRwpNkwTOPZ5V0GYTkhyjLoojJgh1qExoi5ujIuWEAxqps1CDNqgl15Ag9vxPSsNnG+vneKA/9Z2bSsSy7KAQoyqLC5w0Za3GxvjabxJ6oGvrOI8TwBgP/ghdbYLy7UtC7qJxzDwvtxAy5IJhVh/KttYUEfUM1Zigw== 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=LmrpO6K4npA39Z88LSC05W7CNVKyY9HM643Ws2GnVug=; b=MsyHylGH93ljwv9c+uFNgeKkAjc/sHam9H+lDymgefbVwtGdTADgmI2KOYeL5P+ZPErHz/Bc4bOlL9dxTg4ifbej+Qje6JftZZdU75BOWQxnBU1JkzA5Qlogeet2ArrV9fDoA3D3Q/IR9Hcg1ZRKpr4B6WT+ee7XNAoxMiTPdfZ6/C0sD6iszsSI341JZazUTdFAGaI+3ba3tJb3ObXdaEBewnziZ5JW0fF8AlqjmqT8hU4kpYrsW3/GzJVgBB6jUBeIMCfznPb90PUghfnp58e1S6dEa9ZvBLwidAt4Q8T/u5MOyBmVDVsLzkzonOnjNysgNQM9IJ6nCoWEW6i2mA== 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=LmrpO6K4npA39Z88LSC05W7CNVKyY9HM643Ws2GnVug=; b=lNUd9YRpAPESeWSOIUA5cVc5370x+tdXfGRXj0ABfMe9C3IOw8D5ymTDrR4LYqgGxn8NZAX6Z6yMyqAitGmLH5pSuhECrhm337XBRQlhwGutjo2CzSO8TC0Kto4v41SjVmczM/gB6vfNufXdQ1bA1LLWa63SA1tmAxDtCgPbE4oRom40r/gIdrYF5mfGosx89CqMsS3awH0x/O+ovvZn8TY/44yWq2SQbu3wX7sVSa/CDQcd2JCS0YW+lH9MSCCQXoKUxhWh3GPEjQenvCO8bvpAHiSbiVHR8447smRoMWgGtNjuxVCpgZF440HtlN+jXYV8K/GLYesw4c8U7vjUPw== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PA4PR01MB8947.eurprd01.prod.exchangelabs.com (2603:10a6:102:2a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Tue, 15 Mar 2022 20:06:18 +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:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:52 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [Scn2L8bfENXds7XlJLDHYf6ZA7Nfked3] 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-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 11f378a1-beb9-4e59-2426-08da06bf4489 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEsJOQSw7m4Q3ZoiL16bWeWcXXNiiCTb5eJas7XcESzWbFCjCUkNMlTRygV8b7ctR3Ri8gPwL/bY6pvJQvk05eFHMobIPlbgpBXvlOBPFka+71WtKuM00pKKd8XiSrXGbI1ZjQWXCcDerWgcTHtbKLB3AAn99+XRKuImIbPUrGSxt+Tbhw0bQtideuWzDVWmsdbQd4QtJ9MOHfAaEGnPSifrdP0kdk9v8GtkGWti9wSZO5cQ4catsZq8PZxowxrbr7wxstIquU6FpM9K16dARSD8sNX9yJKg+q40YsIf9gpgJE+6FwyLGpRtjAhuHe6o4aTCaZguN6LCN+D7jhLjlRgxhqLfz/L1oB7n/GBzJV4tf1Y322TcevtBRTLBBa3EIBQKZVDFh7su92kK/c6ia1AGu0FVU+YPBFcB2LkvLYgfFP9mF/nSdTL4IOD7sa/xbe5uBUV6nTGJDTM/BSF2DXOT8jI1vPYIqzvrCJXYMqIHctxNrar809XVtlFAJH34EJ1nUiGh2xfx3i/mMPI0B4wK2o38ktw+N5bIoq+kSUNYxZX+Zg66uYxIyo/W5kuWNOONBb0i3MlwEUjDv82ZIqp0eyWNvOi8FQ6/DSFu8jIhteCbWQnt4xKC58c8G+63sgrWBQTe34jqoeyIG5bj0ZR2XFDe/EqQMM1kTeb/O2q8v6aAH/UzM1xyDQq+f5j1qX49Tn9iCb/FRZiUwJdzuv77HS7IpPb2rRgfU4VF7Lah6Wkzsx8QJoV+s2MGYnVyUYzIqvmbqZDQo2jxOPr2ti+m X-MS-TrafficTypeDiagnostic: PA4PR01MB8947:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eJiDd3MMIDRgLdhH5IQieobzTIdgY8uGaFQh0tlMS6jMOFhrdyqzq4aNwd6RE2bcm7qYSH89kG7/6sm4YV7oL8Z/UO2MGuhjC8e9IcsVjlYe6Kb9Vh0/EXasOEu7uQvgh1APsGeK4HP8b4vLY+P5q+ladk1nBUjBsEggMrInViMkRqJgwYcHlwHBlWWN5eFALyWH/WhtaV3LUcIMKxHnl9eaeZ64DV94dyjte0UvCT6cQsRIuWfH7/u7b68FwckaAjmz70B3C4bKunMI5naL9HzG+9gqNio89xO5qJo/enjH2xO+Y0ez/iH5oVP6X/A0QaGJrjahCPxE8ttXxNe6yWTERlxH1AizBfT6+amivXHP4hNKbQn21NjaJZ5UeBbmEuDkfTbZ93x/f4/kXmqgOmIKh1e0SIH6lWqR5qX9uDgoIHmTp5liQB+dkKqTqSdpejW/X3e/cqqYgCbGhv/GdHCaCeUV33KlX5JrC67AhwaAI0LSsfdBNgpa4RjpBmvOes492QiPD0LOSfWosIc5VMqZllD4Dk647z7ofPDrYz6DMhD59aRiMrIL2F61SrBCrgEfmdVKRwnz+VDHg7rA0w== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BA32275JFCImvTSRvqGxx7I4TSZTJVmfkFpFf6ak1uaWf1jFxRV5AQjCvQu8MGZ/LANwM5mT9iowiZ6w8L4t2nL+VJFoEb8LPk78xu9mvoySFQjDTyRbIrjn6F4HUFj5mnASSUULGNx8ZhZrfn4ik1dQXqZA5ae7Prw0aFrOlYYi79KIpirDZ3vCXwuVZ4GTrA7SXzAEv934muTRGrBcuSM9LEtHmp32tFA8S5CkTdxNAM6FZI6QB28W/t00VW8ccYcUS4hxX0Qv6N+QcS1xCY1OFmQl0UMIjFpUH9ui2qfthcujHcMdwNjiwIDcW4dx6Z6K3GVwQ6F3goN7NKWGDB3qw9RtB/q6OMhMlcXbvt/VWtlwd0kxdF7uKV/+mvFX4KvcB6rHN91/44mZE8Zk5Az+n2RN3qYYXmg86wYEHn8KvRHcDPzIDjjx9vVffLxQb6KagymS4EZ9MiPKCmmwCbyoZH3RjdWna7Wa+tgh9N5bLHdLJN+3hkX6dgWuPGKobhTHR77V5DLbxtRgwml3/KYP4YF3jzMeqBHP9ZiU1RdIDJnlYEZYlPFbpSDUsDW0sBB+ALVZW2s+VFeAVwhp6MUU5Dhv0fe2uZjVGrgs2KVcNAunba2au6Es1g+nsTgr6BzP7rTSbV3615umfnBoCCs87TzPcWHgBCAh7iYe/ZIXNOoVmLBEY8LOvAxlAHIF6RTtoZZ8+4s7ME7Ku5bRvi1ErbbLFYN0LudZOaUlamhfxbKVeMaGcCeWwvjBzi0sY/RQcW0YryhykI45prj4rKZF0hndO+Yc3eijCgPnbqhtmpwTieKDsahsBSHYBK9rsFAxGEONolXuS0j3rEKQInyCRsDUlWC2SrdGtD9/EbnYS88JFoE1/kmSiuxi8KmG4L0N3WcRdXEqrZWTjb8FpQtEbiuUdkXO8G5rG7ZOYjhXTldCgI33btL4WA7WOxRIW/zDc50kzvc1JrqWknngIS1uXGRLXKqA8QIofi48B8gdSoBE9xyblMDRV9eXp7IfYwxBuwODbvIVRSRhz6FhYA5HUt+htvh9zWnyHPMjpNgsG8sUPPMn2cQCUMaeDt12CtGWTnU6cqWG5mx7MlpG8y5bwuqdZxqSB77xSnheOHyi33H6+UbqA7olh+qlTCck1k+1DTO/M3R2r85Y1KPnHcu3LJHhM+nS4E6imSAc+JXsUZ90E5nlGJRTvI43BENO X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11f378a1-beb9-4e59-2426-08da06bf4489 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:18.7048 (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: PA4PR01MB8947 Subject: [FFmpeg-devel] [PATCH 02/21] avcodec/zlib_wrapper: Add wrappers for zlib inflateInit, inflateEnd 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: /wXP5Xkt5nBP It is not documented to be safe to call inflateEnd() on a z_stream that has never been successfully been initialized by inflateInit(), but just zeroed. It just happens to work and several codecs rely on this (they have FF_CODEC_CAP_INIT_CLEANUP set and even call inflateEnd() when inflateInit() failed or has never been called). To avoid this, other codecs recorded whether their zstream has been initialized successfully or not. This commit adds wrappers for inflateInit() and inflateEnd() that do what these other codecs do; furthermore, they also take care of properly setting up the zstream before inflateInit() and emit an error message in case of error. Signed-off-by: Andreas Rheinhardt --- configure | 2 ++ libavcodec/Makefile | 1 + libavcodec/zlib_wrapper.c | 57 +++++++++++++++++++++++++++++++++++++++ libavcodec/zlib_wrapper.h | 51 +++++++++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 libavcodec/zlib_wrapper.c create mode 100644 libavcodec/zlib_wrapper.h diff --git a/configure b/configure index 82642deabe..6254dc9dc1 100755 --- a/configure +++ b/configure @@ -2461,6 +2461,7 @@ CONFIG_EXTRA=" idctdsp iirfilter mdct15 + inflate_wrapper intrax8 iso_media ividsp @@ -2722,6 +2723,7 @@ faanidct_select="idctdsp" h264dsp_select="startcode" hevcparse_select="atsc_a53 golomb" frame_thread_encoder_deps="encoders threads" +inflate_wrapper_deps="zlib" intrax8_select="blockdsp idctdsp" iso_media_select="mpeg4audio" mdct_select="fft" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index f36b2e992d..62c8e34963 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -104,6 +104,7 @@ OBJS-$(CONFIG_HUFFYUVENCDSP) += huffyuvencdsp.o OBJS-$(CONFIG_IDCTDSP) += idctdsp.o simple_idct.o jrevdct.o OBJS-$(CONFIG_IIRFILTER) += iirfilter.o OBJS-$(CONFIG_MDCT15) += mdct15.o +OBJS-$(CONFIG_INFLATE_WRAPPER) += zlib_wrapper.o OBJS-$(CONFIG_INTRAX8) += intrax8.o intrax8dsp.o msmpeg4data.o OBJS-$(CONFIG_IVIDSP) += ivi_dsp.o OBJS-$(CONFIG_JNI) += ffjni.o jni.o diff --git a/libavcodec/zlib_wrapper.c b/libavcodec/zlib_wrapper.c new file mode 100644 index 0000000000..b15d5be2b8 --- /dev/null +++ b/libavcodec/zlib_wrapper.c @@ -0,0 +1,57 @@ +/* + * Wrappers for zlib + * Copyright (C) 2022 Andreas Rheinhardt + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#include "libavutil/error.h" +#include "libavutil/log.h" +#include "zlib_wrapper.h" + +int ff_inflate_init(FFZStream *z, void *logctx) +{ + z_stream *const zstream = &z->zstream; + int zret; + + z->inited = 0; + zstream->next_in = Z_NULL; + zstream->avail_in = 0; + zstream->zalloc = Z_NULL; + zstream->zfree = Z_NULL; + zstream->opaque = Z_NULL; + + zret = inflateInit(zstream); + if (zret == Z_OK) { + z->inited = 1; + } else { + av_log(logctx, AV_LOG_ERROR, "inflateInit error %d, message: %s\n", + zret, zstream->msg ? zstream->msg : ""); + return AVERROR_EXTERNAL; + } + return 0; +} + +void ff_inflate_end(FFZStream *z) +{ + if (z->inited) { + z->inited = 0; + inflateEnd(&z->zstream); + } +} diff --git a/libavcodec/zlib_wrapper.h b/libavcodec/zlib_wrapper.h new file mode 100644 index 0000000000..0e91713b25 --- /dev/null +++ b/libavcodec/zlib_wrapper.h @@ -0,0 +1,51 @@ +/* + * Wrappers for zlib + * Copyright (C) 2022 Andreas Rheinhardt + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_ZLIB_WRAPPER_H +#define AVCODEC_ZLIB_WRAPPER_H + +#include + +typedef struct FFZStream { + z_stream zstream; + int inited; +} FFZStream; + +/** + * Wrapper around inflateInit(). It initializes the fields that zlib + * requires to be initialized before inflateInit(). + * In case of error it also returns an error message to the provided logctx; + * in any case, it sets zstream->inited to indicate whether inflateInit() + * succeeded. + * @return Returns 0 on success or a negative error code on failure + */ +int ff_inflate_init(FFZStream *zstream, void *logctx); + +/** + * Wrapper around inflateEnd(). It calls inflateEnd() iff + * zstream->inited is set and resets zstream->inited. + * It is therefore safe to be called even if + * ff_inflate_init() has never been called on it (or errored out) + * provided that the FFZStream (or just FFZStream.inited) has been zeroed. + */ +void ff_inflate_end(FFZStream *zstream); + +#endif /* AVCODEC_ZLIB_WRAPPER_H */ From patchwork Tue Mar 15 20:05:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34765 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3313875nkb; Tue, 15 Mar 2022 13:06:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzV8Ycm9GdYocjWJyiO6staCcTe7vU0yhhiFqQ/9C/qLwMXKMlG9eihZfvIuAuWogQw4Rvo X-Received: by 2002:a50:fc03:0:b0:416:618b:248a with SMTP id i3-20020a50fc03000000b00416618b248amr26682487edr.188.1647374799418; Tue, 15 Mar 2022 13:06:39 -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 mp7-20020a1709071b0700b006da6351fa25si12801109ejc.413.2022.03.15.13.06.38; Tue, 15 Mar 2022 13:06:39 -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=C3xwydns; 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 545B668AF4F; Tue, 15 Mar 2022 22:06:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2108.outbound.protection.outlook.com [40.92.90.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E25AC680488 for ; Tue, 15 Mar 2022 22:06:24 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=adzxddDdLQkgDKuOKB+kmZdZsNbHRu3QfMBABtPBL3i8eJl5//5tXPwvd8h0VRfhrFBbraQ/9okXJO+WNJOpQth/UUH+dh9jT5AjppLMEzNWz6GcEjrQdnhq4neymzi2FVPKKvBA+NIwfsmO3JhWhSsFmbsWiD9tcKoIQABpo6CJkMetbEPuISlIbbmeKdXzYM2BYgr84AldL5dE+QxThaJ59sKZJdRiNcP+5PRvX6wMOUoIQOku50xPHONK0QirZWidyLyilo3q+oiXOoMLqAkm0CnCOLWINORJnTOEmyYy2EonRGC0tlE5+T+xOyuGbiKDkT1X8zx6+Et/lkrt7A== 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=p8fNxta1NG0HGx2+UjW0/LVkWO6e4N0VhfW1G3VEnCA=; b=EjjKnPZLcmeDnCfeO3+evNMQIjsj5zVRlDtz6lb3GwXIhR5K/Brl5hLJBhEYP5nFae+mcE/WoQh8F014n4VYoyMTxaaqAF/J3nmHXY+u0vMeF6YQnMOMIIJofkTAHut9gwETiariCQNR5paLH2rP9xoF1SJwTFaCzYxcOj1i+Z9USmm3nkFFd2Sb5vDt2/6j4pD7kRvsMMvWhxgfikm24tLwewol5zVe6LtciEWsaqC5YAUNSLjoD67j7Znj0B9DwNqm6VPhLnbEgyWSlr7hCz0B/UL193deMD5asm4kYKnC5joTitZ5ZzL30sXrhABZRKV4jjtGD/Lfj/vpnRZvKA== 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=p8fNxta1NG0HGx2+UjW0/LVkWO6e4N0VhfW1G3VEnCA=; b=C3xwydnsH+mpTUABPVwwJzCGI5517hp+adWmGgZq5dknVeeOks268VlBvec4wetv8Lvmk4ER5ZQn5ISIKAatzaSndtzP2npDcfvPbK+v2Vh3At1fdHKpARmXg9EYT6pl2f1Zfv5V+z2qnKYJtVDPObe3f84hOFBRs7RxY9Mh77NkYf8wrm/bGe0c29Ovrfey4pDBps5ta3WABaYBjvPgHCZmTUKOxlPVAQtGMPv93oVstEiB/k8Kyjw1Vm+AvJ9oGOvpGvklaVD8H3xAVdgnqC7Z/gE+C4TeLiwf7k6kCZIf65wxoE4yRBvgtjhDlCrStwaytmOwfPfCRLiAMQseOw== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PA4PR01MB8947.eurprd01.prod.exchangelabs.com (2603:10a6:102:2a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Tue, 15 Mar 2022 20:06:23 +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:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:53 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [Ynl7i+C7w0No0JCbbvIo2N9OkvWwBhmF] 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-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5946a5b3-2f0e-43bb-0b2f-08da06bf4701 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVDy4rDU/3HqsNTIAxbwtq2AAc6GgdaCnwdnRbaRK7MnBLrMYUtg5BnFRo9fNs3jcy6SIvfv5CTs7mCGvDAkUsGGBNKSalfN57mzF9CE2hsQCYJDoLeUM9D25JRcq0ksGu1B+HsvgzFwqSaQqIenW6hfNvowjYROre40dzFLTIaX0TtibcaPfynJi0alZdFCyT4JuPtnLQSpSIKrbk+HCIJ/2nG0DG/6xjSwPb4XCvYhimmppIVYrrKs9SnHqQf1mOZQ9hAZsF+dST+RcwA4q7y4alBjzE5j7FfExa0xl36ypOYQ1v+6g6umW+gvNY7BpYVtznW6vCpC+T/QXQxCD6BRahK0AtvX+ZkIrzrXIXd5ZHyaFVTbiTvd+N+wY98XqqjVhgcEr82vyXnqOLHmDFHtuBZfVqo+4JIN/okIVXIv5yFRHyEj1CCVqKrV84U+CsZKBYBljxXiMDHcX6aOJx9LmXideD/W1nJ91RqMONaDCV8mnumosFcjVrGB48qs3/XYP0JkopEMa5oaHm6p9FN5Pv0xy/+5yQOpYTH92WfNy3PZrViZNVIKQ6xRQEgaLxIHWJEh8F1C4Yu2GttDw+PQyzHi1FJwu4aHt2zdX19tae+oNhrjlkGXEd8ATedFlQ5cyDkAZ6FfGlsXeQzChirANFcEXJ/BS0sWNL0SYwUPxrJ6JbaYgGSR9dDgj4bKUC/y2yK1uP/S82QULr9LrQxnHBOBsKsHWrJPeoemtYADg= X-MS-TrafficTypeDiagnostic: PA4PR01MB8947:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CMBbBQKhleSPA55NLZR4MUgSuTr72iG/n3lCNXtZl2M1VZm32zVbItMVSfm4IpuOvHTnlUC42pZOfL7t5lXYcjGM8h9LlKega0w/1ZZSZ2+/5WfYYgFSowEi9jEotYzZVLhapjhdrqEMTgbTTiDaQfxObMNQr6S+Dah0Yj2IWAvLEeZkalLoQppzRgugFbx3EERd/Eq9ik5ubL9M0Pj0jKp2QUH+ivyhrgI45VKXLZezQa53NNZ4Nlx2M63iOlsis2vM5GdD5f4evHGCLAnx+TpADFkrgQpfMq70hTKgiRcOeMzxIQQWUf6iikWY4OCLRM8FKCsCML9+cUGovlDZb+B/s1AwOd8wQK5i6eIbqQF0hVZEjqn4Jttlmvf29IPXt7XJeCfa/xqjj9Fd4I/8wI3R4kprbZVX97CgUONqviItyYxUHVAKKoWJ3uitumNFXD9dyWaRpgH+TIDrEOGoZhdhvGgg2DhotdSQc4r7hK5Yes4j5yEOmXe+fGk+zJlWBrs9In3rGKOiUiXwXLE+OfPnE/KpoNIu2ITM6iN2KvDE/IDN2j6tAtfiWEIL96QZOsOInR2yXqZk7hKWck3Jog== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MnMy+Ug5ECXNiUOpaN8E+YyNCL3vci/8iYhBqXcyTnbpXeP7JrJH3h9y23Gqri5ubz6DJH/BSulwNxjy7ZyBS9iLlsDqx7sRUPrIIkJAwgdH9wVLu9QembRfmSzbcf6EgkjWb3pqkaYo6xnpYLLI1Y7It35xur7c8igRpT39nZvAHgLL/P8w3v7QS6d+8Fj6m17zfNN7EpddMk6Tx95elABKs2nHPVL2bU38iyvRTAL95G7Qy5fw/qYn++RrcOcaC3QJyq2ThdQAMqyz3GiENahD/T6fwRhGzJJ/+p1/vsg0ibiE3xVGbxuDm3wXF8My/Sy+9WyGgHXG5pMMmvHp3YkjaIMwN7AKf8QUaV7I+kOjig/2XPuLsK6d1mTS1pGZM9bpSwOfkA7N8Nk/LJ1Ipa40D6RlXANwplnloh2E+1L26XwItj9p+0Nnw8twwgp5mOF7g99zYaAEQ0TfhIKJ9/9MTRrjSzy7bwA2kgO3LP8wuLH5L8EImg+eflkCTtHgSo8cK+nKqzJIAYkSq1bPGdmChIgHOsoEp9vslcfZwB/ZwyRAXKNQQsOFl5PU5vUExZr3p4HUBXBM0Vr3P8MFaMbvn+IxGYBQyqyez/c5RrY5DyrMr3zEdp6+JAtKHeObanSCj/eu4+9nqBrXd7ELImEEx7kU9py+9HEHx1dZx4TvjuOefgGKYOGRPVpIr0pcu2L1qFfrhRzzULNWZZDCiLpBMku+uvdZxqlTcO0hNX5NeZ9LSSWMBiXcx/9kBw0PaRMjeG7k2mtUZedhC+nztVLcFdNftgWQA3DsL+URLaAHG09V+kD8GS/VdxriEXKMDUG42rtthkHrHUuwRwMXm0UumtN6U7+PMiwGHjZUlXOSMIYsLesPSOGFl0MNf5SZRuA2Svav6wASXwlqEoaa006japn/DGoHFStjBYH96SHe98FWu3dJ+9bQ7seYpnWl3jU0RwVLpitHp9V04HNoYz80pnJzG9PXx91MCJpLG2hGjzTAhPfUyu5+Qr+kBmD414gGnT+WPqSxIdCI+j5LEdXe7TwjujlU2r7VmZ8lUywSpGa7jrU1BEsCyjVnoNikWAr/CLuQFunrvF001YLdMHruy0wpx9CCG9Xhhuni9dqwc3dYiD3W5zuRyX2lXon6I+hSqIoQyxszTRYVIFQsIWAo4ALFaN3ZdBpG4L/O8ly6Mg26Zl0FgKAltlZrQDwa X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5946a5b3-2f0e-43bb-0b2f-08da06bf4701 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:22.8317 (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: PA4PR01MB8947 Subject: [FFmpeg-devel] [PATCH 03/21] avcodec/zmbv: Use ff_inflate_init/end() 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: d8B3/m4zydma Returns better error messages in case of error and deduplicates the inflateInit() code. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/zmbv.c | 38 ++++++++++++++------------------------ 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/configure b/configure index 6254dc9dc1..c86e70e985 100755 --- a/configure +++ b/configure @@ -2993,7 +2993,7 @@ ylc_decoder_select="bswapdsp" zerocodec_decoder_deps="zlib" zlib_decoder_deps="zlib" zlib_encoder_deps="zlib" -zmbv_decoder_deps="zlib" +zmbv_decoder_select="inflate_wrapper" zmbv_encoder_deps="zlib" # hardware accelerators diff --git a/libavcodec/zmbv.c b/libavcodec/zmbv.c index 0a5bb40ad5..0bc34c81dd 100644 --- a/libavcodec/zmbv.c +++ b/libavcodec/zmbv.c @@ -32,6 +32,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" #include "internal.h" +#include "zlib_wrapper.h" #include @@ -56,7 +57,6 @@ enum ZmbvFormat { typedef struct ZmbvContext { AVCodecContext *avctx; - int zlib_init_ok; int bpp; int alloc_bpp; unsigned int decomp_size; @@ -71,7 +71,7 @@ typedef struct ZmbvContext { int bw, bh, bx, by; int decomp_len; int got_keyframe; - z_stream zstream; + FFZStream zstream; int (*decode_xor)(struct ZmbvContext *c); } ZmbvContext; @@ -493,7 +493,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac return AVERROR_PATCHWELCOME; } - zret = inflateReset(&c->zstream); + zret = inflateReset(&c->zstream.zstream); if (zret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret); return AVERROR_UNKNOWN; @@ -536,17 +536,19 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac memcpy(c->decomp_buf, buf, len); c->decomp_len = len; } else { // ZLIB-compressed data - c->zstream.total_in = c->zstream.total_out = 0; - c->zstream.next_in = buf; - c->zstream.avail_in = len; - c->zstream.next_out = c->decomp_buf; - c->zstream.avail_out = c->decomp_size; - zret = inflate(&c->zstream, Z_SYNC_FLUSH); + z_stream *const zstream = &c->zstream.zstream; + + zstream->total_in = zstream->total_out = 0; + zstream->next_in = buf; + zstream->avail_in = len; + zstream->next_out = c->decomp_buf; + zstream->avail_out = c->decomp_size; + zret = inflate(zstream, Z_SYNC_FLUSH); if (zret != Z_OK && zret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "inflate error %d\n", zret); return AVERROR_INVALIDDATA; } - c->decomp_len = c->zstream.total_out; + c->decomp_len = zstream->total_out; } if (expected_size > c->decomp_len || (c->flags & ZMBV_KEYFRAME) && expected_size < c->decomp_len) { @@ -603,7 +605,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac static av_cold int decode_init(AVCodecContext *avctx) { ZmbvContext * const c = avctx->priv_data; - int zret; // Zlib return code c->avctx = avctx; @@ -627,17 +628,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return AVERROR(ENOMEM); } - 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); - return AVERROR_UNKNOWN; - } - c->zlib_init_ok = 1; - - return 0; + return ff_inflate_init(&c->zstream, avctx); } static av_cold int decode_end(AVCodecContext *avctx) @@ -648,8 +639,7 @@ static av_cold int decode_end(AVCodecContext *avctx) av_freep(&c->cur); av_freep(&c->prev); - if (c->zlib_init_ok) - inflateEnd(&c->zstream); + ff_inflate_end(&c->zstream); return 0; } From patchwork Tue Mar 15 20:05:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34767 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3313987nkb; Tue, 15 Mar 2022 13:06:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwH8+2mDKqsPEIiZqCqqRP9dvR/qwNABXDEVp1Bw9DPF6lekHq6lf4fzKjIX/LY6InJ0+OO X-Received: by 2002:a17:907:961f:b0:6db:c8f3:dc72 with SMTP id gb31-20020a170907961f00b006dbc8f3dc72mr12228054ejc.92.1647374810332; Tue, 15 Mar 2022 13:06:50 -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 kw8-20020a170907770800b006dbd0276ab6si4599801ejc.816.2022.03.15.13.06.50; Tue, 15 Mar 2022 13:06:50 -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=kJC4h9g6; 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 568C568AFAB; Tue, 15 Mar 2022 22:06:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2108.outbound.protection.outlook.com [40.92.90.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 053C468AF2A for ; Tue, 15 Mar 2022 22:06:30 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jDkhc2acCGRPMxKnma0n//FfU6aiUVObiRpMBdqZNzfNtTweCIgiFFs3xqwz3lNb3SLxeYH5b/0K79vXAyeo4nTWXkZlw1Nq14YjXRtbjbJq0W5f0h3GAjW90DZhKzquUOs6sZprlNQmxG/O76/zIUsM8I8wMTuqfR5N7XR/LFTM8TRcDDy+0fn2hwKtqiAOUqRV8hbgT84uQZs2p3nwjjagp4mvDD6VO9LnIqLv0isn/w3bB6TVVRjxiyrE02CfypWATChpYsyQ7M0NXOrzaL2huses6+RS4x0IJVY4d1eq8ZnsvlYEdeILB4z0EeW/944ESh25DJ16bB+yGRY1Iw== 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=F9O1Q2W0mSG2un+Fp+ea7Stz5buR+nftxAcgFD/YiNc=; b=m7z1dl/w9YP/ikt9Hn/lzn89yp1HXgHo4tMFAXi4xfHD5PRzroKscTBsRPbSVXrFZkdHsTzs3Oa7KHsCxjJLAoavggRmbbjngljVA+SgYEdbcTGpDDIbRXWLmaAKp4QGMsRxethEbW/uX9ufJqFE/o4OuiXTSV02ComFJ/iha2v//tfmaWWcFUzs39Wbp9G2p3l+/+Ltdxubs+dQxqB1fsVx/uqJVov7Gxg6ht6ZiWJ489Pxr2u3ppx9qCMK8ju1LTOnLFrzm+hldBBrj0HyveHmy7IaeSDTThWTjTYxmYvTjz4M5VlCoThMCsPyxD9n1lqDfgxIXX6cjHzu85b4Pw== 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=F9O1Q2W0mSG2un+Fp+ea7Stz5buR+nftxAcgFD/YiNc=; b=kJC4h9g6feT7+EWFX/DV2D9W/7Wv3wLGcOVlkryLkJTPNqqe783UsKsSKhkZCJWqgmnbcs4ThKPJIE9NnyWVMKlYTJjZtFSi2K0jOoq8q2PtkuSCuKmdFdiXRyHeCS7Mw/FDJVRz9F38igP3JIqwbiDhzaw4R3tt0CU4Ng61NvSOJzlkRtM+derF1Tn+nvrD6gjwm/dUR/a31uoPM5R0aLTJqEWO/T0akNutJ1P36ZsAjZojqU13V+YPFs+u3AaL4G1pjv3dnz1cqRmnhSxdPC40PdxnK/ve/pLEBLYndLU3OzTJkxG0W+iifHjj6+PVaGpEjx9I/MS7Xk4CmBR0Ew== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PA4PR01MB8947.eurprd01.prod.exchangelabs.com (2603:10a6:102:2a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Tue, 15 Mar 2022 20:06:24 +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:24 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:54 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [OUnLKIMJwKZ7e5LbiZ8QwNNORcTEjOP8] 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-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e024d2ff-577d-46ce-6253-08da06bf47f4 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVCDySZfnDtAblVeddBXOQfMjXyeJq/O5BO3ncXhk4wHFlOKcO9VsS1xOECm2R2fv7AYTqdhHbdKKHMLZPKxrz6nN7j4sITHHiG27A+eQBA2eRuc/6+XY/vj+RqYnMGZfZzg3tHOUF/qh2COLEnkVxWhEr9V94tbL4QQxXF2zMl8isbDBUgJaXUfYqN8eQyv+BmBCKWFx1Xws2ymj7kQG83ZKmvYyIiE2qgY5vchBSGxFSChFRggljWqryvz5+noN923v66vl0c+VsF54Pilg2v5P+fvCJJHZSZyT4tcniYXIqkFUXREyd152wnICFmWjs4xP6S2RV84U7jIIAurDXPmjzEtbpfQpMgULJsirDfBivWq2NfFgwc34EnuPPYzzoSPQow11e7Jk2MAAV+u5K8tJDXIcnwg6o8aqkpgqtfOmkKEl4qEUsIwXS/yF5M7puG+PItNVQOOfDoDFEkAySmoJ194t0kWXJjKEpaWno2oIdQ5XW8PrID1HdMP7yT7Vj4kvDFOn7fGzv3mgTZbbD5tPGAmSils6z1gxBR5OG/eyKhPZPySPe619bS25ory6s+FGFXXbEkCl+ECChZ+uWC9jxGkw7qu86kh6QzTsAMrRwLN4K74EZk+mUDrdWKgrsiSyQFv/ARSNUtj+goCAGiyIW8wjpAEmDKQLujGXKsJfttdk/kZpurKc21wdPx3SntQQCA+77Wlm3KeHO9dqXXLgQB6W03fllVwu6qdLnS7E= X-MS-TrafficTypeDiagnostic: PA4PR01MB8947:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MK7Z3zHIBKSU8ydPvXu8y9/mCO3d1NFbNOPgdRWCvMj0vhs7soJdIChL9/7nS1xIpN9qmfn4quocolo6192x8iifhEQ8wAz7Hh561U00lAlzVHkzpnGodgh4l/Sf/K3oxIDdhU3R7WCyzHRncEKD9niQ4JwqVcLK2wPGohHZkWsw+PSctws/Oe3YTNsqhsMjvjzR7lmt4pUeWzHFUrQ2hOK4J9m9QS3sfz3n5Xin1lV2edeKAO0C916VqBUMiGs1v56v1bV/JB41Sqtf2r8XrsJvOQfF2m2Aa7yq4H5a5BlNSBhcD1nxHFVwTPLZ+k6AQQw+KtS+rSCfG4cwbcmfWsKFUYBveJF3Jw5EcG+/YrBPTg649tXHUClVZ3/WDmA3L84mdeW7901M7XUdM+E20OhDObIF7FSVhJ6aNOPC8Zy0VGVowq9lL6ZkGfdVm/cnZN0n1nZkJv2K6Xi7Bpay7BR5kFN8+8UVaj0/MClxJHF6/h2i2j+KrkbE3Pl6/0QadsEbI14wrZgdNrHfees3KNY5q0N2nGSXOfWvxNy3yje3q1upzqCT2nMWQD1bB3XilmIhZ7i1jGx2N3POXY2WLQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hB/z+u6g8XQjXq0SeLUC+XNfBgdtcTxOKIrYOkkybteFzVdkjfoni8q30jlxWhJnVd9iv1Dkk8UR0MF/y3KUpXOy6qGyc5mEN3d/egMP5KzMBB2XkBc4yFZzwffcfolmp6Kn1cWyeXFdltUqiaRVxPHchkwuGcgGVw+FMcPYfs5yuhsFIPvC66akUUxUvKVmc3H8u+wo5/1+sILoUGF4M41BQmZpHzEZmkW1F9QgcpwW+aoOaHlxe6JY8cxnDYKSCsW5tHbHx3e20enXIV5b8WwXvWZ6ig8cIlnbQoNPbl3v7uQLxvudTaRtCvgJ8QQu5gkBL5fhJ6uOhqOfibqPZfINv4c+rtX4GRsNXW3aaLcgeJrkHEHmjmNxz7rmuMAocrAIVUP4Pa7HdEGGGpdcLpMESxb6/AmcEn0U8rbIakMJOnNVtwEpYXq0rl6B/FHnTMHOpmAVinuB/EGc9ZlLLHTm0J0wmT/D0pOilbOvaTXR2mGzluLYR2Ew2PM7fKScsbHAsV8Wvcc5UUA4l19pHzyolMG8UVpR48Aw52/I3PL+/m1MKeCN6l4YMgMDLNZJVFHFwbBG1ELvUhQ8zQlF3e67WwqA+WNaA9eZUagWR5dLodTAeCVIZybwyh8hcclQbrI6poloFXn7Lyi7USuNe1585099K1kMcw+GAjsz7+vPW0vVpVDyIiT6NiMgHxntdEk2fJjwTP7aeHkdRMXzxMF7a+yQv23kbqmblt/3UtUKc0fy9vg9Bu7+yDCZp96HQNZsMtlQ3lGEH4cnnwIIffgSsb3fObPjk2sgxfHLVgpeMUZYawviMFTdO3APRX5+f0EHEVqwDaB1cQUCZyPq1haJ/+n2/4+KdopyvETKApYKezpmZHb74qtSj/Uh3g6rVFWSgM4fcL1TjJA70k75LpaYlJV0zb0QtLihfEjzA87UZmx1B4dC2t5ZCs0zfPNXipqB6I8Du6v90nB+UWY6PVgVDvqEcMQbRpOzJR6PnYYsYJE7rWAVwUrTPlK/Ehww6LSTSlmKwzvq3Wr061e7cntBWbEWufhk5lNQocdSX+UbSoq+Rk0sIuGV8f4DaGrKW//ZOrcpioUysSKmUVpQ9ECr07dzdmjz/ifIK8RnXzWA3T0avJiNmgXQRcw0crA5GOtTVavJERB+HE+elAKbT/KG+f1MUod409OY5b9FqhJ07KJwx/nJjV82BW4pOH+x X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e024d2ff-577d-46ce-6253-08da06bf47f4 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:24.4095 (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: PA4PR01MB8947 Subject: [FFmpeg-devel] [PATCH 04/21] avcodec/zerocodec: Use ff_inflate_init/end() 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: v+DXtzJLnr3N This fixes the problem of potentially closing a z_stream that has never been successfully initialized. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/zerocodec.c | 21 +++++---------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/configure b/configure index c86e70e985..7c87548359 100755 --- a/configure +++ b/configure @@ -2990,7 +2990,7 @@ wmv3image_decoder_select="wmv3_decoder" xma1_decoder_select="wmapro_decoder" xma2_decoder_select="wmapro_decoder" ylc_decoder_select="bswapdsp" -zerocodec_decoder_deps="zlib" +zerocodec_decoder_select="inflate_wrapper" zlib_decoder_deps="zlib" zlib_encoder_deps="zlib" zmbv_decoder_select="inflate_wrapper" diff --git a/libavcodec/zerocodec.c b/libavcodec/zerocodec.c index 3bd04567a1..86cdf96f5a 100644 --- a/libavcodec/zerocodec.c +++ b/libavcodec/zerocodec.c @@ -20,11 +20,12 @@ #include "avcodec.h" #include "internal.h" +#include "zlib_wrapper.h" #include "libavutil/common.h" typedef struct ZeroCodecContext { AVFrame *previous_frame; - z_stream zstream; + FFZStream zstream; } ZeroCodecContext; static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, @@ -33,7 +34,7 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, ZeroCodecContext *zc = avctx->priv_data; AVFrame *pic = data; AVFrame *prev_pic = zc->previous_frame; - z_stream *zstream = &zc->zstream; + z_stream *const zstream = &zc->zstream.zstream; uint8_t *prev = prev_pic->data[0]; uint8_t *dst; int i, j, zret, ret; @@ -106,7 +107,7 @@ static av_cold int zerocodec_decode_close(AVCodecContext *avctx) av_frame_free(&zc->previous_frame); - inflateEnd(&zc->zstream); + ff_inflate_end(&zc->zstream); return 0; } @@ -114,27 +115,15 @@ static av_cold int zerocodec_decode_close(AVCodecContext *avctx) static av_cold int zerocodec_decode_init(AVCodecContext *avctx) { ZeroCodecContext *zc = avctx->priv_data; - z_stream *zstream = &zc->zstream; - int zret; avctx->pix_fmt = AV_PIX_FMT_UYVY422; avctx->bits_per_raw_sample = 8; - zstream->zalloc = Z_NULL; - zstream->zfree = Z_NULL; - zstream->opaque = Z_NULL; - - zret = inflateInit(zstream); - if (zret != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "Could not initialize inflate: %d.\n", zret); - return AVERROR(ENOMEM); - } - zc->previous_frame = av_frame_alloc(); if (!zc->previous_frame) return AVERROR(ENOMEM); - return 0; + return ff_inflate_init(&zc->zstream, avctx); } static void zerocodec_decode_flush(AVCodecContext *avctx) From patchwork Tue Mar 15 20:05:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34774 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314742nkb; Tue, 15 Mar 2022 13:08:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyjv7IZqTviH+k2ZqlKkCuL+OJPmt1aOfccaNXzO6moCKrqfOZbm6Mh9nVB68SVu8HAceDE X-Received: by 2002:a17:907:6e17:b0:6da:83a3:c27a with SMTP id sd23-20020a1709076e1700b006da83a3c27amr23406535ejc.415.1647374881740; Tue, 15 Mar 2022 13:08:01 -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 t13-20020a056402524d00b004166306f239si32670edd.198.2022.03.15.13.08.01; Tue, 15 Mar 2022 13:08:01 -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=gXj3XgSh; 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 BE38E68B0A2; Tue, 15 Mar 2022 22:06:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2108.outbound.protection.outlook.com [40.92.90.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1D88E68B083 for ; Tue, 15 Mar 2022 22:06:35 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fClM+99NBx4MH/D6v5fEt7W49GTj/k1HgJuIA2VYjaAu4i/Y1XjfXQT/kYt0vJf+94bk13rFsSN1YfF0M8ie8xSEwNoykBloNM8EX9DebNuqXLgqh7zeCP7Yd5xTA/ymNRVz0mOMYdAWp0ciLbdx0sNlZgkZUVFuhFjCmuH+eamw1G48u9lOkohHV7RwoMj7JV5H8JpP4VzUs9PsAYHKEhlI/GZPN7mplL+GpNVDRIxfTtekm9vRwKHfEhpENZRH9pLJSIBu4ILNdHLMf5yiumzk/Reix8KXZj5rUq1Y9GR9nfEikyIzJrZE1zYjILF+rzGBF577iQjH4tVYZ3dgHA== 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=ijZfBTcmr04M8xvmJKQUFl66/2mDRH3C1G2C+DGpfDU=; b=jiE2v8bFVg/puvvs2Jor5GA3yeoXBwHHMEKX3BZS7aRNCdNEk3HL9ONsUuKsv6/Q46NL/2FvjFzsVC4tN52mtVDu2agiub1J/RTKdv0XexR0Bi5vRnXCxopKYPriQxV4zX88r4OjOLacwWb+/ihTGV9uM6ir/lGWfg9TDvdnrDSnEVsYQExGEo55MZ+sqg6bOovNH/KcVuDzqzCVps7GIqFvrx3nJfO3DnHCuwU1HsibDJTy0qjhZStRzBw8AFeDiLnZWlgfYyUgB5iHj7ccmg9ByXAw1464NBo2CRNoqavvCMQnxFeSHQoUt3mP0SWvil0yW36AUy4bJSMxriWezg== 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=ijZfBTcmr04M8xvmJKQUFl66/2mDRH3C1G2C+DGpfDU=; b=gXj3XgShIXSBK+9DyawbDv+7+DuwP7VMDFUCsX15cfWSom5nPeHapuanmiiyZa3YEhYIH59NX3DR4uFB1Urxpp2a+Y1NtzaOHoeP9GunH4cFQJCJENYZPWgW+bdQgFCMWmjJDA67odZb0cByE5pQaCJTZ2NQzNEYFPdIpWcFSXwhF6DJcQm0ZDV+uadWZitYZ4Od7rvHjQWpzJUujBSYP3NymtdtHl2rDqL1WX1pkLvTkhJXVdOeiTjyuB6Vz22tDpFl/mETSkQ1J9rqWzX48W02YFHagdXqNn5zP+SZvUTt+FBJnAq0UMCY6vxWbu32VHbt7Mk9Zo9ejFG+neJ+Cg== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PA4PR01MB8947.eurprd01.prod.exchangelabs.com (2603:10a6:102:2a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Tue, 15 Mar 2022 20:06:28 +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:28 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:55 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [fYt+sNyJmdIHEkZNOrNgmMTO6hFgOaAO] 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-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1ff06bb8-80e4-4397-c1ca-08da06bf4a35 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVDy4rDU/3HqsNTIAxbwtq2AAc6GgdaCnwdnRbaRK7MnBLrMYUtg5BnFRo9fNs3jcy6SIvfv5CTs6iBzX/TFI44kcyrF4NR3aEQJTZDUQvfEvQBJx9RlPSV/G3ynTsjXh9phncmFw0+kZaGkkvA2u7aNpI3tiqYEpsbW/L6Y6w1y9/jMLenRG7fOblHCTd5kCIkC5cLyU1uUP+Sn/PARhnA7gU8opoZLRQw7tE8RnChP0LdsFDadQ7y1pT//XUwr20tAstHn0qP9bXD4yVVNeUw2eliEjvTSRX/Y/89x1JNlOX/dZTuqssQPKl73wvTXyTS+zIktUoIj8rp0kDw1Ynx8DdJDuf6v8pPryEJFJPkOdiSMW9cIYTaRP/y/wiHDBRIVEkOc0bu9f+W7up29Sh+U6mFg+iWH1Q+zNudewRb0Tr4qeDpG2OEEeDBV92BdbYyxrlGrjR07Xgsi87LpwW2ryGeh+Bo0vAsAQHOptcF+aQlPBmtJYcgo6dmcUzhtB7nx9zqqfIokGsMAX0MsqBvOLLTShr1susQwhiCes9qF3T5LtsZFLbV0vbVVB0WiWn9xX+NmIAqbKfa0Oqyx0MCSuzyAszwF7OZgglfWSdS9PL0F+rPyAXwFbfzcXUkPg1ytAcyIA679zA2wGhUBzO+x7jaZylOhGG/OWIwlUJUxhAXkTJTEVn8k2i9U6DF3RL7Yms9Wwy2lvOrFfdC+NswZ9VimrshwC6mFmkoIH4so8= X-MS-TrafficTypeDiagnostic: PA4PR01MB8947:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4BV4IJnAlg2dNz9YUogHyrVYXpQBeB3jNDWB3gg6zzA59TR2w7zygBnPhaf0eoIK3onZ4P4sE3pZPN6N3RvC/A2SfDhToQeOfWqz4iT8e1I/yvRJv3q6G80DiGXxMGzTQpsLXtpO27Y0TITuGYHw+lFxdWH9DCy5sb4XRFrgx1dXo1dcie+/NvrC88K2X3jdxcEKb9gJB6SHzlUyckmQtBfHMR/R0f4SyPmY0rpmgxR8/+M6RkKhXpOp6ypzUX1UFBdWdcUa684k7B8E+4guL6pHm0lgEki7paDLfLV9BD17OYFzzzNpgNxMq6h2Z59g/aZEjnIiJq9eEc5KDhi6VdWa2IorOhI6ajYy+vxTz38+HVv95Fx+NSfAFhD/cElhmNQwiRDrjTR80tEH5GLBCiIhs14m17TONwTqtNrBvXHT6C89JpAANAaiD5lwoIk0jTYSZP4F37sWjjU/Us958a3GXOFTzYarqF1fGdqJNBsOfpWSdONg/i6Oh04B7NChyv/Px2LW39iCbdBztI7tjupp23khGY1IdT+Hc84CrWX5zNKPHzMLblGMCKgEK1NMtJmsKq8PdA+hhtD5SPCeFA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8KfXTC8Qa9NKy3IcRKep79shdNYpV0tiOd9egUKC2fW9eBwQqGJGOw6fzZ4ANL7Ef9O36spmMC9hssGUXXv8bOwti+IyaD682A9FbMfkCYOvCdx9L1/z7PU9bY217vkbZ+izG4vC2bItOKt5KZEID7U+lWn7LDWCXMXcwhCvOPu1PTEtqbQ4akvOsiG838roJHKcS5A4YUPGktDJOCkFY+sl7eu5l7teTUttuwAxGLGYDtCTzGW0fQxCKuDRHEb7Bah94qlVNnGnomYQbMOFXptPwb/6/9CFYAdRC12rMyuUcYz7z/1yNeAzbfG9rSrpZB8h6Uods2ghNkkk4iN3m0VHX2gb4QI5xtLb+BmA0PuoCf64qawpGGYJvcPdKgBYsypoIVfIUeEAqi89iVObBcr7QS2evapmkybSxN/G/HxfQrzxVPimA0tEoDtkmfcnlLxnb13lArhWrZuYFS5TswVU5ViTGHHEm26zSkmnYzjXhBoDFL7ePi5vx1vF3qa6P/oQO1q5MyK5s/kok4gj+danM3e/hRf+mzfIbh7uaJEo6aSkmAzqX1oE4uC+EKwzE0juLruzNuUOhvIsiA499SdUTDHdXCI0cKggeCy3p9haQ4q7RRZcocogRNs1Xu82EJmzOw0a6SDXdotv+FWxE1vx5RcKl3Srrgllb6H44ZXDpW4FvkBjRB8nwYvSmgDqx11ii4Bv9webNKVP31ppl2l0T/mRMWsAHzYERTkrRA0ugLNK5KHC2m1qExU17RfmTeZzSkGTtuiIGIOxG2rtvk8P/xQN8KqEyxsDWNtOVoXdrjgactH5BYce9rkStAmAnPusL0AtCaGl5yCPrzK3SMHicfGUc1undSAMxbpUhATdBvYs1Y0Sbk5W6yO2/6IGDigw9rYwivHeHEMBG/xhZu4ziNkoRp+MjLbEuX5L5OBLCVP/IvZoTtE3YOBlGno8HB43xFEwuv7w+JNE60gNM/s9YIEji2uoiPYOM5Q0BqZ8XjNk7KltbcFn3NrmsRdJSX7FcNL3UAYkv1L2xxI1Obsx6GirtudpphtNqUyOF0YgR8kFXBUEjdcSeTLshKQ9SoJcprLPfCUzLZpsjCN0jJ9TBnYFPYhNPMLqAu0dbH4vqv0296V2Fj7vr1ym9hJ4KN+fV9fnqdQhC7IA8ItB0DgbXdMHbePii0KyR0ixpkE= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1ff06bb8-80e4-4397-c1ca-08da06bf4a35 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:28.1934 (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: PA4PR01MB8947 Subject: [FFmpeg-devel] [PATCH 05/21] avcodec/wcmv: Use ff_inflate_init/end() 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: DfF0GXVAq7j4 This fixes the problem of potentially closing a z_stream that has never been successfully initialized. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/wcmv.c | 46 +++++++++++++++++++--------------------------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/configure b/configure index 7c87548359..fdc3f3d28c 100755 --- a/configure +++ b/configure @@ -2972,7 +2972,7 @@ vp6f_decoder_select="vp6_decoder" vp7_decoder_select="h264pred videodsp vp8dsp" vp8_decoder_select="h264pred videodsp vp8dsp" vp9_decoder_select="videodsp vp9_parser vp9_superframe_split_bsf" -wcmv_decoder_deps="zlib" +wcmv_decoder_select="inflate_wrapper" webp_decoder_select="vp8_decoder exif" wmalossless_decoder_select="llauddsp" wmapro_decoder_select="mdct sinewin wma_freqs" diff --git a/libavcodec/wcmv.c b/libavcodec/wcmv.c index 04c597e767..d98d2d52cf 100644 --- a/libavcodec/wcmv.c +++ b/libavcodec/wcmv.c @@ -29,12 +29,13 @@ #include "avcodec.h" #include "bytestream.h" #include "internal.h" +#include "zlib_wrapper.h" #include typedef struct WCMVContext { int bpp; - z_stream zstream; + FFZStream zstream; AVFrame *prev_frame; uint8_t block_data[65536*8]; } WCMVContext; @@ -44,12 +45,13 @@ static int decode_frame(AVCodecContext *avctx, AVPacket *avpkt) { WCMVContext *s = avctx->priv_data; + z_stream *const zstream = &s->zstream.zstream; AVFrame *frame = data; int skip, blocks, zret, ret, intra = 0, flags = 0, bpp = s->bpp; GetByteContext gb; uint8_t *dst; - ret = inflateReset(&s->zstream); + ret = inflateReset(zstream); if (ret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); return AVERROR_EXTERNAL; @@ -78,19 +80,19 @@ static int decode_frame(AVCodecContext *avctx, if (size > avpkt->size - skip) return AVERROR_INVALIDDATA; - s->zstream.next_in = avpkt->data + skip; - s->zstream.avail_in = size; - s->zstream.next_out = s->block_data; - s->zstream.avail_out = sizeof(s->block_data); + zstream->next_in = avpkt->data + skip; + zstream->avail_in = size; + zstream->next_out = s->block_data; + zstream->avail_out = sizeof(s->block_data); - zret = inflate(&s->zstream, Z_FINISH); + zret = inflate(zstream, Z_FINISH); if (zret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d.\n", zret); return AVERROR_INVALIDDATA; } - ret = inflateReset(&s->zstream); + ret = inflateReset(zstream); if (ret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); return AVERROR_EXTERNAL; @@ -119,8 +121,8 @@ static int decode_frame(AVCodecContext *avctx, skip = bytestream2_tell(&gb); - s->zstream.next_in = avpkt->data + skip; - s->zstream.avail_in = avpkt->size - skip; + zstream->next_in = avpkt->data + skip; + zstream->avail_in = avpkt->size - skip; bytestream2_init(&gb, s->block_data, blocks * 8); } else if (blocks) { @@ -148,8 +150,8 @@ static int decode_frame(AVCodecContext *avctx, skip = bytestream2_tell(&gb); - s->zstream.next_in = avpkt->data + skip; - s->zstream.avail_in = avpkt->size - skip; + zstream->next_in = avpkt->data + skip; + zstream->avail_in = avpkt->size - skip; bytestream2_seek(&gb, 2, SEEK_SET); } @@ -182,10 +184,10 @@ static int decode_frame(AVCodecContext *avctx, dst = s->prev_frame->data[0] + (avctx->height - y - 1) * s->prev_frame->linesize[0] + x * bpp; for (int i = 0; i < h; i++) { - s->zstream.next_out = dst; - s->zstream.avail_out = w * bpp; + zstream->next_out = dst; + zstream->avail_out = w * bpp; - zret = inflate(&s->zstream, Z_SYNC_FLUSH); + zret = inflate(zstream, Z_SYNC_FLUSH); if (zret != Z_OK && zret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d.\n", zret); @@ -210,7 +212,6 @@ static int decode_frame(AVCodecContext *avctx, static av_cold int decode_init(AVCodecContext *avctx) { WCMVContext *s = avctx->priv_data; - int zret; switch (avctx->bits_per_coded_sample) { case 16: avctx->pix_fmt = AV_PIX_FMT_RGB565LE; break; @@ -223,20 +224,11 @@ static av_cold int decode_init(AVCodecContext *avctx) s->bpp = avctx->bits_per_coded_sample >> 3; - s->zstream.zalloc = Z_NULL; - s->zstream.zfree = Z_NULL; - s->zstream.opaque = Z_NULL; - zret = inflateInit(&s->zstream); - if (zret != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); - return AVERROR_EXTERNAL; - } - s->prev_frame = av_frame_alloc(); if (!s->prev_frame) return AVERROR(ENOMEM); - return 0; + return ff_inflate_init(&s->zstream, avctx); } static av_cold int decode_close(AVCodecContext *avctx) @@ -244,7 +236,7 @@ static av_cold int decode_close(AVCodecContext *avctx) WCMVContext *s = avctx->priv_data; av_frame_free(&s->prev_frame); - inflateEnd(&s->zstream); + ff_inflate_end(&s->zstream); return 0; } From patchwork Tue Mar 15 20:05:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34768 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314081nkb; Tue, 15 Mar 2022 13:07:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRinnDV4DND4VXBio070goLx39xpcECAAx4a2TvMyYi7a/cn/rKXrHSyShPE84VGfuYIPO X-Received: by 2002:a17:906:66cb:b0:6cf:e4f7:9504 with SMTP id k11-20020a17090666cb00b006cfe4f79504mr24580711ejp.142.1647374821716; Tue, 15 Mar 2022 13:07:01 -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 n8-20020a05640205c800b00415ecf633fesi11074edx.510.2022.03.15.13.07.01; Tue, 15 Mar 2022 13:07:01 -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="KOaVgl/B"; 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 522D168B03D; Tue, 15 Mar 2022 22:06:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065070.outbound.protection.outlook.com [40.92.65.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E629168AF33 for ; Tue, 15 Mar 2022 22:06:30 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=arE0SCCNvNMkdVQado6r75rzFH52ZB0W6lC2D4sCb9wVEe4ZXbeQK64Oh7krRPOUGTfzEl/uYpBXQJkczD7b7juTz8abAx7+AwzuVxa1xGOu1cnSmzLwELr/XtygbK+UU83CYevJtHpnVNBt9vvDiCn+uYywxmbTDqazZUDAWrnSbgVoVRNq1v0s382x2JTa2h63XTZRRecYBqTXmuJ0gkAwKZxdZBF+jS3Uexvbmyack+kqBXXRiVy2X/9P1SDiButluJ5JryzIOWHzgl/VcVjXPR9SGf9kxJ0+PZ/sQapWjpj5vhPOuJiQkGdEK1Jt9pmqdF15tsYKyefa32hZnQ== 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=gC177nq8lTEyKgOfjcHJqJrLWpqDOPcD3u89h0r0Fts=; b=Le/nOFeVtXq6sRyi+0mCvtWwWO5zClE2+FIf+3R6sbOFMuB9T3f2DVTfbj0ApVHosNEu/AM0I4dQQ6v1YSaO/fXPEFCn5y089hp+ryXRSaKKd8+Eoukf+AG/AEveLPcw2fbiw99kgbqsPGJhLwZ8wrC8EFNUX7Sz3u319jqrPk7DWJprZweFyeVBl+oXgPvIq+9SclEblsYuczhk2XyzmqYnguSHDOZZtJCCHHQtrQnfSLPwkQiJ4XSkWnm/eep+tfWRldDKT21231aSWRizXw3D8oOiWsB7F31i0FBOBo+u0jp68SlYn0mOboZBMAmuCFtGeStHpDnpRq6VikkVaQ== 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=gC177nq8lTEyKgOfjcHJqJrLWpqDOPcD3u89h0r0Fts=; b=KOaVgl/BR4YgiuCISbq/iTea4lAVRHxYPl9yIaM9ZUgU4Gi805LPs/gBcMNFMrMPdYrWUC2pKJwn4cI5pS8Nq9BWWU/sIgMRHQk26njLZBoiPKKNYgjfKWJ2qjvhAzR94WXOz9dakfeaJPNUY4UmmZQ0nUJRZfgrt+wbit0ztjlq6yvHG6VEFrdKPgTCEN98sh2BQ0edmOz98Cb1c9DeTJgRoTYpAmGSoAkxVQlmjNB01QMPfTYgGir0tSaCp2bK+dbupfI8EqUS2HVt8t2UFtVqz4FDrxR6BT85ZtJmtOYLwaQIs0lJUr+rmy7HuNuMAoJmkA6udHJO6JhvOzUwgQ== 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:29 +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:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:56 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [IttWx812gppivrF6CZqcYx55PCPsA2j+] 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-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b5d1f6a-472b-43a4-d66b-08da06bf4adc X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVDy4rDU/3HqsNTIAxbwtq2EzitiOxNuCGmuikwet74/kDXg9+mBGdKjmLY4+UwlF5vYlmQj3tAniWXEOxIwiu2hTQn4ZO6c0nHeTCJwOdEdMXiecgZVjGC8JJXI7owWnSMbOgRc7ZdABDEPeJ1Qgjsu6NqsHz9QJ9CdryvT1g0oF3TFJNsCAyK4uyyFU/7iCqUFtdDzLHZmz6kGGO/BToLjBwXFV376iYg5CqqFfC6Udlp9ZeoGJy3BvvMCvXjHAviiBhPkhAu5xZiY1BH0Q0JIV7yD4NcdAzkpixVKNiEDdBI4qSjiUPAjwfEtzqVhBVfQITIrpZDiiwt9ZBksbOxdT8fIx+YP13wzAv9spDIXgIqY0ZZQtenU66eqfb/VGYNFGScN3xOMqy6hqKop1B+YE29yZoTCsNUQdv2BtZ4m1go7pPm5iWCsn29TAjWQpOoeWJd/3rzT2vmiU880ppFGnXz6cDjgJEevlREKEGU1+/evg5SPQZnt20VGC/9wgbNLF6FlFg/dWKdvCUWDHsyHX0TnwVRqFanGOXJ6jnMOBzG9j/6lTYTfT37ekZ8vMEWq5wrfIH11TMzyjLa3ynBAB/n9m//65UkYFfbEbYVswL66RPUNzysAfpkji/WTSK9BYo3sNXdidtgFAIsH9K/ea6HAzh399reGjS6FM5mKXMMr7xbHGDmQTJwIXyE0PTCde3FeOcO7Gs02VF8WA5/Lq6UeuElgxlW5ghHJ79ZlA= X-MS-TrafficTypeDiagnostic: PR3PR01MB7035:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3PO6soho1hZ2qdimmIW34WZXdTb1F+xpNEfIolGFXx9rAjuoSKwXEJYYn08CqzDeECWEtqenahLMOcwPOMJAMBSIvUjVSbx630+BDbgtOHu6F8XPM6Y9kQr/w8+TrRlXyuO5mmR/JFNCgAM+F37vfk8+eP0GI+CDs4mpw1Cl8YUNFIacPZ23p+bJKIp7LXOdN5hEcxz5HpzjIyRokfIhXMJFdJ1i24xzvg4cp/8RzozRQsaM5eVRx3caqtGVekCEQ+7V95OBS+K85FW4V8+YwqhkQzHFL4zKUXneAlcwryiJCwnWEJGR3Dc2XWVAftVgNtfihgJT9g+of+gWyd5ChCNfF5pFr4wBANJb0QY2fuiq5i7NfmmgRyYRZkoEKz4q4GZFmdkX3wzVnjWbm27AJCGPuX2JJOpCChheI03eHFJqBw+3w4Bwqs2Y38f4vXHoMOqazyHrlFLrI0xSunPlauzdyUe19JX6lcoHlHcdcBBybQMuOjP9WYmwkYW32L2siYe4Ufhvwh1mPTE/W6/CPU05trTMbMBqHhdYvBUhjzfrgOvXxFKa1S4xf2l1Taa6DPfr88QJVmTF4ovyd/6Igw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Rzq5glP04pdY7LMkFZO2h7dhVs7VtuAXfosO04M48Mje6s4dPsTJz0/FhKzG0Zfo47LzMPtM3wKKoemTs1UdmGrkppuvvmiBtMNPtOuWkJHBe76odF4rsYO2P+aRaRgQTuPgESbeeERrqLmYZUkqkQETHsG4JSUP24kpBsTTjggaq0RrH3ucOD0JTTjkBgYbGfANdYmXmf1CZi9SZHdfze+kHUIIEqCHGFT1ncpJrVYbIAR3oyBaWe7yhEBBDzTBGmftlLBcB2j6u488XRdXGdIFk5AemxLuwtjFh3yqSXbBiuwHZ/x9sY3WW0FZdO9EM4u0gmXENam14gpPpHfjyTEoNTtZy5fwVtsGnDmLcQgTA6zytPIXjZY5LQt/y9vv6XEjmCtAKqBjIZaKqbmd6vCuctoEl+4aB0QQS4RA9egWs6Q/C7ZiAN+z33vFoRJvKEFCHyYqSNzmg5Q7svs0Dq9iUJWRV6p9v1inKw65Wm4cGjswWtYACzZp/RaEWRgmE7XDQJY2hCjVINnruOEKhXQBIJyeizQnrh0PvU/fzn0WB4P+SnrcfGf/WNcVxAqLw85PAIuEUB0nJMMQ+mBIAchnyi/bNhSvJtM3b/s9p3YKsrPQsOf4/Ad9MU70ldDtiipq5y5Z12TaeJoHpXEzvEXC+DD7+tikGzVWpo7+Tas27bqMTKpoOUQfyLDQyLpUC5slULlBn+v3D75qgMPyJwjMhdNG6ZaZTdSnq0dahoaQUk4ZUhP+9NMHkwXITlcRZSnxS7FeK79wmgNd1NqQSeOmQ3rglo641K3D93m4UXhR3OghQR8Q5icqkhAM142H2/zAxRcQNL6sB/Lsvx0D9QsPb4xaqHAqTwiW22azmAXErZ723BbxctmgYEdII6RzB4sPkggHvLMfpuooSqnhTmbxdmX+iy+TqzE+z8E5fXH7I+f5O/LToVahdJV3XAqR5dOBfolZ/g1PMW+4XP+grxYoprMRJcLeb0CZLy+xuF4woJX9s+4YDzvCp/yIlIg5rZ2pg+uqtD1/ko17gLntlpn+FDh70TWcg0h2nXfhWkw4qUip8sPqdKNCaKWDkKf9d+PLMhuufEKYSlfk6ldo0+6fwa9AVl8WeB7AYiXMNCGup1KmHCh3u9fkDITA4klpskUrI9mFOmY+JbcdWRP5rJQZmTktFkEsAFdO1DHIb/Y= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b5d1f6a-472b-43a4-d66b-08da06bf4adc 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:29.3196 (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 06/21] avcodec/tscc: Use ff_inflate_init/end() 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: g9B1+azTwXhq Returns better error messages in case of error and deduplicates the inflateInit() code. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/tscc.c | 36 ++++++++++++------------------------ 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/configure b/configure index fdc3f3d28c..ad5b5f1727 100755 --- a/configure +++ b/configure @@ -2953,7 +2953,7 @@ truehd_decoder_select="mlp_parser" truehd_encoder_select="lpc audio_frame_queue" truemotion2_decoder_select="bswapdsp" truespeech_decoder_select="bswapdsp" -tscc_decoder_deps="zlib" +tscc_decoder_select="inflate_wrapper" twinvq_decoder_select="mdct lsp sinewin" txd_decoder_select="texturedsp" utvideo_decoder_select="bswapdsp llviddsp" diff --git a/libavcodec/tscc.c b/libavcodec/tscc.c index 841f0c0d14..cba4d5bdc9 100644 --- a/libavcodec/tscc.c +++ b/libavcodec/tscc.c @@ -41,6 +41,7 @@ #include "decode.h" #include "internal.h" #include "msrledec.h" +#include "zlib_wrapper.h" #include @@ -57,8 +58,7 @@ typedef struct TsccContext { unsigned char* decomp_buf; GetByteContext gb; int height; - int zlib_init_ok; - z_stream zstream; + FFZStream zstream; uint32_t pal[256]; } CamtasiaContext; @@ -69,6 +69,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; CamtasiaContext * const c = avctx->priv_data; + z_stream *const zstream = &c->zstream.zstream; AVFrame *frame = c->frame; int ret; int palette_has_changed = 0; @@ -77,16 +78,16 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, palette_has_changed = ff_copy_palette(c->pal, avpkt, avctx); } - ret = inflateReset(&c->zstream); + ret = inflateReset(zstream); if (ret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); return AVERROR_UNKNOWN; } - c->zstream.next_in = buf; - c->zstream.avail_in = buf_size; - c->zstream.next_out = c->decomp_buf; - c->zstream.avail_out = c->decomp_size; - ret = inflate(&c->zstream, Z_FINISH); + zstream->next_in = buf; + zstream->avail_in = buf_size; + zstream->next_out = c->decomp_buf; + zstream->avail_out = c->decomp_size; + ret = inflate(zstream, Z_FINISH); // Z_DATA_ERROR means empty picture if (ret == Z_DATA_ERROR && !palette_has_changed) { return buf_size; @@ -102,7 +103,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, if (ret != Z_DATA_ERROR) { bytestream2_init(&c->gb, c->decomp_buf, - c->decomp_size - c->zstream.avail_out); + c->decomp_size - zstream->avail_out); ff_msrle_decode(avctx, frame, c->bpp, &c->gb); } @@ -123,7 +124,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, static av_cold int decode_init(AVCodecContext *avctx) { CamtasiaContext * const c = avctx->priv_data; - int zret; // Zlib return code c->avctx = avctx; @@ -151,21 +151,11 @@ static av_cold int decode_init(AVCodecContext *avctx) } } - 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); - return AVERROR_UNKNOWN; - } - c->zlib_init_ok = 1; - c->frame = av_frame_alloc(); if (!c->frame) return AVERROR(ENOMEM); - return 0; + return ff_inflate_init(&c->zstream, avctx); } static av_cold int decode_end(AVCodecContext *avctx) @@ -174,9 +164,7 @@ static av_cold int decode_end(AVCodecContext *avctx) av_freep(&c->decomp_buf); av_frame_free(&c->frame); - - if (c->zlib_init_ok) - inflateEnd(&c->zstream); + ff_inflate_end(&c->zstream); return 0; } From patchwork Tue Mar 15 20:05:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34769 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314206nkb; Tue, 15 Mar 2022 13:07:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwzUb1wKDBn8LaelPEaDY1xpLtJ+hr7soF1JkSOCc68IX6f3TXCwZPlJbz9tHSJFL6bPhul X-Received: by 2002:a50:9d49:0:b0:418:681b:f6d with SMTP id j9-20020a509d49000000b00418681b0f6dmr15190938edk.160.1647374832859; Tue, 15 Mar 2022 13:07:12 -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 p4-20020a05640243c400b00413b7789b53si2945edc.531.2022.03.15.13.07.12; Tue, 15 Mar 2022 13:07:12 -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="kuf37/ec"; 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 3E1CC68AF2A; Tue, 15 Mar 2022 22:06:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065070.outbound.protection.outlook.com [40.92.65.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3335F68AF33 for ; Tue, 15 Mar 2022 22:06:36 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZokQy/MF+Z4uDWq8cM5JTsrD4E8A0U+v8Hn0uNY9RW7m+liOkURh/GlwFGnexu6P34pddMaIYZ0CkBtv3j8adpbuYmUilhhkfkOinqqoGJVdTxUZqkPgug2miTGYEA5dWBic1oCCQphFnUWOok++UZS1mehM1yWfJbLAFvrNZ2kuZ3mrrQJLTitRBj+6U3FqLCOoVZpNjn6iIa0394wHKFW2DmXaipAvhFPXm3Pz42wAraspPdBet6kWJDWrqh0lJCcoLyOoKle4X9p2mdnJFml0xTn5MtuEmt4wBoYAVb/sypBmBkuG3q1GaF84W7es/0qTyObqvGNNJBUuXYYgrA== 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=7KMMVSqi8ogz/MJMJM3K+MySZfGzvdj55Ladb7FXU0c=; b=WwkN63cWbc1rwsz8kgUPpvTy+9mpYktfAKQNv0uJyIvrU3nFO+r/YZwOK6REoUFNyZHvDiQa3CW9Vnr5NRmW7HLiBfS0Ud4HQn0rtgj474NevPUB/HHmo69vG1pQ7XnGO2hNLPO3D43csqoFR9IzgB95peyD4p7bHpm0FDndAZtK98zn8jzv6BPe3xzMC6NJBm0KCSJwaR53K/sB1BHlAqzLKJgEJNIDh0Fn4KY/NQtU9sr83HpJ7J09n0SrERT0UjaP53Pev20jNCWKyc1LJHOEo57Kf6xK0DDQSCTeJhCr61hHvR8xT+/RmL0ReKHZwI6qNKKqXzttZC02W1Thbg== 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=7KMMVSqi8ogz/MJMJM3K+MySZfGzvdj55Ladb7FXU0c=; b=kuf37/ecWotaaDK4V5qUQmWvfIMvnlN+yFFtAHuhq2SEfG41wf+hZiFIa/ojEzkCmv07Yt5olZnWYvqacxsYMzsSOYy6ZAXLU+f++bQboWoiRU6X4CYIvWLGepfOB7yHMdpfHfYwWnonVZ2l5wym+vWRMgDN5iCvnqt8bdtMWLq6knT+oTVeKyCfBLUhUlaPH4Y4PNJmdgBIOxfxPSBbbBBotCOiAyIAFCrVn1xw0rt5m3Fpj32ZFenWxh1nuZIjCyvgvCzh0j2tntwmtiTKKacz0YwPE4yewQkZVsODU8MiJca78/dpg6ofFMgXA8u4OrTNVyEFuP5FudJYNOCpnw== 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:32 +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:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:57 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [WDtO4/KAdC0MPc4RDcA6KjyXNKeKJ2M0] 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-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0caee99c-bff9-4762-a2d8-08da06bf4c9a X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVDy4rDU/3HqsNTIAxbwtq2Ga+AzJj6TZRRWWI6mP367gRDvBRYqBnNtkNh90rpuxT3gpvJAc0tSo8EsD6PoxJsu3gXZjKaBRUQd9YwL1QRZPuaaLE4xpsxgNEwOR94zLUM/U2hWCdYofnlzc8R0PKslYL1L3Tm9Bxz9qdb0bknFdvq7310kleb2C53aIQOX5DmVIwzeDeT9FQPcrOgaOATdvbMwcFpXltp5En7+8uFTU57svQcDs0Y6JUp/xvPBlPtwGEJ0qh8ZoNRwu/Pu5RHrJkTvGD3z+lrgvEgIAZvNNFPe2Nod+HNyGls/gX6cFk8oedncvHIfLYEjAzEtIpuWcHwOVD4s7iA+j+uVY7boil8KrYcjaoXjW1c2eGPXal9O+lj4rBwqmOO+6pMtAsXW7YlUxJNRmXR/7whti3v9aXldxDzjYMvPxBDLb6ooyhn8ehIqYWXzfTUFrTSKE7+Lh5+la4/IBwGq+GAy14OE1OSBsytyPLnEpO7RycHqBXJMR5PUHQRiNvNZmL+dt47xWWfauCySJZVs5GAhCStUxGFYAbJnV2c7MIsYOA+SDZ51LI9sUEWgJ6i+HkggLaVCxf6dw9NWUI2Ag+t768j/DLomKjacHUhW9cFNyaosAkwpFMEUz+duo0xMR7j80myr3GBij14aj7nQJjDsfUiQczC495zKOVtTWbEEGn5QI5ALwcvfNw1SeLAlgDyq9nTQ22Tu9hhCQkm+ZPvMlOy7A= X-MS-TrafficTypeDiagnostic: PR3PR01MB7035:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QTCaCg+G7bEDwfT5erGnlvwMQe7GymCjnOghNVWk24gbBV1gUzUzotzsxHoRD8znfZxsG/UMoYnoKizUNDWyQlDe4tH+mqFzDV8VAZbfiiIZAW2tjoUkra5Pl/hESaaD1+V0MYBh/NmCOy4fz8ukga5D1yDzgGq23qko/c82LPNcue5QPhSZpvxDEV2BlYGeywStPXLl4jFGYAKd0oLNiRwDcHxlg9OQDj7eLpNRKnwc+nt4VmMUKHzJo9jGDP+rpd43+mFkcJnUn39g27Sh/Ztj12Qy7J3BOmiF6XEE39IyVIm0bE48sT4lbAauql2T+EMIUFYrV9sY5mKKWmRbVoHSkV9cFCbsrvn1tHWfXrljZJLDFkWuvOpl8oVXYxFkJ3tNv3nsYN1/AHBGrX8j4f5Xg/eVi10HMnuPHyx0NT0Fu+JUz8sIlFKKI8flWagijgx3pepVMsuEF2nv9vzqJsx9xwdXiZF7k4xuvXZjXYsdl8/l67QZgjIHc4c40BqrhB7CyKXleUpBt9IeYWJfVoayDNq0AqCxR/aG60j069KULSkkU2v3BqBWejsaybFpHD+ggtRq2Ix+hqrfkHODeg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Dp8CR9WN6k12Ru0guThW3YwEEhZKhCPVoxStg0f2qwQLOAJZh2HWVbtBcPpFATIaoRqqvdsrVxveorZE0OCfy9dRaxMN15ibB1swusJqxQ+bXCqpHFjHm19xJ/su9arHiXfmGdKW4Dr/X5eSRdcNhvuC/DDUWk5Sc9q5HaUPv0oSpw1tqA98J3ZoQVZueHmaGPVqM/eC/V+tekP/HOm97p8HlsYn3Lu1Ry1AYw+FDVyc5WyT8W5uEV2eyVnF+5roJcKOCtCwYFo3JDnnPESstZn6aGZYj/kBSvzyX6NHm6F3fv/NxQA/oTUJtsV5nRPhsONCJSPzTB18B0dgsSyDNJ5LKCjJPoImrviNRuWbQYEeJFSXLknHOxKzNRGC9iHBgNP1bzcXrVRT0iTW7GmMuW4cqeyhUbeSVdV8BUV9CtS5alJqJ73UQLvwEz5epChaWK1xrwjvhTJtK0ahIkq++j9Kum7O3H9MEDCbgSwhO1f5lmmM4U0uxKp+AbSZFDd2TEmH9cS9/wSetVyCbi59ZhcnAWNA7+FjndM/d/BN5AvvjM+h/lpew89Z6fimU6DGvkR8KztaFml11gqhNQThBrj+mphQ0aXsGTcYGwZgp70EbK+b5U0/DHlLUPBmws48WFIAOPx0EL2CPz8wabKlx/DyXilciQREu/pUnfhlHw4PNWHL0lmXlxiFJ7fzSmBmWK1ajjmXIPX0yXH1Z57cnlyMtkH3ma2JrfcXDPXo4EtKZXIYDLslu1Q9KgyQ1AqbIluf4P77Vo+vLijcp0VvSUG6tY0XyViVdceqbghfCq1XUYNsl+oZtfLrLWVexpI9cRSqf2U1IaY6d41tYGl80mgvL2EKFv7Bcn6c7yQafv1yjseBXJGNMKufDFMn8Ll0Ou5Xpm3ABEr0jOI/o+iMe3mZrybd6jAe4E2WClAjZg9ukp+FFB9cqWHaeYr16jHFuNZTAAiJeerDBNdp5NZg88Rhj/qLkmOV138Nnt9VunB09sDkLx2XWqx/CzDIm00CwiOEYbandRQhzRYZfygDLYTTIGJhDZHDIjy4/e3r0DWN+X7C/e0rHTuwvQX7r93eTBUIt3KSiyQdL25JZFEdCHt2GCpEt89q/tKRLi2geRctpx0OfOUJJBp0mkM2TFPKR2z4y3viMKR4EP6AfRCPfgNSgDCI9EdoOaWPlwzRei4= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0caee99c-bff9-4762-a2d8-08da06bf4c9a 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:32.2100 (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 07/21] avcodec/rasc: Use ff_inflate_init/end() 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: IhuO9pFuosdZ This fixes the problem of potentially closing a z_stream that has never been successfully initialized. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/rasc.c | 49 ++++++++++++++++++++--------------------------- 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/configure b/configure index ad5b5f1727..464ddb019c 100755 --- a/configure +++ b/configure @@ -2914,7 +2914,7 @@ qdm2_decoder_select="mdct rdft mpegaudiodsp" ra_144_decoder_select="audiodsp" ra_144_encoder_select="audio_frame_queue lpc audiodsp" ralf_decoder_select="golomb" -rasc_decoder_deps="zlib" +rasc_decoder_select="inflate_wrapper" rawvideo_decoder_select="bswapdsp" rscc_decoder_deps="zlib" rtjpeg_decoder_select="me_cmp" diff --git a/libavcodec/rasc.c b/libavcodec/rasc.c index b328e219bb..9b748be9ae 100644 --- a/libavcodec/rasc.c +++ b/libavcodec/rasc.c @@ -30,6 +30,7 @@ #include "avcodec.h" #include "bytestream.h" #include "internal.h" +#include "zlib_wrapper.h" #include @@ -58,10 +59,10 @@ typedef struct RASCContext { unsigned cursor_y; int stride; int bpp; - z_stream zstream; AVFrame *frame; AVFrame *frame1; AVFrame *frame2; + FFZStream zstream; } RASCContext; static void clear_plane(AVCodecContext *avctx, AVFrame *frame) @@ -174,10 +175,11 @@ static int decode_zlib(AVCodecContext *avctx, const AVPacket *avpkt, unsigned size, unsigned uncompressed_size) { RASCContext *s = avctx->priv_data; + z_stream *const zstream = &s->zstream.zstream; GetByteContext *gb = &s->gb; int zret; - zret = inflateReset(&s->zstream); + zret = inflateReset(zstream); if (zret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret); return AVERROR_EXTERNAL; @@ -187,13 +189,13 @@ static int decode_zlib(AVCodecContext *avctx, const AVPacket *avpkt, if (!s->delta) return AVERROR(ENOMEM); - s->zstream.next_in = avpkt->data + bytestream2_tell(gb); - s->zstream.avail_in = FFMIN(size, bytestream2_get_bytes_left(gb)); + zstream->next_in = avpkt->data + bytestream2_tell(gb); + zstream->avail_in = FFMIN(size, bytestream2_get_bytes_left(gb)); - s->zstream.next_out = s->delta; - s->zstream.avail_out = s->delta_size; + zstream->next_out = s->delta; + zstream->avail_out = s->delta_size; - zret = inflate(&s->zstream, Z_FINISH); + zret = inflate(zstream, Z_FINISH); if (zret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d.\n", zret); @@ -473,6 +475,7 @@ static int decode_kfrm(AVCodecContext *avctx, const AVPacket *avpkt, unsigned size) { RASCContext *s = avctx->priv_data; + z_stream *const zstream = &s->zstream.zstream; GetByteContext *gb = &s->gb; uint8_t *dst; unsigned pos; @@ -488,21 +491,21 @@ static int decode_kfrm(AVCodecContext *avctx, if (!s->frame2->data[0]) return AVERROR_INVALIDDATA; - zret = inflateReset(&s->zstream); + zret = inflateReset(zstream); if (zret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret); return AVERROR_EXTERNAL; } - s->zstream.next_in = avpkt->data + bytestream2_tell(gb); - s->zstream.avail_in = bytestream2_get_bytes_left(gb); + zstream->next_in = avpkt->data + bytestream2_tell(gb); + zstream->avail_in = bytestream2_get_bytes_left(gb); dst = s->frame2->data[0] + (avctx->height - 1) * s->frame2->linesize[0]; for (int i = 0; i < avctx->height; i++) { - s->zstream.next_out = dst; - s->zstream.avail_out = s->stride; + zstream->next_out = dst; + zstream->avail_out = s->stride; - zret = inflate(&s->zstream, Z_SYNC_FLUSH); + zret = inflate(zstream, Z_SYNC_FLUSH); if (zret != Z_OK && zret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d.\n", zret); @@ -514,10 +517,10 @@ static int decode_kfrm(AVCodecContext *avctx, dst = s->frame1->data[0] + (avctx->height - 1) * s->frame1->linesize[0]; for (int i = 0; i < avctx->height; i++) { - s->zstream.next_out = dst; - s->zstream.avail_out = s->stride; + zstream->next_out = dst; + zstream->avail_out = s->stride; - zret = inflate(&s->zstream, Z_SYNC_FLUSH); + zret = inflate(zstream, Z_SYNC_FLUSH); if (zret != Z_OK && zret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d.\n", zret); @@ -751,23 +754,13 @@ static int decode_frame(AVCodecContext *avctx, static av_cold int decode_init(AVCodecContext *avctx) { RASCContext *s = avctx->priv_data; - int zret; - - s->zstream.zalloc = Z_NULL; - s->zstream.zfree = Z_NULL; - s->zstream.opaque = Z_NULL; - zret = inflateInit(&s->zstream); - if (zret != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); - return AVERROR_EXTERNAL; - } s->frame1 = av_frame_alloc(); s->frame2 = av_frame_alloc(); if (!s->frame1 || !s->frame2) return AVERROR(ENOMEM); - return 0; + return ff_inflate_init(&s->zstream, avctx); } static av_cold int decode_close(AVCodecContext *avctx) @@ -780,7 +773,7 @@ static av_cold int decode_close(AVCodecContext *avctx) s->delta_size = 0; av_frame_free(&s->frame1); av_frame_free(&s->frame2); - inflateEnd(&s->zstream); + ff_inflate_end(&s->zstream); return 0; } From patchwork Tue Mar 15 20:05:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34770 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314313nkb; Tue, 15 Mar 2022 13:07:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwwWUSH36qsHXHJesYjpSfzgpMK0XqVhnViQRRrBIWZaRFp87p6drr/CSFF9Judjkbf/sJ9 X-Received: by 2002:a17:907:8687:b0:6d7:8f6a:3c0e with SMTP id qa7-20020a170907868700b006d78f6a3c0emr24205989ejc.500.1647374842857; Tue, 15 Mar 2022 13:07:22 -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 b8-20020aa7cd08000000b00418d53bdf5esi12713edw.412.2022.03.15.13.07.22; Tue, 15 Mar 2022 13:07:22 -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=vDzmwzfY; 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 2D03368AF33; Tue, 15 Mar 2022 22:06:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065070.outbound.protection.outlook.com [40.92.65.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5EA9B68AFB3 for ; Tue, 15 Mar 2022 22:06:36 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Advkzb+FcwcnrpgbS8gP3Tu4MMITrsa15BCCeAsLgP9ewqbhFk1bw2tr+Ni6saXxQ5zUpDHrAPes+OdCMyn2P2qd7+ILEY4uzb96EWQotjtLKaC3gspOEUsplMq/mQQ7aHcMSZC7ibk99dVRFb224JHgn5dbGHgtJgh9aatPyvU0cW5i8OdCanHOogWB7kf49u5+Vn/ocsC+MBDtuRtM/csaRV0gvkt7bRqhn30X1EeEKR9+PlBJNBblvLLPfh2GnOz5IsDT+OwKpwGVr+Hw2ruSWG1BhLAqQ5utp1IBeDc4NEud2jCuALZVQfwredCKaRljNTKfwlyJ0/+Sti3fIg== 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=o2hKFrfTTE+7Ir9voZDOSO2tcOubSCWK1R/NDh+6TSU=; b=fRhEISsN3INNKExulXqo09AQRsskS+SUntmWo/cX8QoSS+f/FC5h/45eZbrfQKo8G4Nq0jkHOLII8Rpc7cQjv53yegv2uSXGscisVBE0FlOd3YzJHUFgqfQtOtFo6+A4Kj7bKIW58R0lJ65HEb3sSR+K35I2f1EUjQavxt6EQmxgLwYWcVdAxWixl4UkHMHc0pr0KOgjhpbjvmkDDS258sBOfzdgQu6FU7/rQkF8vZeKLQfLht1JALAG0/SSj3jh6PQCvHC6LGpbPrkGvg488AGF/Obp9jgWCi9rE+PmO0ESHTc/U3L5dijnkfgExhuuRIj78+uqWqWhB7uT3R4/pQ== 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=o2hKFrfTTE+7Ir9voZDOSO2tcOubSCWK1R/NDh+6TSU=; b=vDzmwzfYpgJEWoE47rl6PsuGwDHrPV6W72APkaAI/w7oSFzvpP3HN/ogMqTH2o3EgIury8Rv+kKAkbseKZxxQjTu9quEAx2GqkTrkpwHbI3mVtYfm1YsjhniCdjm/wVmRtuLWgOUW+5qsjEgEXk8G3JEVzaYrZg2V6TQXcbPTa+OlGdrZuhZxfKqtd8QgGCWLQsj88aaJFl7hagPFLbW+Qe/WJV+CwUoTblrBmTT0/A1030oNlVDl6zDdAFNnZoPh0Sdi+aSnnFpWNY1db3vVlGU8XxpKFxt7BL6SYlgZGXQQjLh1nAtrA9KsX9ij49M7ocx448LSh3McqxJoncB7Q== 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:33 +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:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:58 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [dhOHz5u8Qixj8dgZFIMpq2fGZvT04B8I] 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-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1e2ea323-6449-438d-5124-08da06bf4d3f X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVDy4rDU/3HqsNTIAxbwtq2BD5L+cPL0iSRT8Ir/oid9WMzktG1nmJ+cw7GDDb0cIGLlxckfLfah9Kr5EF+KQReITk9zYEtYPV0a935qCXAiEo/uxw5UbOmVbad6OdzSKvYDsUKHdadxLwl4oT0WjlAGQct1582CK0Tvj5aFlTsRTdWflr+GhBf6a7BYsSUOSe+39zkrMHYVvlST28sFxqksM8ixhncuAhP2zMsqVNw4cZYAq7+GisikWnIIoiixqJ1JD6v8H3+iincecbKcLG5K6/BDiItHUhiNLQexvhMravslTUoXcoVN8FJj5MIcF93AqTtsf3NJQb1BaD6X/sG3SngSsoPQ5v5NZEvQ/Jb3JRg5P6wa5W3l9Kqj0gVbtTtcnCKvZ5zCNiK8uXNoYAgwcZL2cYX9Yr+SQihmWVN9QiSE+mSkLyFefHYw7s0RFA5hizlai/y4DnS5rRzNVTVDkiLZdoBbIAO9o1Sr4SuDJXgVv1+iALEDWjMeMAj7yObOP3/0ORhTx6Ls/1Edy3JaLZ+D6t6EgMmppvwSGNc91/K+NISkgEnpv9yQFdCqgDBXQ1nrnnQeIsSdd71Ba5g6WFqOspEPLLShb6l0Oxc2oDHvNEEHCM0Jiqkq9rBdZgCzy6lyc91mWpdTO1vaDfjJ0EjIs/y6XK/D2F24w89TnfOnjqYwHz95VFxkOCl1UIg7OvT8R3NOD7+GAFfI1oxeqApn6Pp6kJ8lv/OQYMCqs= X-MS-TrafficTypeDiagnostic: PR3PR01MB7035:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6Iq9kZIA32fa3OueL4xCsQoMuRPVWWlWljpXYCNTvOnyqVGhcKld+5vTe4umIJLvaGxXzQXKr+n1N3WauZdKZEeb6e9l8vGULHZbxJB4s2kLCJuOIyaL8SSJZ7+Z1wcs4/aARbhmAS4mJCxyH6/m8MaVAmqcn4SYUYqXs5DWF7oIyqarfe5/oSIBjRZM0S71kwGJVNchXpz4zsBo47/NjBllDBNm7qtlUQtjNxmJlUXsvQYbRtBDStQ++0G+x7VqJRQKLiFjHPUvCBT2/dUbkMccJ1cBoSAL0jMlmlPcGv2Zzc/WO7zSd06NWJnu00HsmTXwBcwkFBfIbFbdSntun1z0d97e3K6kgBoCGAPgiKXhjMHJ7EAymgK01LgG3d9z29qp72EoXF4qeyZp3eKcPliFTNjQ8IBRJkHl5K+UWpYqXH1OpHm3Bb0sTUc5icNjVLsHtgQBU0UgH4dQFePBya1ZD1hJqBWIHgyjq+OhTVrKoD7ggweWXpGeuQhjaSIFQyElZsnSE0PtCYzoNyg1XIjLUWbeCrV0YlAb+TLt3Oiwt3M7N90XDNS3nnI+noMWTVYzYP8uPRYDSpUJfwpxoA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: j8LrAWvZ8sRGz1LHLhgd46UsHCnLtwJIM1ILtI+Mr9Xk2bl2YQU/K8WCuyDSkwwu9AcNcbgWr6gf70Il9ae0IbymSunz9mK/XbhOtUsWICXX9LFW39llyg57VnRx/aZEdIlOzaC2a/o2rm/aQ1FQ0qnWjcn22IcjHsGaYWxkKehp05rBg7OWZ+NY8TuP1KDPplXzA8iTeT5gt+AtparQeTcFIZ+PBf9MfzwUUv9pyAjcAWtvhclXtiHIih6iezvnG/buJcEB67QA+k3bntzDdIFP77Oc0rGbe0FfEDdPxC/ej1bMGAOKKC2RbPgZmzvLcRJCg+60M9xsbDdJjPm6pF+TgeW7wzqpGpXYmDQ7HXrHl6xq+mtBxAiLTe33WroVfqLsXcgdF8wE+pNwWRGmLv0FMkRlkgaGGAnDqJePLi/6Upog0CoJ2TBDFQvyTF/6W79LxheNGxCAdAWVsKbu+lkLRPjIjs+Pb2QrwmbdSix58u/ZwAcfrPGZSB5u6VyHi7bf2buROuJynaiuHgX0Eq2a0nAPbmj8Ed1fQ6daks5USEOjJTGZyygVE6APyhxgQi2lLOK/u8usUTNlMvkgqgrhhZdg8ptQZGGr3/M0ebxBwRc4+qXzQJ2ZqB1aqnpiC+fwehd3+fOPch8ouuh9J9fOF7DR0psnSUEG8fyw8PwO15GbRCvtkeOQSNahEMJmm/dotIcKs2EcL37heC3UcYEsCIXbEWAzRYiGVDnQ9UrTBHWIaQZH/jF/SROlpcWNTSUafCbuMwLjZXuRKWmx5wJDnSh36vvT61qncAiSAv9PUtfxVYrSecRligzqVmbITyWgpcALoHVbUw9xjkMQlx0adjeJBhqWSVLraTv1oNrXyiwjQ3phfAq/rmo9U+iKKwaNb4nuVyBqm8WcA/6sMEZqtdLS3Jj4ih/Ut9TRgCqwfgcLvhi1ZYvWdkEOU/la3moHnNXUr5CzqEyzzsigyh7GJ/3CrbMGWdthrvr1OHJSl13d37AR1MEOM8c1SndsHnWjlMGCyT5udF6m86CbqrWgId8YLSg6c1JxbojGZ1ox4BoZgvrA8Z/n/5No3R8ncYPFc7Zp9NsasSinVfUYdd+sfRQE6UkjGzt9/zrHaEMet6NDsRwS7tIuZMXoTVQrn09zUrCJtAwmTGnRJCmEMQY4hM3Kawv4ZsJ079f9SNg= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1e2ea323-6449-438d-5124-08da06bf4d3f 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:33.3517 (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 08/21] avcodec/mwsc: Use ff_inflate_init/end() 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: I4kQu91LlI9h This fixes the problem of potentially closing a z_stream that has never been successfully initialized. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/mwsc.c | 32 ++++++++++++-------------------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/configure b/configure index 464ddb019c..dd7adbfac4 100755 --- a/configure +++ b/configure @@ -2894,7 +2894,7 @@ mts2_decoder_select="jpegtables mss34dsp" mv30_decoder_select="aandcttables blockdsp" mvha_decoder_deps="zlib" mvha_decoder_select="llviddsp" -mwsc_decoder_deps="zlib" +mwsc_decoder_select="inflate_wrapper" mxpeg_decoder_select="mjpeg_decoder" nellymoser_decoder_select="mdct sinewin" nellymoser_encoder_select="audio_frame_queue mdct sinewin" diff --git a/libavcodec/mwsc.c b/libavcodec/mwsc.c index b62db67ff5..0ae99f6655 100644 --- a/libavcodec/mwsc.c +++ b/libavcodec/mwsc.c @@ -27,14 +27,15 @@ #include "avcodec.h" #include "bytestream.h" #include "internal.h" +#include "zlib_wrapper.h" #include typedef struct MWSCContext { unsigned int decomp_size; uint8_t *decomp_buf; - z_stream zstream; AVFrame *prev_frame; + FFZStream zstream; } MWSCContext; static int rle_uncompress(GetByteContext *gb, PutByteContext *pb, GetByteContext *gbp, @@ -90,6 +91,7 @@ static int decode_frame(AVCodecContext *avctx, AVPacket *avpkt) { MWSCContext *s = avctx->priv_data; + z_stream *const zstream = &s->zstream.zstream; AVFrame *frame = data; uint8_t *buf = avpkt->data; int buf_size = avpkt->size; @@ -98,16 +100,16 @@ static int decode_frame(AVCodecContext *avctx, PutByteContext pb; int ret; - ret = inflateReset(&s->zstream); + ret = inflateReset(zstream); if (ret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); return AVERROR_EXTERNAL; } - s->zstream.next_in = buf; - s->zstream.avail_in = buf_size; - s->zstream.next_out = s->decomp_buf; - s->zstream.avail_out = s->decomp_size; - ret = inflate(&s->zstream, Z_FINISH); + zstream->next_in = buf; + zstream->avail_in = buf_size; + zstream->next_out = s->decomp_buf; + zstream->avail_out = s->decomp_size; + ret = inflate(zstream, Z_FINISH); if (ret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate error: %d\n", ret); return AVERROR_EXTERNAL; @@ -116,7 +118,7 @@ static int decode_frame(AVCodecContext *avctx, if ((ret = ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF)) < 0) return ret; - bytestream2_init(&gb, s->decomp_buf, s->zstream.total_out); + bytestream2_init(&gb, s->decomp_buf, zstream->total_out); bytestream2_init(&gbp, s->prev_frame->data[0], avctx->height * s->prev_frame->linesize[0]); bytestream2_init_writer(&pb, frame->data[0], avctx->height * frame->linesize[0]); @@ -138,7 +140,6 @@ static av_cold int decode_init(AVCodecContext *avctx) { MWSCContext *s = avctx->priv_data; int64_t size; - int zret; avctx->pix_fmt = AV_PIX_FMT_BGR24; @@ -149,20 +150,11 @@ static av_cold int decode_init(AVCodecContext *avctx) if (!(s->decomp_buf = av_malloc(s->decomp_size))) return AVERROR(ENOMEM); - s->zstream.zalloc = Z_NULL; - s->zstream.zfree = Z_NULL; - s->zstream.opaque = Z_NULL; - zret = inflateInit(&s->zstream); - if (zret != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); - return AVERROR_EXTERNAL; - } - s->prev_frame = av_frame_alloc(); if (!s->prev_frame) return AVERROR(ENOMEM); - return 0; + return ff_inflate_init(&s->zstream, avctx); } static av_cold int decode_close(AVCodecContext *avctx) @@ -172,7 +164,7 @@ static av_cold int decode_close(AVCodecContext *avctx) av_frame_free(&s->prev_frame); av_freep(&s->decomp_buf); s->decomp_size = 0; - inflateEnd(&s->zstream); + ff_inflate_end(&s->zstream); return 0; } From patchwork Tue Mar 15 20:05:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34771 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314416nkb; Tue, 15 Mar 2022 13:07:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxKwTDLRNs8xYwO98MBI2Itc15uw6dgOXOTaR76QWngvRfNcJnYoPqDtXVda+HtuD1xlNW0 X-Received: by 2002:a17:906:b7d2:b0:6db:385:dafd with SMTP id fy18-20020a170906b7d200b006db0385dafdmr24721145ejb.139.1647374852267; Tue, 15 Mar 2022 13:07:32 -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 t8-20020a056402524800b00415b3b4664asi28350edd.221.2022.03.15.13.07.31; Tue, 15 Mar 2022 13:07:32 -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=EBequ2Cw; 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 05E7C68B080; Tue, 15 Mar 2022 22:06:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065070.outbound.protection.outlook.com [40.92.65.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8966C68AF33 for ; Tue, 15 Mar 2022 22:06:36 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nhifhK1PZCN/F7yK72sOrJB4F6HKLy3BfgI3BK48t4uHLrOTceeyaEUbY8DVX33ynvNtN/da9tMyPPF0WS36b9zWV4buAOwPt86eFl9SzPUKcYOzvBdipG04QAK2HhZayzRorpZ6lipT2Nu/VWHO8HCQur+ePtFJNvppEohzssDPd1Z3O4GGfiRdTmtQa4BM5BjGaUDQKMjHmgxnUu1ECk1XvC+lrPNVblvVotDlLJlkFuhN/Qw2pdyrkgxhYlHGVkaDbOzxu6mz7sROi7lcnIBLbis3t986Wl45BtYZxwFRmPpItDQHL1DjfPfqNvF/VfEro4oNHhu7pe31OylqBg== 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=vCFvx9G4fED47lwNSOoK07iZEYwAO2GRH4vkwypsV6o=; b=W39KfZQ2mHsLxdVGhxhswQxDrQRpEl/rJDm6GjTToZ3KhGgWSvBzXSlIlRe8OP39CmjG+U249Kwf393uGTb17FUVWx6ROzqcr2eT4O/0M8T805c7FFRJ7wWaBaxV5/pra8AHfmOYS2Ajlhmjr7JXAnEGlFzplqC35FxpLzG95NX6fCE6cwEKhPblTPRPRNVOtDNxGB2f2DMvCpH8xk0fHT6rw5cNzfCOw89a9miP02roKpbpEmb4KX00kof97KrRsth+K/2eIf/rUKTpPf4U222jma27NX2orU7os97nV9J4r04flHaelm4iWKP9KyMxMk+Cunnp/ODyatg/R49kJg== 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=vCFvx9G4fED47lwNSOoK07iZEYwAO2GRH4vkwypsV6o=; b=EBequ2Cw1h7njpjQygnrW4BbhU91bNvet1l5INHsD3lTDnew86IQMibz9atA6jTqP1lop5jcXQGKCqVPMUnbdY6vyIT6U4g3Ed6fhX9PcURvLvYRHo0MLoZ2lLG3oF9Rxp2SSJJff0ijrYP9KM9tAE2wK5j8zZ9pTqFuBsBEoLO68O0wjqv/PowayXmF3DW5+GskB2d142yQN26lBND+h/FPzg/5yefag8e1aQk/0BAiynvNRcmNaenBEAHBthAB8U+IREB3A+jroQUdP/wRUwfQyLEKeS1UJ2Jt02T0xEuTmm5bSphqEIW0N0PfLZrS0UrYqvBIXMn1ar5c8fMEmA== 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:35 +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:35 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:59 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [zlkZF/QTBfIwVcS/vnG4hspTNs9vm5Kd] 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-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e5077537-7328-4bd7-c313-08da06bf4e40 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVDy4rDU/3HqsNTIAxbwtq2DZjat0dSNhtcY80/I2i+ICIBIXyXk96xtIkFGdoyA1lH2qI/pnlD70iXozGoYVzPUDke6t63cSIN8nM6OHiZe5hSbeq1SAiZrBlKkOJPCSfn7zMVdymXA0u+NGcPPlCYW5KZMrS0LvxgWzG4MHGaPhTmgJ8kVip6C1aA/Ou+8CdOafUAB9HkHBKwGU8KzsYn7bcqTAHyKQ+CplGoSwg03QiT3Rs71aORpswOi0RV8JNFeWavZVwpcRx8Ziekntk2B/EtW7d+SirWO+Zq7GNHZGwzTiMwvN5z+0VvBPFtBuu6AnC4UAP1/l2OjlezSvFIdenvkebljQVQixKHcC2fD62uF7lkUKBQHv9PY8lR/fqYDSsz1AWkEAudQFC6LSfd2QKsSls4aCnRIPjWFaFbpOVKEJ9BgYvX5VrQMMPj1mKQZDwjqBbWmlRD+kV0gfNpopea3qdb000ECdxXu1gX+fHEuUzNmVXwTjlRsL92ka5OZmD+Epn3YZjP0o5mbUfdBisVkh6v4jN/vk/l1+E3M8SWel4V6cDxXAALrTzPe82HsIsPQ2qAX0B63HBeNKa8qqdxxAC9pdw2zFYXmgGsEIPphljSaTUN5BkFJPHnJntrJrJ16/2NQeOypuASg1Q5uYtGkx53cjgtMMX5NaVSD6Q3ksKRLPh9a3x2kU83xWE5YK+6EF0p9eezX6kCUMZWVQX2SNfIj1prawbGuQ2xCA= X-MS-TrafficTypeDiagnostic: PR3PR01MB7035:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: J1+Fml1jv5+YpwZKFD2Gt06C9D4OyPEICAZwOpWpHVpHS5bpl5iOpycQ4VNq/wXiRWey+j0R+Swm8sw547WoTKWSAjmP0Wa6M3VfoLewkKnCJ5Ugjrp9UfBJ0exrTiKhriEBwz948BUkmiXc5U+citKgfnzzE1xdHdYlZrN28HzkyewYsSzQJpUJNqelUcvWdq/nVbU8bdIUehc9Ki6OEBcUNcekLDN1DATkJQR4fHRrtly69extaJMSrnJDP5Zckt/QhRRjBZBXut9VJpEsdHB2pYZQUtg2h316N+99ucCSMLLTDJDaUh3QcNJn/HKpUKL/pQB/e2w3EZn9BaEYXH5hRGAqi5XJtgAwbGrAvG5Wmb8SWJy7nkeE7+J7JLmNTm++sNpKDDAmCH+zsePbPBA5URZPrTjL0j9j0KPDxmPFqI01oek1OmScITJB/LjMaIZ3kPfiCzKiwtycHvWIgiITXG7X5c1Eqjcg6I2orXLUAaZ4kRb8uwqP579ErDQqENqB5T+idDaZdehiNNUEtN8FLyVYpXxKo/3iWFWy/xSP6t1shGq6MHmCE5Ufiy8lLNKV1/p2I0nx70j70qvAEw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tGK5RBI4io1bROX/3BCkdORjgge2U9OQIU/reDR+mf100FqyNmzlr06CB+iC4c8PfC46sMTI4uLFVy9I1MnAP310N5Yz6j7T4lmarBejfVMBWM1jPQxeXfQMdg4Q4udsII9TS9wNNWQRKk/vH85HVSeNnKsnp84DbCqWImB9XVj3Slr7aeE9nvHTkmzs8n3GnTou7hUpuoNzzOROlJRk981NP+2eYGC7m/HrMYcnOUHlBHwK3Ipj2emIHnvBHlL0QQk/2ks4thr4G4vsAN9BLyStWYWem1OYOMI2HAAHwQC23AfLJpH+srg00c97lLW3IBq/rnWob6qR/u+hoxiPoeACWrBSWl7tl890VZ9qolEeTyQp8jm/b8qlAFoKldyaO154Ih9dO+rtEVhIixMTPOXBQd6akG95hvVOJ8bpKSqiysnGdbd7YNf590FvzDSqJlVEWwPd/yrbBSwyuo6AvD594m31h7/UC32+HOuSbMf6ldX+q29z2U/fuS+NDIOijTbW+p5Kl/0/7Dft1PEvjHuYv1RhqPF5VjJHrT5uoYI1wXYHOk2LHqSR0BZ6iUSKLuU6rhkBcjTzcHrpZq69Q7l9q+iqyGfOoO9U6kbGE41u4oAzpU9O57+t3MdmVVzmiMIl6UajsAW9Acd24n9tAJz3w0F2BI0Rkd0aYD1Z4PtFV8WFWkikhIS7eXmQGUfI5nyCbi5X+hgsdPWq45+Sut9jDiXImw8NN3YyZnKETgMPiwYgQrPt0yKuXnl9dh3yOVqRmUDybmP12W2imeC7q02dhcdVPcG/eEhkzfC+0goOcKO8+e90EcOnMzfvajTuDPz0Hai4cKyyYTybaDK6sSM7hiPpFC54ai/iqesFnkYtJdA9SGa/QzSHZquYkI9ocry0jyRt4dmFmgtoB8HQpsV9tjYBKYCH3Gymz7OkIRSuJKGPQWhAXVjgOtiQynHjyJO+u+0lkjFAF4xdZC4z9zkz9gz6701Iwf8JeDcKvZqnsvGSWNsCe8ZqI18Y1lawejhxFW1C9L4QfHM1lv3JhT6/pbY9Q+Qqv+eSJCUgpZYrWS/z4Czhqg15FrYIgoPI4EoxKr1C+pYMKHdYS8j0ZrDJCkZ7mTO4+dBpND9PMSOuRABMgKgRb9WgEmePE14P25WDPiWgqIyEfImRSy5Yp2/LJfTpdLW7ft6Vw9n7BO8= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5077537-7328-4bd7-c313-08da06bf4e40 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:34.9465 (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 09/21] avcodec/mvha: Use ff_inflate_init/end() 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: zms4y2hNoNAI This fixes the problem of potentially closing a z_stream that has never been successfully initialized. Signed-off-by: Andreas Rheinhardt --- configure | 3 +-- libavcodec/mvha.c | 30 +++++++++++------------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/configure b/configure index dd7adbfac4..46b02275ad 100755 --- a/configure +++ b/configure @@ -2892,8 +2892,7 @@ msmpeg4v3_encoder_select="h263_encoder" mss2_decoder_select="mpegvideodec qpeldsp vc1_decoder" mts2_decoder_select="jpegtables mss34dsp" mv30_decoder_select="aandcttables blockdsp" -mvha_decoder_deps="zlib" -mvha_decoder_select="llviddsp" +mvha_decoder_select="inflate_wrapper llviddsp" mwsc_decoder_select="inflate_wrapper" mxpeg_decoder_select="mjpeg_decoder" nellymoser_decoder_select="mdct sinewin" diff --git a/libavcodec/mvha.c b/libavcodec/mvha.c index 4048e4625c..05ddcfeb8f 100644 --- a/libavcodec/mvha.c +++ b/libavcodec/mvha.c @@ -32,6 +32,7 @@ #include "get_bits.h" #include "internal.h" #include "lossless_videodsp.h" +#include "zlib_wrapper.h" #include @@ -43,7 +44,7 @@ typedef struct MVHAContext { uint32_t prob[256]; VLC vlc; - z_stream zstream; + FFZStream zstream; LLVidDSPContext llviddsp; } MVHAContext; @@ -168,21 +169,22 @@ static int decode_frame(AVCodecContext *avctx, return ret; if (type == MKTAG('L','Z','Y','V')) { - ret = inflateReset(&s->zstream); + z_stream *const zstream = &s->zstream.zstream; + ret = inflateReset(zstream); if (ret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); return AVERROR_EXTERNAL; } - s->zstream.next_in = avpkt->data + 8; - s->zstream.avail_in = avpkt->size - 8; + zstream->next_in = avpkt->data + 8; + zstream->avail_in = avpkt->size - 8; for (int p = 0; p < 3; p++) { for (int y = 0; y < avctx->height; y++) { - s->zstream.next_out = frame->data[p] + (avctx->height - y - 1) * frame->linesize[p]; - s->zstream.avail_out = avctx->width >> (p > 0); + zstream->next_out = frame->data[p] + (avctx->height - y - 1) * frame->linesize[p]; + zstream->avail_out = avctx->width >> (p > 0); - ret = inflate(&s->zstream, Z_SYNC_FLUSH); + ret = inflate(zstream, Z_SYNC_FLUSH); if (ret != Z_OK && ret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate error: %d\n", ret); return AVERROR_EXTERNAL; @@ -279,29 +281,19 @@ static int decode_frame(AVCodecContext *avctx, static av_cold int decode_init(AVCodecContext *avctx) { MVHAContext *s = avctx->priv_data; - int zret; avctx->pix_fmt = AV_PIX_FMT_YUV422P; - s->zstream.zalloc = Z_NULL; - s->zstream.zfree = Z_NULL; - s->zstream.opaque = Z_NULL; - zret = inflateInit(&s->zstream); - if (zret != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); - return AVERROR_EXTERNAL; - } - ff_llviddsp_init(&s->llviddsp); - return 0; + return ff_inflate_init(&s->zstream, avctx); } static av_cold int decode_close(AVCodecContext *avctx) { MVHAContext *s = avctx->priv_data; - inflateEnd(&s->zstream); + ff_inflate_end(&s->zstream); ff_free_vlc(&s->vlc); return 0; From patchwork Tue Mar 15 20:06:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34772 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314527nkb; Tue, 15 Mar 2022 13:07:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwMTFi4dwCV28vz/eaYHwpeArv9q5AbLboMcn7emFpKEnedO3kFtqqOZw9Nanfl+neIC5ih X-Received: by 2002:a05:6402:4396:b0:418:d776:14c1 with SMTP id o22-20020a056402439600b00418d77614c1mr2211769edc.127.1647374861927; Tue, 15 Mar 2022 13:07:41 -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 g3-20020a056402424300b00416318083f9si20051edb.359.2022.03.15.13.07.41; Tue, 15 Mar 2022 13:07:41 -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=uJKa5gkK; 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 DA37768B0B4; Tue, 15 Mar 2022 22:06:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065070.outbound.protection.outlook.com [40.92.65.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B461868AFC2 for ; Tue, 15 Mar 2022 22:06:36 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OO3sRzehZa8AFFdDUE/2agMFzm0y2c9pgJptON11iCc9MBNJM+OGt2XG0g1hbtCk0FCRuj67S+ukFDhKR6B2OQHo8MlxpXJcYurJU4l0NWKmjwDvhQwSL0ZN1KmDvyT1QLe/zX/ID5DJmFJ4N5XD2BsiW9/omYgDgTphr0omfZtecIGx+Xda60Ss+S0zPaqhHJtQ/CR+3hYtafVQ4RqItW0qGE2fyaQDL3xoAg7ZnRMSAh+akbVdXO6tjRtJ/m31uhn/aLbPgHM6BmrWRmKPpwBM6K3ccjxzFPYXIQYUu2eZ+71Qt45UP3a7v5FaXdttoIo3LQ9sPaTgEPWxZbm7vg== 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=uXCDzmnjujOyJIiKeUNHELAPV1ouXh9qXTBSG0B5RIU=; b=Dk9J0SBCe+MtYXJ9DaazJrmcr2LyCtDUs1cSA0dafQBUG0+3u6k9N1STSyGz1Qn2fqwf2EM1/ndHz45vuekbEdwl9nr5aH0ZlOKwCu/l0uQJF+8pjWfciDK3G8olerw7I6GCgBwo1xH6EpyEKoiXXHeA6IBMqNAzFaGEKYMIrLtacTVN142OG+Db768vxGEggFpzDzwBY9B7vrqa55MFQpiyrnOS0GrAC+w1S3pNj3LDv/cCfDqKtBHWmcYetfE7l25d3DtcjZ9WwE1mmpn8aKr5hPGZJB2GBCVrPstma0Jjzox6rMm1/r8N5UATAUNGR2GfeHC9KGPYypM1/1j1SA== 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=uXCDzmnjujOyJIiKeUNHELAPV1ouXh9qXTBSG0B5RIU=; b=uJKa5gkKVyDqJX8CFeP+QD8+EwlYosajKkcjdJ7omkHZiNpMvLz4KXhiP/uf5oAte2Pu28/ry+Oucpi3aGgQ53A5aHZzg79+I0RmbxiBcP07abZG3uVsP92wHRwJga2V3oIiCqyE+PobFbyK29tvcJhg8wnUm6qWfuOsK9ESLBdvNk4IGDI/xLXgGBU6eZyubK2UAwuJ+fVZQihNSIOB6quuhOukgRjhwihJP+JN0K04vOqDHevgPYNbEn7cBzZTBYdhmceiOkGLH5YeCkurDM6ZT8zsA356eLunRb8uZgVh/MBxlHQ29TCNFnnrDhwnPmNFiSHuVGsLAtzcxV/QPw== 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:36 +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:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:06:00 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [wObfmiFNqSoRLPahwYO1d5sDQ0a2R09Y] 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-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ef2e8588-cf8e-4769-0a20-08da06bf4ef1 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVDy4rDU/3HqsNTIAxbwtq2FTvUnbzff4wqgjMAhWVuyiQdicGErTcAn11dVRpTLQ9utVijjOmYqGTV+3pjh6qLjEYOBGQ5h1CK0iUpvajxluNoMCpnI9QvwJdpPzBxlrOemYxEdCxOsLVBOkKZHR8TQHXsBvgzp8DhkvcwiOyPPkqvGKuSAZWZp4gAtMtkXt91dTjDePXlIGj3rFvFWs9q12YGoNCsyg6SZrdlnVtjCnpqnq+9oSawIbpVlkUj4P4QAUxww84phvGc5ny1WxchKmf0cv1OynOYrsSkl+Rgf5qVucxVhevNYRFOKQlme4rEDeahccHgzLw7yDlhk1OLpWVwzP/61yqYXSMu5MXODocBXzMPE6f4oIklOkzqR3YSsQ1S72EAWp8IBrw5vXuN+38XNK9RNc5VGLkXupOy2f5+mt+JmMLShntyZoLrx96VAd6KFrEXL5KMylVRozj9mDpd4WSW/WmBeqEXJbWAEoii0HtkZpO3o3elXwhb4R8iWjhL8HodJZjUwsEf6yMUMagUUstCy0OmXhrxEXs+hFORzHja7RUJ6iMKWKPA3O7Zmg9Uu9WjQp6ko2MWUfiNLrk2I30tJKH7PzCHvb5/U1LtSBVpEwiZSjAeAuaAwA9hXeohL3UGZChRgk44xgHwU6X+SNYQM2wUGfpv+pTNdbwS2tz1a9Z48Yzrk9+B0QpleXQfxZ024JbW3IPYunDaOl4mygNbtXrBajdqdZVz0Y= X-MS-TrafficTypeDiagnostic: PR3PR01MB7035:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5wNSN8l4vLrqAjT2Dkk0k0X/OcbPUrfW7x8fkqvwhSCsX4co+zDLSEJ8Q0fqPl1t2rX66muDGu0M42PeWenydE1WXmuhhOumS5rvFkn4nc/088U9R3tIUty0OGEjZFrt4L1L1HjCflszoLgS9EhKJ3e6aI8rhx/5954EK/DmXG+43fzUtexA0TGfioOV402IKlk+PNSgfiiL3Uy5Mseu0L5TzfADDulh0A/m2jYSiUu0gWcYjWMcSrR8ABMHfLOG8mm7H/9L0cVFLXfJGBeX9v9q5s+/+RRVtvEuyiM5jbjWT72ZH4mWvDp2av+PFKkqrQQe4MfqJG89MagsV903mO5TeKmc1OK+Vl/gIRVULeXvousdhI2An8sPZU8Byp747N60DnlhG60+zuRihFLWmCCAobhwRfmgesSi2lLOhzhCVxxwwZQ9262nuEOGLcGiMyqUQL8PP18tTSzUqxJ5hHxKbVtFjRscxxBlq8JTYD+1vaZWLcIzl3i+HJ549gCQcMwoFZQ2KRI/+VSLKSGanfJgpscWY79pgkm923A0zN8G1EAVu1hv3aM3OD0Yx3Sw X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +xp0SPkpFZ0XIZ1QObsKnq4+yPpszTnFNdzHy53U7+TjPjpIkBj9hb1aiDHR2zD1CproP7zAbrveC4ob6topGRtI6z/K/PWbhw73x21aFaNiInESuBpTHgPFPumru0a4M9nDywnZnA0KhyKXLKkqUJaceQCpQwRjikeZgLf3SiNq14gFhgmQBNyoBvJPb1VDGsHkiOSv6CNKgGH8xDXl5tKBmRNeQo6bxc9AXVx5X9VBfV3HUpzP46e6evveBRj2SXJ2gPgDDb1W624jom/Y0u+2q7XjDTIXhcEvxRMClwWo8m8O0cFKzK3XsmOwb2AHVW+9i7cc//UrQ7WdaBCY33l4o+zFclmPjRUcMQwIHCeHrfIb01XKy7xGB9TA1c0ZH4L1laT4BuqEPvgzBHUPWwhrGGwX5pKj/Kyy+mocz2kySIES7ZCUBDBKxMOJGRcfDHOS9hzkOcMWmpVqODNWxLX79gmoYGUo6NC5nZhgZxlloBRu9r1RFLJE7kG5V7Kpzi56wQoblyUJP547yilIXXq+0yM1zSGbe2EXjVTnFHS7nCgXNqk+zWulG/ek5SouWinxcW4Zb9vVb0lvg+yx30OrJo2LceRxsX/VUqlYSJd4+BVLCX7adKMG7ZOGD/AHvAAsX9fyc2bhYeMl3F3aQbJKLFJxIbpwY6W0CgFa2X36th7N44+NeKxqYf36d+UiM8gE8oCpbRE+DkUl6EM3iE9wNDpAtX5Qv1ahWC7tkLtQWlH5fU+zt9lND7sgY4QYAhbpNY+jGzsEwBvXQBNXhJ2Zkyhx6mwQIGtljifeEgFB0ZxiSSTUn4xpc990zCrL1OkIXneKUzRM7hOsOwxsKpePU9FhKhxZ3+MqxirMF+1zV/mYB7jBoUgyznZiDn1mHv3GJuG3dGFjwDfIJyHLsVnWIKYADYM4W6iAEU3WjYX7CPlgujkAdF3OPeq/x4GSQYewcRh91c74942apCTEJn8vJf84Oh4nGaff7uIwPJgq/++5x+grXEXMbJV3GIM1yv2pDJSmMehWkSEqeHrvxl+XyTuC01OkKs41PNFNQsD/n3rlDLNQQMFvjQ2RpAGNQZvAwCGQbXLs+YbGuHDwoZtVrc6ngqtlVqR1GOqsVhokt4FLF46uUeQISphOSvjmZCWpn+p+R4vEDDozpAR6y2Vkb1b89Tpfxlch2w4zdHY= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef2e8588-cf8e-4769-0a20-08da06bf4ef1 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:36.0848 (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 10/21] avcodec/mscc: Use ff_inflate_init/end() 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: noOk2Y5p1siM This fixes the problem of potentially closing a z_stream that has never been successfully initialized. Signed-off-by: Andreas Rheinhardt --- configure | 4 ++-- libavcodec/mscc.c | 33 +++++++++++++-------------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/configure b/configure index 46b02275ad..c79908c1bd 100755 --- a/configure +++ b/configure @@ -2883,7 +2883,7 @@ mpeg2video_encoder_select="mpegvideoenc h263dsp" mpeg4_decoder_select="h263_decoder mpeg4video_parser" mpeg4_encoder_select="h263_encoder" msa1_decoder_select="mss34dsp" -mscc_decoder_deps="zlib" +mscc_decoder_select="inflate_wrapper" msmpeg4v1_decoder_select="h263_decoder" msmpeg4v2_decoder_select="h263_decoder" msmpeg4v2_encoder_select="h263_encoder" @@ -2935,7 +2935,7 @@ sonic_ls_encoder_select="golomb rangecoder" sp5x_decoder_select="mjpeg_decoder" speedhq_decoder_select="mpegvideo" speedhq_encoder_select="mpegvideoenc" -srgc_decoder_deps="zlib" +srgc_decoder_select="inflate_wrapper" svq1_decoder_select="hpeldsp" svq1_encoder_select="hpeldsp me_cmp mpegvideoenc" svq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp" diff --git a/libavcodec/mscc.c b/libavcodec/mscc.c index d9a6de094a..19cfce796e 100644 --- a/libavcodec/mscc.c +++ b/libavcodec/mscc.c @@ -27,6 +27,7 @@ #include "avcodec.h" #include "bytestream.h" #include "internal.h" +#include "zlib_wrapper.h" #include @@ -36,7 +37,7 @@ typedef struct MSCCContext { uint8_t *decomp_buf; unsigned int uncomp_size; uint8_t *uncomp_buf; - z_stream zstream; + FFZStream zstream; uint32_t pal[256]; } MSCCContext; @@ -132,6 +133,7 @@ static int decode_frame(AVCodecContext *avctx, AVPacket *avpkt) { MSCCContext *s = avctx->priv_data; + z_stream *const zstream = &s->zstream.zstream; AVFrame *frame = data; uint8_t *buf = avpkt->data; int buf_size = avpkt->size; @@ -166,22 +168,22 @@ static int decode_frame(AVCodecContext *avctx, memcpy(frame->data[1], s->pal, AVPALETTE_SIZE); } - ret = inflateReset(&s->zstream); + ret = inflateReset(zstream); if (ret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); return AVERROR_UNKNOWN; } - s->zstream.next_in = buf; - s->zstream.avail_in = buf_size; - s->zstream.next_out = s->decomp_buf; - s->zstream.avail_out = s->decomp_size; - ret = inflate(&s->zstream, Z_FINISH); + zstream->next_in = buf; + zstream->avail_in = buf_size; + zstream->next_out = s->decomp_buf; + zstream->avail_out = s->decomp_size; + ret = inflate(zstream, Z_FINISH); if (ret != Z_STREAM_END) { av_log(avctx, AV_LOG_ERROR, "Inflate error: %d\n", ret); return AVERROR_UNKNOWN; } - bytestream2_init(&gb, s->decomp_buf, s->zstream.total_out); + bytestream2_init(&gb, s->decomp_buf, zstream->total_out); bytestream2_init_writer(&pb, s->uncomp_buf, s->uncomp_size); ret = rle_uncompress(avctx, &gb, &pb); @@ -204,7 +206,7 @@ static int decode_frame(AVCodecContext *avctx, static av_cold int decode_init(AVCodecContext *avctx) { MSCCContext *s = avctx->priv_data; - int stride, zret; + int stride; switch (avctx->bits_per_coded_sample) { case 8: avctx->pix_fmt = AV_PIX_FMT_PAL8; break; @@ -227,16 +229,7 @@ static av_cold int decode_init(AVCodecContext *avctx) if (!(s->uncomp_buf = av_malloc(s->uncomp_size))) return AVERROR(ENOMEM); - s->zstream.zalloc = Z_NULL; - s->zstream.zfree = Z_NULL; - s->zstream.opaque = Z_NULL; - zret = inflateInit(&s->zstream); - if (zret != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); - return AVERROR_UNKNOWN; - } - - return 0; + return ff_inflate_init(&s->zstream, avctx); } static av_cold int decode_close(AVCodecContext *avctx) @@ -247,7 +240,7 @@ static av_cold int decode_close(AVCodecContext *avctx) s->decomp_size = 0; av_freep(&s->uncomp_buf); s->uncomp_size = 0; - inflateEnd(&s->zstream); + ff_inflate_end(&s->zstream); return 0; } From patchwork Tue Mar 15 20:06:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34773 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314644nkb; Tue, 15 Mar 2022 13:07:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxF9HJ12Zk+mqjJVMx9j8fuMQ+qmpKsP+QD/Vxv9tVovrUbG3mVCXO3l53eYLB5RfHfekV9 X-Received: by 2002:a17:907:94ca:b0:6da:b785:f067 with SMTP id dn10-20020a17090794ca00b006dab785f067mr23667643ejc.654.1647374871946; Tue, 15 Mar 2022 13:07:51 -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 z13-20020a1709060acd00b006d6e5846a2csi11048425ejf.740.2022.03.15.13.07.51; Tue, 15 Mar 2022 13:07:51 -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=O7IePCQm; 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 CA8B068B02F; Tue, 15 Mar 2022 22:06:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org 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: xyIA75W1Y1E8i1dZpUPPDZKSEzuPhoDLQIF52Rb586z3UxUJFz5Tma8sW62LWC1jM1aTgUAH3CrCTSx6vcNKrn3ik+J0/IH8uDGCjoF6BOXDq0ChzgM9K/Bt9ZEyA5GQQFVoKVLHbFNXel8i4jbHU/tEkwRJCk0ZlW5566OlNyL6QLzAal7djMZY+Upx67mtXDprrbwhJVIBnd+LBH5fJkDBVhFgZzZ13kE829SJK/GEs4n6cg1Xz2u8k1O0AVQmJOpLBilJOhGGkAdf6fDH+t91Aw+jhTdrXypMFRpZMGLSOI6UQ2dJVKwJJjRmAv3oh+InTHkTgd4qDnTRZbrNpF+piNAQwDIgIWpYrH8lNG8Cf0VModRR7T/FF8gJ8hcbdaw7YDUdhQp+Hyuv4755UKZp1q8qAgITPcZKVbPuGoFkM5McURQrULMLhRvbQaeQdly/dLB7phXOiCiNtKX/rwFQ77gDAlQ15mcfz/tro0CZiHZuD80kgP9EgCkByV69x+GLnQ7kFmkYSOILRHLliah0v+PqMZXUyPGNHxXnS/D4OMoaqShlbPEqXbZPOyEwfmRQXj5jlHiEayZMz5PlGKYhGVEzpXKdoTt+ngKCbhCsaBpbJblFrUuBrcQfeYjmpzBaULY6y0nz8OYISVqDl0eduysJd1qcBXW4xASps+n/WEweW2gdojAMyqz4fMXqj+2eBl8xtsn266RdbOyDvT4r7UV5TqDIAdrfXZolZAWi+Ok3+0gxrpbwMqAUcELbvXcjt2OVsBA+qq2t3ItaQ1crByoruCDB9HD9Eymw8Bojt3IFEFAIxigrvoYg4J3Cff+hOezSBjsw1vtgY2P3zCa9FDUClNldzl7MFix06poq6PQxrh108bKdPQQRe6K6yNGJxsxSdpIms48GthvqeRuFGVN5u1NHg30yQwVI/UPvfoViJ8bdJd5Y2XkUjyKtOS1En8WeFWKDAl14MS6l5kH6vemJZ8UxmaWxlJNepjeBgZn4S5zE59EjIFi7MhhMavHKXjfOlkPE9NpifJy3puzR79BaHLXCuJzqwJZtZ6yawOZFP8tq5qEcUnMfNfaCYfq/InIplVxRDGZgNwNFpOfOz/GspPjby1K/IwYy/poXl8CS7WTb3pCuLf4xIlsyERwRJe2MM41pXGwt9pz8rUYuqFG9BVItORE4EjJP3go= 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3t1NsreL5WD4 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 From patchwork Tue Mar 15 20:06:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34775 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314856nkb; Tue, 15 Mar 2022 13:08:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPvOuIom02arc6KmnQroYy6dVUD5gyjR4ZXZ0xDLJDA3WCuvH+j6Xf1/co01E5flSpSTWH X-Received: by 2002:a05:6402:1148:b0:416:a4fb:3c2e with SMTP id g8-20020a056402114800b00416a4fb3c2emr26607965edw.182.1647374892347; Tue, 15 Mar 2022 13:08:12 -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 bv9-20020a170906b1c900b006d06e3761c4si11568283ejb.986.2022.03.15.13.08.12; Tue, 15 Mar 2022 13:08:12 -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=DWLZ3SwP; 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 B43CB68B125; Tue, 15 Mar 2022 22:06:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2108.outbound.protection.outlook.com [40.92.90.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4728E68B083 for ; Tue, 15 Mar 2022 22:06:40 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eaN4PGA+sOGIjy3PQ1W4dmc7u7kTMrMaqXUp0H/aTqGszQFaUJg+GVPuvFLnHOd1dwdfv8yv/b/0EXWKn6SNWpAXA53NqJJroqaR1pNnZJeyMWNOxJb/uyHfUIfPJFuV9C3Zd1pXl6qrKhJZXiGfMFMBrbQ4S0HuQYi9aZYHwuLy+SAexMoDPkw+RGJ8vK1UcE305ZRDB4yBBpPKikkzjcZxKPdgh8cK+LICk9Y9EINLJm/Gf9jUeIUWh1HP4Nz1Y0ca0inlZ3grFeXh1bqkeFDSdXyr6wd9p9SQfoTGpcFBi6bdrMYPkq+FlRRR4psVxeRVTD0L//jK5FvD4NXfDw== 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=CFGisbQATANcUYnEQjLUfF2PMQc15BaWeiL/EqvstSQ=; b=aFmwTe6zuaZ37z/uI1YMhVb6llefz5BgK6WZleCanvvlOXMQGsqBYX3mbGDhQkLzmuMeQ0C1qfWs7J85kkA8hvUfc+elF3xoj2wSB2OmSO15CqFaYdmdQq0s2w4acSMX2gaPjCazePdkBCOhROguGzk1sEbl6JlDP1tDB9P0Z68S1fxgGCUHSEYGRd8vLc/KWCyuQ5LXZReTfauqXgqXpDBMH7AVAXcBxk4yBa7EVK6gvlBlrHizJr0txMilfK87LPIbm7nH/wKnP+7CVPoZOEpf7SRYkGGfTgBC3IcNudzjlOhSuqpNCfAKythUg4hfzGDqrCdbkUlSIQyg4kSDCg== 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=CFGisbQATANcUYnEQjLUfF2PMQc15BaWeiL/EqvstSQ=; b=DWLZ3SwP+aaVW9/RoO7O/ZxYw8euHfpxX46/tkW0hNhBnYEbpB/Yw9ZHOgWQbD49FwWAZCeTRlUri2Ad8yoIVuCswsY2inqC++sl4C1IeB+wHgKg8i2ElCz/if2zKYx6sXTEUVC8QbB1kEZcZ298tliYIyBDdNHAWEcta9rL8lnv+OQKWB1nk19h79LZrfWCUkYu3fl+AMhHz6+UlK7RW/LpKq6UiKhQLAGhb0dLiZ4T4KthDA4LTvtnFJ7maJ1EafJgwCp5Dof3eA/GSRctOKmXkHFB1BhjFmUjZLrapSiy2pDJULACBpEVFwfKx7Aq3dtGdq816WVj7k1si/mxcQ== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PA4PR01MB8947.eurprd01.prod.exchangelabs.com (2603:10a6:102:2a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Tue, 15 Mar 2022 20:06:38 +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:38 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:06:02 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [vX8O5N/2tttSWwy8MbxxlwQp5kwobplo] 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-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a98dafc4-89c0-4f5e-81f8-08da06bf5060 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVGls4IvjQtbz87ZfmNi2I1M9bvygoMfsXA2dC7p+o9e0TkUsflAbqUJnovToAU9S589bE0Wob+FfVwX7oBtDzprU9xvIlmKFx1rvBA+bM4Sp2geJfWmZfzhoOhXsqaex5fNS8htL4D7I6zzcsa+mCObmo00HFTR+Ov4iQM0Tf59022hgVOGimjTk35vi8/dTCniLWWsW4rJaJ4l/cWwnECI4I+wWaQ1P1p0QC/UDImLfRwghJpjrSM4y7chaW1PzH4PRb/NY99oF1qVnuz/pJEhJeOK338cifgbVpSb1LrglF/agA/snP/uSK4bOv3IgdiSTFEkKmr9ejdQMIJwft5TnvGQrlP7ADtaSS6ep/s1+PARNB7T1gmzS0j1+W3KoyzlZxID0Dx3O9FEBFQLyBN7iG2QB/TtRz6ZKeN7GDXhiQ+y/FLG+nIpo3wObfjv8eYBU0rZfWg43e1hL55UOLg7yBI7ndnE7z6mJ2xUceN7dA9vc7g6HEdfUgadi2MO0cU8CXppNgnJRl7L47PyDqWGeb1MbwAuZcIXusdsDZuAqk2T2QGG1ubq0m4vYp1Rou1+zxS3UykyywiBDkOrcLfNb6Tg2Iw/CRp91dEDL6L4qJwPnoD/R7LphX3kV6HLOSXBmigHoU7ClLseeIqZMGRl8uKUOjkJNmxiVcg4v4wzCMah6JOfrQcc65VEg8FkH2Q+iYnPWm8L2SGzAJu86G/bTE1lxGM2Eg853uNkJD+WU= X-MS-TrafficTypeDiagnostic: PA4PR01MB8947:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AUujg7qhbAljAONQGSO/3TMViKoL+LRXNH7gZ4fs+HBWHaJVGf9/ef08w4hxGZ3MuhyetZMuNTFecjP7m5clIeVZ6qqG0m5zDLJhAf3xfgOxk1mFhTQ6FcGl4UGzZGDriHgjQLHiC1MqspPyjrrDnfgI4dOyI6GOXJZcetonhuThmzBYoKerYVw2nn298cTEcdHWpQyBj9mtRvFm4YsfRGPPP071y9IKepufLL5A1LbIIVJu9kEb6vRJdJcXRFknJStJSv7AUZlJcmCptwsQZmF1O1q7poqrPrPWyXm9tZ2PumKyijOBBRnLJfGVkzaginrox4yAsFlyVE1G9uvRcizLMplH2OiKhVFglTagXsuj3HyILPVZq5BYgdQH/Cn9qcVupgyWWm2D99TKPCzCOq5NEgm4SHXvCegwvQikam4ZC6+oa8uYWhCx5dMaVc5g/UEhmo+Je2sUlMYsPTzgzc1Qly2g0aXlj9oGxpZI/9+ZtcAMe3F4UEIyUM2YGKYsE55D9y0hmHkN9X9QJTdsoPvxHkV1SnEb92LlXasrh2MszMBNvMYhkgX/SIBtjXwIQzLEstoOZwi6J85XZlPVHQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zTjNmI4cg4BFNq1ozD6+i/xmgcOGu50Tnm2HAlwwzod//NCNE1bQzO1vrHY0FofKjQst34nNJDj1FhOb338Mo1JfYzBE+WgsufdbK6CnzAB7m/SFhi1D3THqMSF5RauqnpBQC396FvvKQhhbTxhr90x8X55BNU504TlvzvLSKsSmF2HaEt+AEcL7I6K2RKchGUhL2aQN5h5tpRa4AP16Vkvw2OI0KpRrz7l/4/Gt9hRvvVDPQJFt7qYDbaMw9ufXuKsXoA/w2CcGyDlBlOZau1I00vmFPvisTg2szQS4uaVcBymJIvyphAZjKYigq2/q03CfvHcSj1oSEBAl7qDkJOtx3Yj7ev2TyYcU6k/0cRtxvWN+wTAKqqCNB+XjFbrm+kuJ/cKDKwuIrOf0E97mc2Wd2+9xMl0XjqCxHZ3hi76BKAfX1/7H1JNMkD3nBpHv2QGafu9nS8gO0HtMr6lIJy4JkirHeubLZTF2XYwRL2OscwT0erUPajfBAIzXrl3JabIQfV4hmNJIHppt7p/lI1yzR0d5wWSRNlkTaCvjkMwqpITAJRtxb1AvDg64IB8sqY8zI3+1N6NHWa3xZYcTCZEAMmz9lp+gSNmh/ddxXupEeF6xFxH5oRXbWJVfKAiBVlyFCaCby7hZIUHdjyih+BKHLb2UQvpTqOw0D4HibGbmF/5CgysiC2BsgXAU9y7Vcg0qdCY8G2/XQZfsFswSObnc5AaHNerILYs61TR5sucdMBG40ruUeD5WvmrHN9z67kuqToY7msMFXinRe5zmamEYzcGKKM4+kNRSsMyo2PdEQGmA5BAOn40KWWkomkcitAFOSuQlfjDCnQUwV7KJwqYGuhPOjgzTYySXwAfPMzPVLx0qDnZsOG+0nncr6fLQk9bNnDRAKPJGH56W0OfS65COUhi7OTTA0Hiz7zm81ODy1I/tOXiorhiAjjAGnaL9eSQGGOB6jYjxSdeKM+mZxfkQYzX6yMAfT3rdpdOa8MQZGYF05SuEAb4QFhog3cpm/f2aWdv03ISLBIQMLDzvK+Thv/zatHr3nkMgtkbRmlmpKaPf0YXFfNFWIDNjzrAm5dUEnNFQzXSFCmRh3/6bt1/s7F9OAEGSX3V1NAeriElMam90M0KZ7nv1ik7e8y59N4QvVDEIvhUCz3iaXtQOp33UrM4Et1rOkoi5hq8OXpw= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a98dafc4-89c0-4f5e-81f8-08da06bf5060 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:38.5399 (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: PA4PR01MB8947 Subject: [FFmpeg-devel] [PATCH 12/21] avcodec/flashsv: Use ff_inflate_init/end() 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: mf1uOvaJwd9x This fixes the problem of potentially closing a z_stream that has never been successfully initialized. Signed-off-by: Andreas Rheinhardt --- configure | 4 +-- libavcodec/flashsv.c | 73 +++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 41 deletions(-) diff --git a/configure b/configure index c56b7ba85b..e3d2f590cd 100755 --- a/configure +++ b/configure @@ -2810,9 +2810,9 @@ ffvhuff_encoder_select="huffyuv_encoder" fic_decoder_select="golomb" flac_decoder_select="flacdsp" flac_encoder_select="bswapdsp flacdsp lpc" -flashsv2_decoder_deps="zlib" +flashsv2_decoder_select="inflate_wrapper" flashsv2_encoder_deps="zlib" -flashsv_decoder_deps="zlib" +flashsv_decoder_select="inflate_wrapper" flashsv_encoder_deps="zlib" flv_decoder_select="h263_decoder" flv_encoder_select="h263_encoder" diff --git a/libavcodec/flashsv.c b/libavcodec/flashsv.c index e284439972..eccf568f85 100644 --- a/libavcodec/flashsv.c +++ b/libavcodec/flashsv.c @@ -42,6 +42,7 @@ #include "bytestream.h" #include "get_bits.h" #include "internal.h" +#include "zlib_wrapper.h" typedef struct BlockInfo { const uint8_t *pos; @@ -55,7 +56,6 @@ typedef struct FlashSVContext { int block_width, block_height; uint8_t *tmpblock; int block_size; - z_stream zstream; int ver; const uint32_t *pal; int is_keyframe; @@ -66,6 +66,7 @@ typedef struct FlashSVContext { int color_depth; int zlibprime_curr, zlibprime_prev; int diff_start, diff_height; + FFZStream zstream; uint8_t tmp[UINT16_MAX]; } FlashSVContext; @@ -104,7 +105,8 @@ static int decode_hybrid(const uint8_t *sptr, const uint8_t *sptr_end, uint8_t * static av_cold int flashsv_decode_end(AVCodecContext *avctx) { FlashSVContext *s = avctx->priv_data; - inflateEnd(&s->zstream); + + ff_inflate_end(&s->zstream); /* release the frame if needed */ av_frame_free(&s->frame); @@ -117,17 +119,8 @@ static av_cold int flashsv_decode_end(AVCodecContext *avctx) static av_cold int flashsv_decode_init(AVCodecContext *avctx) { FlashSVContext *s = avctx->priv_data; - int zret; // Zlib return code s->avctx = avctx; - s->zstream.zalloc = Z_NULL; - s->zstream.zfree = Z_NULL; - s->zstream.opaque = Z_NULL; - zret = inflateInit(&s->zstream); - if (zret != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); - return AVERROR_EXTERNAL; - } avctx->pix_fmt = AV_PIX_FMT_BGR24; s->frame = av_frame_alloc(); @@ -135,27 +128,28 @@ static av_cold int flashsv_decode_init(AVCodecContext *avctx) return AVERROR(ENOMEM); } - return 0; + return ff_inflate_init(&s->zstream, avctx); } static int flashsv2_prime(FlashSVContext *s, const uint8_t *src, int size) { int zret; // Zlib return code static const uint8_t zlib_header[] = { 0x78, 0x01 }; + z_stream *const zstream = &s->zstream.zstream; uint8_t *data = s->tmpblock; unsigned remaining; if (!src) return AVERROR_INVALIDDATA; - s->zstream.next_in = src; - s->zstream.avail_in = size; - s->zstream.next_out = data; - s->zstream.avail_out = s->block_size * 3; - inflate(&s->zstream, Z_SYNC_FLUSH); - remaining = s->block_size * 3 - s->zstream.avail_out; + zstream->next_in = src; + zstream->avail_in = size; + zstream->next_out = data; + zstream->avail_out = s->block_size * 3; + inflate(zstream, Z_SYNC_FLUSH); + remaining = s->block_size * 3 - zstream->avail_out; - if ((zret = inflateReset(&s->zstream)) != Z_OK) { + if ((zret = inflateReset(zstream)) != Z_OK) { av_log(s->avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret); return AVERROR_UNKNOWN; } @@ -166,9 +160,9 @@ static int flashsv2_prime(FlashSVContext *s, const uint8_t *src, int size) * the adler32 checksum is correctly initialized). * This is accomplished by synthetizing blocks of uncompressed data * out of the output from above. See section 3.2.4 of RFC 1951. */ - s->zstream.next_in = zlib_header; - s->zstream.avail_in = sizeof(zlib_header); - inflate(&s->zstream, Z_SYNC_FLUSH); + zstream->next_in = zlib_header; + zstream->avail_in = sizeof(zlib_header); + inflate(zstream, Z_SYNC_FLUSH); while (remaining > 0) { unsigned block_size = FFMIN(UINT16_MAX, remaining); uint8_t header[5]; @@ -178,16 +172,16 @@ static int flashsv2_prime(FlashSVContext *s, const uint8_t *src, int size) AV_WL16(header + 1, block_size); /* Block size (one's complement) */ AV_WL16(header + 3, block_size ^ 0xFFFF); - s->zstream.next_in = header; - s->zstream.avail_in = sizeof(header); - s->zstream.next_out = s->tmp; - s->zstream.avail_out = sizeof(s->tmp); - zret = inflate(&s->zstream, Z_SYNC_FLUSH); + zstream->next_in = header; + zstream->avail_in = sizeof(header); + zstream->next_out = s->tmp; + zstream->avail_out = sizeof(s->tmp); + zret = inflate(zstream, Z_SYNC_FLUSH); if (zret != Z_OK) return AVERROR_UNKNOWN; - s->zstream.next_in = data; - s->zstream.avail_in = block_size; - zret = inflate(&s->zstream, Z_SYNC_FLUSH); + zstream->next_in = data; + zstream->avail_in = block_size; + zret = inflate(zstream, Z_SYNC_FLUSH); if (zret != Z_OK) return AVERROR_UNKNOWN; data += block_size; @@ -203,9 +197,10 @@ static int flashsv_decode_block(AVCodecContext *avctx, const AVPacket *avpkt, int blk_idx) { struct FlashSVContext *s = avctx->priv_data; + z_stream *const zstream = &s->zstream.zstream; uint8_t *line = s->tmpblock; int k; - int ret = inflateReset(&s->zstream); + int ret = inflateReset(zstream); if (ret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); return AVERROR_UNKNOWN; @@ -217,15 +212,15 @@ static int flashsv_decode_block(AVCodecContext *avctx, const AVPacket *avpkt, if (ret < 0) return ret; } - s->zstream.next_in = avpkt->data + get_bits_count(gb) / 8; - s->zstream.avail_in = block_size; - s->zstream.next_out = s->tmpblock; - s->zstream.avail_out = s->block_size * 3; - ret = inflate(&s->zstream, Z_FINISH); + zstream->next_in = avpkt->data + get_bits_count(gb) / 8; + zstream->avail_in = block_size; + zstream->next_out = s->tmpblock; + zstream->avail_out = s->block_size * 3; + ret = inflate(zstream, Z_FINISH); if (ret == Z_DATA_ERROR) { av_log(avctx, AV_LOG_ERROR, "Zlib resync occurred\n"); - inflateSync(&s->zstream); - ret = inflate(&s->zstream, Z_FINISH); + inflateSync(zstream); + ret = inflate(zstream, Z_FINISH); } if (ret != Z_OK && ret != Z_STREAM_END) { @@ -251,7 +246,7 @@ static int flashsv_decode_block(AVCodecContext *avctx, const AVPacket *avpkt, } } else { /* hybrid 15-bit/palette mode */ - ret = decode_hybrid(s->tmpblock, s->zstream.next_out, + ret = decode_hybrid(s->tmpblock, zstream->next_out, s->frame->data[0], s->image_height - (y_pos + 1 + s->diff_height), x_pos, s->diff_height, width, From patchwork Tue Mar 15 20:06:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34776 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314955nkb; Tue, 15 Mar 2022 13:08:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyT5Wp9T0KHsCSO2V0zJ0ezRMdPtZCLi7iDYRpFNDxzO5gb5P7BNG7m0v9UzlmTu8EOkVIU X-Received: by 2002:a17:906:d54f:b0:6db:af13:dd8c with SMTP id cr15-20020a170906d54f00b006dbaf13dd8cmr17953856ejc.540.1647374902528; Tue, 15 Mar 2022 13:08:22 -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 o18-20020aa7c7d2000000b00411b6c9bad6si38748eds.79.2022.03.15.13.08.22; Tue, 15 Mar 2022 13:08:22 -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=twGsP+z4; 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 953BD68B13B; Tue, 15 Mar 2022 22:06:44 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2068.outbound.protection.outlook.com [40.92.90.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 827DC68B02F for ; Tue, 15 Mar 2022 22:06:41 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HUKyk52fbB+bA18KHzwOeaBPi1Onjj3T8KmsTgSg52veFecyiO42MHaI1GIuHXDG7bG2KhvSFG8QZ6DMeyX5YQsM/95pIrHOjiaXJcHUm64YxWX/nCFqctjMIiPebet/xgdRzOYji9NV6S8y9+wI8Z+MTOkVwwbd6RGuBOaItNdHiEYKsCTdW+T39SzEQo2P5aJwC+llCkVdul7rQZSPSQia8ZH/LrBRGmXIqcNqnDPEyK5AHVoEEax9DuOxZt4wIPOvzVXH5aFTuWA2uGSAhuNgcY6egghfMli7+VUaUNWpy3CybIfbuLbDcszqTsqZb0NPSCGmabUCCbPefeyv4w== 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=QS+53hhSEqkmWUV+0JghFLsAKF4QLq50NZyHOrJAHDw=; b=npqQVZubDGLCG4RiKq0snWcirQPjwbXG3y0DUNbHDM3CGZb6vLmLUt8NI9j2KwAk4kRuy+ABiFNvKH8Zy5kBZ7l2GoooKW4kC5StDUOqvsliJxrbnbI5MxGpmJ7anLdD8dFHs5kROXw5gBX/YjIBCL+fBEr9uLnKlaQzkIJfPNtH6CAj4biBCVHWDB4IRthFl+r3Ms9JxPhN52R7Dx5bqYVnYEJdTOBG7Vxrvu3A45eT273+bs9RzWctKFYjy+PepdxoX7OfhtUoAa5xp97T9BHSPWE8iEMlPiuGwMocckMI2ExjqKAjFudzdmgqSAIaxaLXJw6er7N1d+wVgSTeqA== 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=QS+53hhSEqkmWUV+0JghFLsAKF4QLq50NZyHOrJAHDw=; b=twGsP+z47Z6slIVmpf8JpBZ2b4t92XtcxwyTHLj71GCWsfC0z7GzfZviPn0ApXsLJn01LBiCnZwczX8hPviyS4AqnDeP1gJBHzXRzffudOAisooV+ZszyidGEIO16/9OSBoBl0fJwedry+Ta0xNXXfFwlxlJLiK6fqLpbyTZjAa4DjHsHh4Km8iH00Sk8CoS5V7iTJ3bTxIwKT52+9rads4KFr/OlpK2p3HWN5X4yZDZOAr0CtOBoIZUyiz+NlMIn6V7JjUycPxU9iEByEsN4vpfeh1v7jzgClWyQGIeVLuSTTC5AKEaD+8wDCMH8QLpnj1P+mszB3bBvjxFbiByZQ== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PA4PR01MB8947.eurprd01.prod.exchangelabs.com (2603:10a6:102:2a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Tue, 15 Mar 2022 20:06:40 +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:40 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:06:03 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [IlShD2yFO4MpcxQjNrv6TjfbOpSdgKco] 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-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 33bfda39-0a75-48bb-271a-08da06bf5181 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVCjBL1ahFAC6IvHqXLqxHn9aYOuOKyoCFCqSYp5hS7bq3K7dZjoDh7Pgs7MuBVhy/nWoqrTWOu3XFOdDKGm9542LElIdfMoWFOy3oHPgPW4tBimWuhdfDd3Iy22tnyrgBROVbyhV1ZZVtKa5PBZj7grTrEa/aSngFa4y6kQ1k5+wnsMlDfaTdg8pFv8oPch8vKVb2uja3t7tRZdU0LOX5rnpJYLQ6+W6XIipxSjF5C0WBXK7opf8LOFIc+L6IfGyHdh9qdU8vkMANzIk1Iefje8/s6YBQDYDZOpJ+Wd6zgd1sN+hCBzRrLHbOSky4pXaWp6rTGYoORPWHhpJWGjJBQ2tylYCQ3RmXD0P8omGjlIE3S4OdtCWAL821Qa0adH3FeQNNV3zWg16tfnl/z7cdBLXEY7rCnhUSRe2A0/MzZCppijI/VRylyn0WF4CZDyTsILOnztGpixI4/uwzg74WkH2BHea6krLIVrh/2soC1tflfAZJIvZM1BqwHK9QsiODgJBgTuSMQBwSKpiACU9g7wy0+hEsTOPIb2WeGRILNtymR2dg5b6rukAgoPNNtHsrsVDHIw9my2HeCfnjCodEaaDe/61tORDWttEE6VAjaVfbNbjlqzPFfk6uYh+v8m7iAbGXH1iKXgUS+roQv5shUv2EKdiwwpcVYeFCGErPR8fUyfC7ZheVFtdI9sP/1CC4Jz+f4P/oVkqmonXDncDD31ZBKoiahl6kYiYRc9WXSwg= X-MS-TrafficTypeDiagnostic: PA4PR01MB8947:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: evgcyeenJ9h+ZdI0IvibOYqSXNnVBrYMA9pEDEfn4DRooUFJiNCibKqCo4fG9aXiyDcktdXNqVzpUN+LnUNvXsTqP/lgZ/azGlIkHcrCNC5nK8WiNfAUO608t36JzFjfcBoridfTii/4coAjOFl79XlrpJkQyEmQPqXK0ZNxGqD2IjPJYsSYdBtzOYGVkLLmeSvQC8LIqq6MyaUBL6v/l+XArnsYuIidHl6WklcIk/MVlGltUnjhPQ9eEuYCLCGJeI/gLhcNYOTz790QOZ54N8LD9XAHkyzSaZlUTlBF/ko+03/Z2yEgsFBVV5LDw4WhP5fAKlb+xCHBweYWEMbBt+hNj9Ws5Ogj08BmrrxYxyVvQbPf76R9ezriN9EJA5p+CqWuqIf0XLiIEGq6GZbK2p2vo6UHSRIyuvLj+D9qI036fltloSB0imG5mXe/MwipHlRtXcai7GfO91A4ICWpvpect40IyUqcvTGSlRm1HprZJUUHx7JhF+y89dpEZ4ECwSYALhNRqYtXyk80fLBkxhuOBfElwXejH6BteYr9J6Hx5QS2O8906gsawk0P1it/t3oOrxqZJir9KZaWvnQpLg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: z6YUxoBTCVywQiUamiZV2yv1GiFLfcvV5jJMPAgmrg8CmphHru9ma8c2ryz3WGRuzrP3iKXvAcE9csI4/0BcpdDgZqbQcTDk0uF/Ed3G9lNwkjH3P6ze8X9zg2kcYU01QHK6Yr/6XyXQQDFFxSFExj0rj2B3DrZ9eQ+c1mBjFrVo+yUDH/Qsua8/Z6wh1xY0pd0c1PVyCVaouytl363lI0crKpn0ZcP/BEq55R0nzy5afLNEHcLVo2w9Iz4NcXzyePzZ+vXpkhAoO9TDvrDLJpuEdXudVbpOPhox+e1sNgqw8GjctEWk1urCZBITBLg82sOrAuFf11H318ylXd/KwofNrko+yefIcMkLHc0oDP7aCHGnA7cC7jMQiYTohFoWDyQHSkvzofgh/KQKgNYMJF9n4FCEoF1GFYkCYlQIW8XRQccI01UY665oLTUD1KuNwCsCfFc1kjCbfv+vfdJvdSpk94lusnmZU1e2pJtCnwBmW0HKNOBxXQmhGgswXfCfaCEgh8cgdcf9NJr1K3Ybo4Ih5qy/BtealCvyedzSHgZnwDoFirWy3yDETxeyneABmry6cLThNzHCl+dvhUsuKbDEWJJwa/2IcU+2LyP6eS05rh8a/BmxYJ+w8ztuhdjzS8rVRvuP4DB5PIEPNK9fD5CPJkaLcO713aB6b+Yha24/ECx17c4AiQZxzX6y6Jn49JWDd36LDcw+ToGXAD+hMPYXsHAcvCaU4GM9FKmM0fUoE5otry88PBNHx+dey9PeGH/6aPxlsdp6gwlICmysV1pXIu8t+GEoue0oUJqduwBFFhxKy2QAI19QGeF4VH0V+1XIwsrat9notpxEJstVoUlPVsCLEWMycx0RqlOI6Lzbv6zYTDQfnTQOJ8q3DokqUzEd370+ivgddkMQDTIC1u0NtLwYSG/JJDl4WZhIapPhZOA7qO/FvpLWNjQpHKwI4szjnlGnSycQA9RXvVDrbBnnAI+8IeKAxYVrf018NdATUDsQoxW2bWHLgLsOvEyguw22HDDdqhGnL4HhEhjB6dse2aHkagK5hqyajxoIbqG1i9x2GeHu4ZVwXSFIhFfOB0bIrpsnG1KaQoU1UcQBv7zmKkbes3zf+KjQXvkHfO1GWNjN5N04PGiBKqNMV/ITQ+1nyJnzB7iRQryHidN+n/WoGWMu6csYAoZG5sPjVaA= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33bfda39-0a75-48bb-271a-08da06bf5181 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:40.4150 (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: PA4PR01MB8947 Subject: [FFmpeg-devel] [PATCH 13/21] avcodec/zlib_wrapper: Use our allocation, freeing functions 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: JbjH894HA12Q Signed-off-by: Andreas Rheinhardt --- libavcodec/zlib_wrapper.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libavcodec/zlib_wrapper.c b/libavcodec/zlib_wrapper.c index b15d5be2b8..5b93c2c74f 100644 --- a/libavcodec/zlib_wrapper.c +++ b/libavcodec/zlib_wrapper.c @@ -23,8 +23,19 @@ #include "libavutil/error.h" #include "libavutil/log.h" +#include "libavutil/mem.h" #include "zlib_wrapper.h" +static void *alloc_wrapper(void *opaque, uInt items, uInt size) +{ + return av_malloc_array(items, size); +} + +static void free_wrapper(void *opaque, void *ptr) +{ + av_free(ptr); +} + int ff_inflate_init(FFZStream *z, void *logctx) { z_stream *const zstream = &z->zstream; @@ -33,8 +44,8 @@ int ff_inflate_init(FFZStream *z, void *logctx) z->inited = 0; zstream->next_in = Z_NULL; zstream->avail_in = 0; - zstream->zalloc = Z_NULL; - zstream->zfree = Z_NULL; + zstream->zalloc = alloc_wrapper; + zstream->zfree = free_wrapper; zstream->opaque = Z_NULL; zret = inflateInit(zstream); From patchwork Tue Mar 15 20:06:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34777 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3315071nkb; Tue, 15 Mar 2022 13:08:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxPV0ke3aSkXlXFAEunGvrnuMOmItYTNau7vp7worKOC7z8Io1UfxDKE1CIEpq3EnnH0sMt X-Received: by 2002:a17:906:698a:b0:6ce:b983:babf with SMTP id i10-20020a170906698a00b006ceb983babfmr24358200ejr.553.1647374912608; Tue, 15 Mar 2022 13:08:32 -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 j40-20020a05640223a800b00418cc738a03si42088eda.152.2022.03.15.13.08.32; Tue, 15 Mar 2022 13:08:32 -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=jvsse+K3; 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 75EB168B168; Tue, 15 Mar 2022 22:06:45 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2068.outbound.protection.outlook.com [40.92.90.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A004F68B10D for ; Tue, 15 Mar 2022 22:06:42 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gpgK4yflaVylYgbXIKOPDUf4c0VWryK83e+vkTw9H3v3k68C3plF/Uc659kpFAGWh69sHBaWdYENJWXGrW8Qa2peV5NJGGx2XUTDAzTgGdF2t2+B1i4/7x7zUC/2Hc55n3krOD9t/Ej3fyGQ242uDOZa+ZAKuFkBoGuFYIez0mEUJgPdGpi0D6KhPAbD86ZNNmKtxFfq3Ro3Ryh9+6LgOJ3kL2i8Ux643Lceu5KunX1M0AHQpeaTuCqI4DZnXFnOKqlC9u4tH+iKW3fZVJyrmXwNzc/gZW4zhPlIgca/v1S5JRbwf4Ct8dCVH+0Y7e8qcW5PPHZl/IP/G5+s8HSAbw== 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=Lve4IuqSrANnWTSLnQYKT5CojnPfxU4+37/7CllHA1o=; b=XHCHnUxiEDATDVfv9JnMLio3Gkbqpe7W1wTMFy6whMZ5bQa1Ls9ni513cJ7QiatP8WssipUjuOAfm90vdvOI88oTwoGVhRkqvDo/OLIJPzqVQ3b/lsnhvRsdaacE9sDzUmVUQXCJU2lC8M5I48E5hIck5iRdmiMwKV4ovbPnfYXypjF0dsAbJvfbq98aQkYK0OW5iWhWFemR5ieQ36W1I/nGF7SOWyERRQqZ1dJRgK+DvtvrzNIBhbQUZKzYldyaB7mJXXBY+jnJ4bLItuxZJTHV0faJhFCLJBJEORvaufI+CjFlNk/abew88uDNJdYEYrf6Y5R3zbhNRWHz1TqPsQ== 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=Lve4IuqSrANnWTSLnQYKT5CojnPfxU4+37/7CllHA1o=; b=jvsse+K37PEzAe8e6cKrJOLRxuaA1nEraWOXF2xZC534gEcX+Iji3+u3/Q/TGd1Sx6PmeIxHmiIsYX9zljLcufG7AnooYg/Eaje3oPT0n5W/e64AnM5M+Cigm/y42CbVDt/pDpImIpWKbyGgWXd24w4an9R6zGgg9i/KrkC9VwgHEWTNNQjgVKbpiw3Dd/MklOvNg5IBvmbiX3XSIDf9NJcqTPRTHft3JDmqpzL67Lvr1D/0vfKwCixHJ8BaXqBxOBDNqBXcT+dNwB0A3sQveMfpi+/yWTatrHXbq0wVdy2sazyeHF6EiLAntrclXAsNZ84tJ6WAHAchCYH1VJ77gQ== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PA4PR01MB8947.eurprd01.prod.exchangelabs.com (2603:10a6:102:2a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Tue, 15 Mar 2022 20:06:41 +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:41 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:06:04 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [uEoiUNysJhky4eoCK8eqmYetT0SSMOu5] 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-13-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 457d4879-ffd8-4fe8-b954-08da06bf5257 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVBeJ67f/nzBE9o09n3f8ffFu85nO8TjH9ZjCmVg6MpoREdKDj7YUsETN5OhXfgXnhaaqXRvDtxFBxV7teRBc5Pz47qX0bY8nmKZz6jlaJGpK7Er1mt5QDrhw7YSsXSvKNNTdEIVQnqVHjFZJNyuj2q7fWyDKTt2XJcVzwh6qEhoFu6eqY8/6I2jLMIzSDe7MIMxKZnAr2iqI3Yl+qVivfMZ7ltG5UryqFBjiEe7uJSaA0wrLeFofoR73gW8Me0BbGai0+Ofcxub7sCmGtY3HL9M9UHfNqVaO8S736QklMOiAZt2pCi8VmI990wwhl3GuPronKCMj0zUxRiyJ28PdYL5fhLg+gayfMyYQFddw5s8Qhmr9DhOksWPdysjvUrWjbiMttV4PO95dmhwvFBl85YBy5qrBzSxIW48Jil3hxitx3mSEgdlb/5EHHGRRaxdCK6GH2Oymu6JdFs7F9pDUkmzMVhedJFsKitMwF9319ypA0QYF/7f+MMDAKiXlNqaBNx6CHbIabMbgGwuU1DuPkDXwB1ivxRYgR8k9yA2LJCKEkreMupxY7VRbEQiDC6B6G6qoIBXF1x3phl1oYY52nTuVBfQg+oucG2+Fy7nS0VKx4Fujy/pD6Sv92O/pKZuVEfeGR+wpovh0hROoOEZ4iqJShHEvR2w2Tuihlna/O0AsUmHgo7TjCUYVTQsqD434JiSawSHHvugzQ4QcgZoNNNipNdTmQwZZ5jnW/bDriq98= X-MS-TrafficTypeDiagnostic: PA4PR01MB8947:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qqnhaIxLgq2BU2hUz9+KboqMb/p5SE6b6xEly2aczm2vcmWP2X033EklUpHDhMxcs9uWTEWxirfaROsZiS9lx2q4zd9ajaxqnzeagS2a199Y7KjiXvjYro4ndRJrqOitJ7xMjZc4g2uSYBlrP56zY12nd5j99IVyDeeaOCZPdagd35/Q3NswbS1Gq5HEVGwDviQSZkepWmJctzLhd24/uhDUwSitkiHb0cXhK/OOhKa6GRgQ5wNpdsY+dqfbcticFjM1Jr3q6fFjeHUZl+BR8JxaZ+l1HxlEn/T1DVymNoeVZrSIH4eSikT83CqWSBUN702RI1wzXYJLg9QChwFaFE6BQ+sV4La5fLU8i8nY0kLhxx6/oAPu9nlDRgbjbKidE3F3NhIw6nUXxSuIeZmYZtEXqPRbwHouz0k9+SXSRyDJ7rcyhnxnncr+FmstJDQsEaqjhPxLhvWcF2Wvicewwyfa5B3aO7NQkDbRk/+22LorsO907EZb9Kg5OrJ5af2fXC6ccccvLDR7a+MTBUb/6N3YtMGhDNEL9EABuLGApqJKzNmajE8w9CEGenxxEZXZb95Uf6SVnr1ZZHSq25kA7Q== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XBYuno+P5LrghJzbnzZ2TofLIpDwCgVKe6VqNrDEGJz8UgNbwWfiuQve4zIMlvR9psNGG/8MmmMtY46JUkZG7KICXNQ2vtIsJ7X2vGcKcPo45Q3F6ekmPyFfKU6XagrQYDnZJJXsivCPVMVfCeGU/0eDZ9pI7mec6VK4GvXRj/sKMF9d6RZnUGJwt+S01HQfAFTZU3Ys7arB/KrlS49KcS2oJPOM8yl7jXgyFy8eqF99XJEF0aKhOccazO8KYyD0WZbfohmmMh9a+tRKFlGUniSKE7wyn7rLN33SPuZ3dv+n9krPpjPSHR6F0t+qCbx0SwqClqytqfXCAHZDJPLzAQXnIpk+Zz61q9xg460SncdNqpbTj7q246NkxOBHm8LMjhuP8CG4x+5RVw/56fU0q8gsA+RF9U3dw1dVDMzXjO1eqxsIso4YEKwI/X26LcKTz8KDuOOUE+nW2dak35/vgJ8MZtPUVSbr3H1mCMIkQLPXemTM5PWzL16FNBSu5ca+qomcq+Z8a8wXQEgRR6SZ86eBERC0BJ3tGkKejr9pRz979Kr4BcxVqiKIId22LvpiSXVBqvE840egof9+cCkrTksLWWirpJNXAH6UgFuOji6kLneq9hg5wzCvRBGwHnSGvf2VhO+zMYtbqt/c5ehdnsni056Uyv975oRzOupjdlkNQif+P3CUvNLkRCM1TQEi2CRvfMO4Q9dopMYoHbUOUqaDanf+GViiFo4WaBlenq+KAcjQQRBypdoX/slgYli9d5LlQuVWAPp9YdFXY9WpDf37PzIajWUgfcOIXaWKlkQbnGOSk4y9qUEOw9/jSmAR5I2Vy5evQzHN7qKziHJkrBktcnPvVMABYCXvXwrjSA4ax/U1TQ0/SJIsKC33ubxr0rV/pUh+jlQOHqAzjZHKKpSkxWiMblwfvAwTA0BZQuRQXiFXMHbml4Rpk0gzzYQlhdzn4plGEnoMRR67N3hjMRC05FzKRdkAxSFHZrl8fl050HCTErj7U4fUR93MZF+rM0h80j3xmdfg/cEj+xsQjWG2wbsf3SD1beC9uWLB4jKLQdER0f0sgDmpqgvrBAVYf5/C7pJUi1mJAWO5GM4f8VP/AJ8Zs+hcbCVKgxsgr5oXtH2qTTcHNeAPsdUuee4dii0jeUBT+JAFr/M1rbwdCyNKvNuCh0iggpItk0MjAuc= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 457d4879-ffd8-4fe8-b954-08da06bf5257 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:41.8222 (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: PA4PR01MB8947 Subject: [FFmpeg-devel] [PATCH 14/21] avcodec/lscrdec: Don't open and close z_streams unnecessarily 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: 1XjYbVy0EHQC Instead reuse and reset a single z_stream. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/lscrdec.c | 84 +++++++++++++++++--------------------------- 2 files changed, 33 insertions(+), 53 deletions(-) diff --git a/configure b/configure index e3d2f590cd..0e5923fced 100755 --- a/configure +++ b/configure @@ -2850,7 +2850,7 @@ jpegls_decoder_select="mjpeg_decoder" jv_decoder_select="blockdsp" lagarith_decoder_select="llviddsp" ljpeg_encoder_select="idctdsp jpegtables" -lscr_decoder_deps="zlib" +lscr_decoder_select="inflate_wrapper" magicyuv_decoder_select="llviddsp" magicyuv_encoder_select="llvidencdsp" mdec_decoder_select="blockdsp bswapdsp idctdsp mpegvideo" diff --git a/libavcodec/lscrdec.c b/libavcodec/lscrdec.c index 18f46bd27c..58dac6e587 100644 --- a/libavcodec/lscrdec.c +++ b/libavcodec/lscrdec.c @@ -32,6 +32,7 @@ #include "packet.h" #include "png.h" #include "pngdsp.h" +#include "zlib_wrapper.h" typedef struct LSCRContext { PNGDSPContext dsp; @@ -52,7 +53,7 @@ typedef struct LSCRContext { int cur_h; int y; - z_stream zstream; + FFZStream zstream; } LSCRContext; static void handle_row(LSCRContext *s) @@ -71,11 +72,11 @@ static void handle_row(LSCRContext *s) s->y++; } -static int decode_idat(LSCRContext *s, int length) +static int decode_idat(LSCRContext *s, z_stream *zstream, int length) { int ret; - s->zstream.avail_in = FFMIN(length, bytestream2_get_bytes_left(&s->gb)); - s->zstream.next_in = s->gb.buffer; + zstream->avail_in = FFMIN(length, bytestream2_get_bytes_left(&s->gb)); + zstream->next_in = s->gb.buffer; if (length <= 0) return AVERROR_INVALIDDATA; @@ -83,22 +84,22 @@ static int decode_idat(LSCRContext *s, int length) bytestream2_skip(&s->gb, length); /* decode one line if possible */ - while (s->zstream.avail_in > 0) { - ret = inflate(&s->zstream, Z_PARTIAL_FLUSH); + while (zstream->avail_in > 0) { + ret = inflate(zstream, Z_PARTIAL_FLUSH); if (ret != Z_OK && ret != Z_STREAM_END) { av_log(s->avctx, AV_LOG_ERROR, "inflate returned error %d\n", ret); return AVERROR_EXTERNAL; } - if (s->zstream.avail_out == 0) { + if (zstream->avail_out == 0) { if (s->y < s->cur_h) { handle_row(s); } - s->zstream.avail_out = s->crow_size; - s->zstream.next_out = s->crow_buf; + zstream->avail_out = s->crow_size; + zstream->next_out = s->crow_buf; } - if (ret == Z_STREAM_END && s->zstream.avail_in > 0) { + if (ret == Z_STREAM_END && zstream->avail_in > 0) { av_log(s->avctx, AV_LOG_WARNING, - "%d undecompressed bytes left in buffer\n", s->zstream.avail_in); + "%d undecompressed bytes left in buffer\n", zstream->avail_in); return 0; } } @@ -131,18 +132,12 @@ static int decode_frame_lscr(AVCodecContext *avctx, return ret; for (int b = 0; b < nb_blocks; b++) { + z_stream *const zstream = &s->zstream.zstream; int x, y, x2, y2, w, h, left; uint32_t csize, size; - s->zstream.zalloc = ff_png_zalloc; - s->zstream.zfree = ff_png_zfree; - s->zstream.opaque = NULL; - - if ((ret = inflateInit(&s->zstream)) != Z_OK) { - av_log(avctx, AV_LOG_ERROR, "inflateInit returned error %d\n", ret); - ret = AVERROR_EXTERNAL; - goto end; - } + if (inflateReset(zstream) != Z_OK) + return AVERROR_EXTERNAL; bytestream2_seek(gb, 2 + b * 12, SEEK_SET); @@ -154,10 +149,8 @@ static int decode_frame_lscr(AVCodecContext *avctx, s->cur_h = h = y2-y; if (w <= 0 || x < 0 || x >= avctx->width || w + x > avctx->width || - h <= 0 || y < 0 || y >= avctx->height || h + y > avctx->height) { - ret = AVERROR_INVALIDDATA; - goto end; - } + h <= 0 || y < 0 || y >= avctx->height || h + y > avctx->height) + return AVERROR_INVALIDDATA; size = bytestream2_get_le32(gb); @@ -168,10 +161,8 @@ static int decode_frame_lscr(AVCodecContext *avctx, bytestream2_seek(gb, 2 + nb_blocks * 12 + offset, SEEK_SET); csize = bytestream2_get_be32(gb); - if (bytestream2_get_le32(gb) != MKTAG('I', 'D', 'A', 'T')) { - ret = AVERROR_INVALIDDATA; - goto end; - } + if (bytestream2_get_le32(gb) != MKTAG('I', 'D', 'A', 'T')) + return AVERROR_INVALIDDATA; offset += size; left = size; @@ -180,40 +171,32 @@ static int decode_frame_lscr(AVCodecContext *avctx, s->row_size = w * 3; av_fast_padded_malloc(&s->buffer, &s->buffer_size, s->row_size + 16); - if (!s->buffer) { - ret = AVERROR(ENOMEM); - goto end; - } + if (!s->buffer) + return AVERROR(ENOMEM); av_fast_padded_malloc(&s->last_row, &s->last_row_size, s->row_size); - if (!s->last_row) { - ret = AVERROR(ENOMEM); - goto end; - } + if (!s->last_row) + return AVERROR(ENOMEM); s->crow_size = w * 3 + 1; s->crow_buf = s->buffer + 15; - s->zstream.avail_out = s->crow_size; - s->zstream.next_out = s->crow_buf; + zstream->avail_out = s->crow_size; + zstream->next_out = s->crow_buf; s->image_buf = frame->data[0] + (avctx->height - y - 1) * frame->linesize[0] + x * 3; s->image_linesize =-frame->linesize[0]; while (left > 16) { - ret = decode_idat(s, csize); + ret = decode_idat(s, zstream, csize); if (ret < 0) - goto end; + return ret; left -= csize + 16; if (left > 16) { bytestream2_skip(gb, 4); csize = bytestream2_get_be32(gb); - if (bytestream2_get_le32(gb) != MKTAG('I', 'D', 'A', 'T')) { - ret = AVERROR_INVALIDDATA; - goto end; - } + if (bytestream2_get_le32(gb) != MKTAG('I', 'D', 'A', 'T')) + return AVERROR_INVALIDDATA; } } - - inflateEnd(&s->zstream); } frame->pict_type = frame->key_frame ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P; @@ -222,11 +205,7 @@ static int decode_frame_lscr(AVCodecContext *avctx, return ret; *got_frame = 1; -end: - inflateEnd(&s->zstream); - if (ret < 0) - return ret; return avpkt->size; } @@ -237,6 +216,7 @@ static int lscr_decode_close(AVCodecContext *avctx) av_frame_free(&s->last_picture); av_freep(&s->buffer); av_freep(&s->last_row); + ff_inflate_end(&s->zstream); return 0; } @@ -255,7 +235,7 @@ static int lscr_decode_init(AVCodecContext *avctx) ff_pngdsp_init(&s->dsp); - return 0; + return ff_inflate_init(&s->zstream, avctx); } static void lscr_decode_flush(AVCodecContext *avctx) @@ -275,5 +255,5 @@ const AVCodec ff_lscr_decoder = { .decode = decode_frame_lscr, .flush = lscr_decode_flush, .capabilities = AV_CODEC_CAP_DR1, - .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, }; From patchwork Tue Mar 15 20:06:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34778 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3315893nkb; Tue, 15 Mar 2022 13:09:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzz8pgQtovdoj9JshuX1n8glnUdLQrY3cweZNwElXcK+bhynqPTkbrLBANhDwPFQU3BuuDC X-Received: by 2002:aa7:d80f:0:b0:410:d5c3:f770 with SMTP id v15-20020aa7d80f000000b00410d5c3f770mr26710001edq.279.1647374990469; Tue, 15 Mar 2022 13:09:50 -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 j4-20020aa7c344000000b0041613a3fc5bsi21042edr.342.2022.03.15.13.09.49; Tue, 15 Mar 2022 13:09:50 -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=Ezy+Wknu; 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 A32D668AF85; Tue, 15 Mar 2022 22:06:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065021.outbound.protection.outlook.com [40.92.65.21]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2F4A168B195 for ; Tue, 15 Mar 2022 22:06:50 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GUshEB3QnzDG3KggVeIyLj6Iyz1BHIByGKi8yzw8sqVj5ABEmFl9DzXZdhC9B/5DIVFSlgMNA900DmRbFerPWrhVR8LBSjWssuMWa7BwXkNtRSeKzWn9cyldahMngnI3LUbIfOv5TmtnLWKme7s8LJN/rk5qUb5s1vfpHCfm6275RJiWYLyj75rjeepgXlYbgJsBQ2ESQbfpYME9Tk6Suoxn00CqP+LQJO5biclC7sN4APuPdw0LLkryflEtrZfm4zpc5UYegjSiDqpRQ8dHqc6OBve4tfFGwqyIKkdq4zH694spFfKoDD5Uu0N4Qcai8+DmkJRfw9LwBYM1MltCyg== 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=fIFg+8SxTU37S0g23h3VWH1iXoX7zPcNJPSgVAoU90c=; b=NLZHJ46GsmAGxv4O1YIZL0eT39VBEb6HluIQOQkv3N4KzMKcqBJge25vosKbvDxjgppb/1JpYi+6CIUz9onYVWcIjeg+aS3OlKrS0vxpBbIn7BfKyzwNxuwbb3RtcjfvUgQeOOel7xwWBgwvL+puQ2hNqlarlidChLpWH8jsgIdynimr0c1WRsY20TMIGE83bSiHFa3SxjPqD0hTacabPP9lesiF1CLH1HoyZzCl7NXa16+AdCaZM3jQuCKuSYc7nV5kEoqF4g62wPisLJLLZUEJj/XTIh4O4OXv7OozqPWKNPJ9QvyAS10ecfxrbDMDgyS2UojG0e2D8gwgUh43uQ== 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=fIFg+8SxTU37S0g23h3VWH1iXoX7zPcNJPSgVAoU90c=; b=Ezy+WknuQ/j3NdNiO9E7TbseTzAUA7vrl90TaT9xrO2orfNEKJpA5Ic4YmcVbTn8jGirobc1DbaQK/tUwIhdgLqWjt9owih3Sf25GVMZ1/AaY+VYiWbL9Io/Di/EE3tlHyyI6+NZPDL68GxEVNoUwsrE0WO/We+7QcPIzVXKASRFtTTpTkaOjophGECl1OKuLRMbt+82008sTx1wKd+JGQu+z7Vbbjwt2IrsiZXmgOS3T38TaCKIND1Uw4sHoT+FzjWnv27r6z4J9PPwLGVqNxDZ6w3YyijAGpZiuxmbBKFfZgOQ7Cql7S6/J/C+xI75WnwZWj4D1V3vXSwaLYqy9w== 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:49 +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:49 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:06:11 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [eDyPM5drsH68VQ6gulz4OydFJEm0Yvz9] 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-20-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c8ad1b78-c92b-4632-7ca8-08da06bf56b9 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVf+PcTdbcvjaDtfbcUOhIAwHRhtX+/fTg8CG3gRR5ysBzwUSXeq9KmrF0E0hDyHMMOVwhKs7pV4NPSfo61RVk6CQRRWDiOXY1DYtkTdEW4TGsQ9f2Eg5nRm5X0PkKiNw/JO0dHRYPA0EMfZ2LGG66QiR32/V3G/ye6t/8LEGo6JnLSweFYtZImiIL/L5m5YeDpUIeFEflsxBYoEwv7vH5EBl4TVy3Ml8M1I98ytnkc2yxIZA2We5xu03CwfsQzb3j2zpmzG+jqPukmfBEdLgHiTCzUYP21ppCQOfdaO2k3n7pRI3kfrduiMqjE0W6aBd7M8nLxtC+CXZ2n2/A2CO6CvS6IO5rjpLIOgxtMR7GQiBORVA3XZXdhGK1Mf21OKnZkBmOYCDUA13gAjQwNmLqaiz3ygk8RYfB4rpQ/uvvKu5XkR7UMDRQ++7J5uvQMPp7swD8md6cYpJ541p5v/4P8c4PPGC8SmWhqaxY8QcT8PMl/tiXGTQi3MmcZG1+ubK+GfwdcsTD3g9PL2pWJ7d/5rxKZd5ceDje7bputAQgl0uC4Pd7XBUMK1xHiFrZ6d5lDeaWwzDrRs99yMZl8ogS69KmprlS/E/QZwiWLanrWghwDNw2XlZeMaFXoGw/DfcpB6yhYPXE28v7yUo2AI9XyopTrTtt9nqUzG6F8XEW8ceJzv1qAfizVT9PqAa326g36xrQNnjtk2vR00xVmUg4zDntwXV3QFcM= X-MS-TrafficTypeDiagnostic: PR3PR01MB7035:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: StJwahmfEpSb6CA/aTChjuguPxoNHWQbg+MtQXzpS3yUbQHSXTmHyFUegX0jW6ECTlFdDDSpdFIDjrZBReSMxMv1gZT9hsqvMod+TwieuoMV+nabMeXIfe14AdqUSsHKSMqdysH5LLoIldxgbQoDCatSwfJ3+szJJUr+GNWEZwvI7Ex5mGo2TvznIGkiNzdtT8tLdc1kNYvNx1aO5w9XH/A1VHyVZIYcSraa2umAzAOR/D5hC5UE/KFtZaxU15KGVzUI8M5bfDWD44nNH5Nok3NMHdTU4kyp9POZSuQmbCHOIorenuZGYS0FfRYyTPwz/Mh2Og+cH0Ic5NTHqf6Gw4jyBpMlgRqSetkJ/wdQsyluaK2WJEvfg2uf6al7AnNKl9vj5pdMFgA1AYrzm5SheQIM7KzwKWxW3spIrzg9z2wocYaf4onPSScmQZCiY2e7bKkVxOMA7da/WEporfSocYj0RtuxfImBMouRvhM5KNPwnT+47PM29zCKXA70AzXi3yOmBHg4JPs9T7k9aA1KWn1nz2MZWpOXfsocOXcUpBW1YotpWxwW6I5XJCE2WPakzNWQ3rIzspWzT/L4cB7M6w== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JkCK2nOEC5vg+TNCAsUzdNxJc79XGyr+RSrA0Z+0BzRzD9Wm9e5BQO3jdAka7TOx1aRLFLztxnT/yOW2kUjZWCVJJ3TVZunz45dR8FxSOtRkU0buTP6vFFDfCVmHH0+vKGDkEAqcSokE7nbTIxDzUsOv0rYGZLRnCuBbDOmv3MwHRVKrHmhoOg9YqhDktVdCX4dLF8YVkS+qj0IJFwkqSewXl9Nw3KXbbbphx//nUF8uXpOcS4m2xDlFZCHMQ/6DR2de4CyJvo8UGPpYBQneUQNnAO7mx1ImgYaM1WKooVLEQmk30Yew90+ObkfPW7XeGwQbeyUUfFVHhr4IuO7yxDubUefJv2RVDB2rHLyvH73ApVQCH0RCbQReD42NEfoNsQ3pihTiDdauZmQN2ehc/00DgvrdXXkSPlvl4JPSFKrTS0bRn6k78TwKcBch5sKJ+DVvEyxB7a9oTEIE4sPHlXesnv44pQdDtw99v1Bwjsa/T1ee0zDvU3dE+EXcwwAwzNo+YrJsYv5dqBWasVXpW4Gp2DscEH05ytxStqWdi6TODNcu5lCRwkYKwVpWB/xVbFX4cCQy1qseZKAsmjdnyIcx7YpWt7M6XzaTKT4oIepGOiHTJDp9wXQ2ulBLZ5Jn3q1LTIGwtna9MujQ8DdvZw5WFOko25At5VTXz7tjlyYqTytfFlLTe4fNZ2RkJ+vHT04un19EkFnrrlcAVn5zf8tiCoA+2Nx4Gw0W9vEaU0OnKWdCk9WGCS3SHQYOob+zQe7R+/lX6XL27YpfDw0Lb4u48l0CRe4NIEAdk5LGQMekpDUCU0ky1z3HHZIYz8Wt55Z64DeJ5OM+6gbO1C0tjaTDYDbDpDZu5vtDN+jlbmtIq1ydoPXoYFilCRVbAa35dZAlsq2tDntJ8lfhiwzUzpmCDPjSN7qXKPRcyo2MDEJ10C72lvAhocOpf1EYoHLp4chy+oUtprot4N/Npia7CU+qqcSNBaFIVM7Cf5ySbHas6DS3VrFAGnZbJ9uV40Fe7JkwnfSHvxICmIV6wZBs5WmwwgNTQDbNn6QcEyriADghvJq5iFu7G0Pg7a4KoZPAFaSh+l/nNKU0nkOeNgZqoQ2hEsIQqFpY4IRiDFYNuMxJFiXysAjv3CB15ULwWBiRzEfH/hw8s2ZzBrQiGIncZ5J1veAElWhto/RIWSi2axc= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c8ad1b78-c92b-4632-7ca8-08da06bf56b9 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:49.1738 (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 21/21] avcodec/flashsv2enc: Avoid opening and closing z_stream 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: 21hBPSporEo3 Instead initialize a z_stream during init and reset it when needed. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/flashsv2enc.c | 70 +++++++++++++++++++++++----------------- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/configure b/configure index ee3c6783f3..b175019a61 100755 --- a/configure +++ b/configure @@ -2812,7 +2812,7 @@ fic_decoder_select="golomb" flac_decoder_select="flacdsp" flac_encoder_select="bswapdsp flacdsp lpc" flashsv2_decoder_select="inflate_wrapper" -flashsv2_encoder_deps="zlib" +flashsv2_encoder_select="deflate_wrapper" flashsv_decoder_select="inflate_wrapper" flashsv_encoder_deps="zlib" flv_decoder_select="h263_decoder" diff --git a/libavcodec/flashsv2enc.c b/libavcodec/flashsv2enc.c index 56ea0ed0a4..9b8a891ae4 100644 --- a/libavcodec/flashsv2enc.c +++ b/libavcodec/flashsv2enc.c @@ -52,6 +52,7 @@ #include "internal.h" #include "put_bits.h" #include "bytestream.h" +#include "zlib_wrapper.h" #define HAS_IFRAME_IMAGE 0x02 #define HAS_PALLET_INFO 0x01 @@ -112,6 +113,7 @@ typedef struct FlashSV2Context { uint8_t use_custom_palette; uint8_t palette_type; ///< 0=>default, 1=>custom - changed when palette regenerated. Palette palette; + FFZStream zstream; #ifndef FLASHSV2_DUMB double tot_blocks; ///< blocks encoded since last keyframe double diff_blocks; ///< blocks that were different since last keyframe @@ -136,6 +138,7 @@ static av_cold void cleanup(FlashSV2Context * s) av_freep(&s->frame_blocks); av_freep(&s->key_blocks); + ff_deflate_end(&s->zstream); } static void init_blocks(FlashSV2Context * s, Block * blocks, @@ -234,7 +237,9 @@ static av_cold int flashsv2_encode_init(AVCodecContext * avctx) if ((ret = av_image_check_size(avctx->width, avctx->height, 0, avctx)) < 0) return ret; - + ret = ff_deflate_init(&s->zstream, s->comp, avctx); + if (ret < 0) + return ret; s->last_key_frame = 0; s->image_width = avctx->width; @@ -357,41 +362,47 @@ static int write_block(Block * b, uint8_t * buf, int buf_size) return buf_pos; } -static int encode_zlib(Block * b, uint8_t * buf, unsigned long *buf_size, int comp) +static int encode_zlib(Block *b, uint8_t *buf, unsigned long *buf_size, + z_stream *zstream) { - int res = compress2(buf, buf_size, b->sl_begin, b->sl_end - b->sl_begin, comp); - return res == Z_OK ? 0 : -1; + int res; + + if (deflateReset(zstream) != Z_OK) + return AVERROR_EXTERNAL; + zstream->next_out = buf; + zstream->avail_out = *buf_size; + zstream->next_in = b->sl_begin; + zstream->avail_in = b->sl_end - b->sl_begin; + res = deflate(zstream, Z_FINISH); + if (res != Z_STREAM_END) + return AVERROR_EXTERNAL; + *buf_size -= zstream->avail_out; + return 0; } static int encode_zlibprime(Block * b, Block * prime, uint8_t * buf, - int *buf_size, int comp) + int *buf_size, z_stream *zstream) { - z_stream s; int res; - s.zalloc = NULL; - s.zfree = NULL; - s.opaque = NULL; - res = deflateInit(&s, comp); - if (res < 0) - return -1; - s.next_in = prime->enc; - s.avail_in = prime->enc_size; - while (s.avail_in > 0) { - s.next_out = buf; - s.avail_out = *buf_size; - res = deflate(&s, Z_SYNC_FLUSH); + if (deflateReset(zstream) != Z_OK) + return AVERROR_EXTERNAL; + zstream->next_in = prime->enc; + zstream->avail_in = prime->enc_size; + while (zstream->avail_in > 0) { + zstream->next_out = buf; + zstream->avail_out = *buf_size; + res = deflate(zstream, Z_SYNC_FLUSH); if (res < 0) return -1; } - s.next_in = b->sl_begin; - s.avail_in = b->sl_end - b->sl_begin; - s.next_out = buf; - s.avail_out = *buf_size; - res = deflate(&s, Z_FINISH); - deflateEnd(&s); - *buf_size -= s.avail_out; + zstream->next_in = b->sl_begin; + zstream->avail_in = b->sl_end - b->sl_begin; + zstream->next_out = buf; + zstream->avail_out = *buf_size; + res = deflate(zstream, Z_FINISH); + *buf_size -= zstream->avail_out; if (res != Z_STREAM_END) return -1; return 0; @@ -559,7 +570,7 @@ static int encode_15_7(Palette * palette, Block * b, const uint8_t * src, } static int encode_block(FlashSV2Context *s, Palette * palette, Block * b, - Block * prev, const uint8_t * src, int stride, int comp, + Block *prev, const uint8_t *src, int stride, int dist, int keyframe) { unsigned buf_size = b->width * b->height * 6; @@ -574,12 +585,12 @@ static int encode_block(FlashSV2Context *s, Palette * palette, Block * b, if (b->len > 0) { b->data_size = buf_size; - res = encode_zlib(b, b->data, &b->data_size, comp); + res = encode_zlib(b, b->data, &b->data_size, &s->zstream.zstream); if (res) return res; if (!keyframe) { - res = encode_zlibprime(b, prev, buf, &buf_size, comp); + res = encode_zlibprime(b, prev, buf, &buf_size, &s->zstream.zstream); if (res) return res; @@ -656,7 +667,8 @@ static int encode_all_blocks(FlashSV2Context * s, int keyframe) b->flags |= HAS_DIFF_BLOCKS; } data = s->current_frame + s->image_width * 3 * s->block_height * row + s->block_width * col * 3; - res = encode_block(s, &s->palette, b, prev, data, s->image_width * 3, s->comp, s->dist, keyframe); + res = encode_block(s, &s->palette, b, prev, data, + s->image_width * 3, s->dist, keyframe); #ifndef FLASHSV2_DUMB if (b->dirty) s->diff_blocks++;