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