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; }