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;