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