From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D10884109A for ; Tue, 15 Mar 2022 20:07:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0D40068B073; Tue, 15 Mar 2022 22:06:38 +0200 (EET) 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: =?us-ascii?Q?Dp8CR9WN6k12Ru0guThW3YwEEhZKhCPVoxStg0f2qwQLOAJZh2HWVbtBcPpF?= =?us-ascii?Q?ATIaoRqqvdsrVxveorZE0OCfy9dRaxMN15ibB1swusJqxQ+bXCqpHFjHm19x?= =?us-ascii?Q?J/su9arHiXfmGdKW4Dr/X5eSRdcNhvuC/DDUWk5Sc9q5HaUPv0oSpw1tqA98?= =?us-ascii?Q?J3ZoQVZueHmaGPVqM/eC/V+tekP/HOm97p8HlsYn3Lu1Ry1AYw+FDVyc5WyT?= =?us-ascii?Q?8W5uEV2eyVnF+5roJcKOCtCwYFo3JDnnPESstZn6aGZYj/kBSvzyX6NHm6F3?= =?us-ascii?Q?fv/NxQA/oTUJtsV5nRPhsONCJSPzTB18B0dgsSyDNJ5LKCjJPoImrviNRuWb?= =?us-ascii?Q?QYEeJFSXLknHOxKzNRGC9iHBgNP1bzcXrVRT0iTW7GmMuW4cqeyhUbeSVdV8?= =?us-ascii?Q?BUV9CtS5alJqJ73UQLvwEz5epChaWK1xrwjvhTJtK0ahIkq++j9Kum7O3H9M?= =?us-ascii?Q?EDCbgSwhO1f5lmmM4U0uxKp+AbSZFDd2TEmH9cS9/wSetVyCbi59ZhcnAWNA?= =?us-ascii?Q?7+FjndM/d/BN5AvvjM+h/lpew89Z6fimU6DGvkR8KztaFml11gqhNQThBrj+?= =?us-ascii?Q?mphQ0aXsGTcYGwZgp70EbK+b5U0/DHlLUPBmws48WFIAOPx0EL2CPz8wabKl?= =?us-ascii?Q?x/DyXilciQREu/pUnfhlHw4PNWHL0lmXlxiFJ7fzSmBmWK1ajjmXIPX0yXH1?= =?us-ascii?Q?Z57cnlyMtkH3ma2JrfcXDPXo4EtKZXIYDLslu1Q9KgyQ1AqbIluf4P77Vo+v?= =?us-ascii?Q?Lijcp0VvSUG6tY0XyViVdceqbghfCq1XUYNsl+oZtfLrLWVexpI9cRSqf2U1?= =?us-ascii?Q?IaY6d41tYGl80mgvL2EKFv7Bcn6c7yQafv1yjseBXJGNMKufDFMn8Ll0Ou5X?= =?us-ascii?Q?pm3ABEr0jOI/o+iMe3mZrybd6jAe4E2WClAjZg9ukp+FFB9cqWHaeYr16jHF?= =?us-ascii?Q?uNZTAAiJeerDBNdp5NZg88Rhj/qLkmOV138Nnt9VunB09sDkLx2XWqx/CzDI?= =?us-ascii?Q?m00CwiOEYbandRQhzRYZfygDLYTTIGJhDZHDIjy4/e3r0DWN+X7C/e0rHTuw?= =?us-ascii?Q?vQX7r93eTBUIt3KSiyQdL25JZFEdCHt2GCpEt89q/tKRLi2geRctpx0OfOUJ?= =?us-ascii?Q?JBp0mkM2TFPKR2z4y3viMKR4EP6AfRCPfgNSgDCI9EdoOaWPlwzRei4=3D?= 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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; } -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".