From patchwork Tue Mar 15 20:05:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34768 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp3314081nkb; Tue, 15 Mar 2022 13:07:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRinnDV4DND4VXBio070goLx39xpcECAAx4a2TvMyYi7a/cn/rKXrHSyShPE84VGfuYIPO X-Received: by 2002:a17:906:66cb:b0:6cf:e4f7:9504 with SMTP id k11-20020a17090666cb00b006cfe4f79504mr24580711ejp.142.1647374821716; Tue, 15 Mar 2022 13:07:01 -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 n8-20020a05640205c800b00415ecf633fesi11074edx.510.2022.03.15.13.07.01; Tue, 15 Mar 2022 13:07:01 -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="KOaVgl/B"; 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 522D168B03D; Tue, 15 Mar 2022 22:06:37 +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 E629168AF33 for ; Tue, 15 Mar 2022 22:06:30 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=arE0SCCNvNMkdVQado6r75rzFH52ZB0W6lC2D4sCb9wVEe4ZXbeQK64Oh7krRPOUGTfzEl/uYpBXQJkczD7b7juTz8abAx7+AwzuVxa1xGOu1cnSmzLwELr/XtygbK+UU83CYevJtHpnVNBt9vvDiCn+uYywxmbTDqazZUDAWrnSbgVoVRNq1v0s382x2JTa2h63XTZRRecYBqTXmuJ0gkAwKZxdZBF+jS3Uexvbmyack+kqBXXRiVy2X/9P1SDiButluJ5JryzIOWHzgl/VcVjXPR9SGf9kxJ0+PZ/sQapWjpj5vhPOuJiQkGdEK1Jt9pmqdF15tsYKyefa32hZnQ== 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=gC177nq8lTEyKgOfjcHJqJrLWpqDOPcD3u89h0r0Fts=; b=Le/nOFeVtXq6sRyi+0mCvtWwWO5zClE2+FIf+3R6sbOFMuB9T3f2DVTfbj0ApVHosNEu/AM0I4dQQ6v1YSaO/fXPEFCn5y089hp+ryXRSaKKd8+Eoukf+AG/AEveLPcw2fbiw99kgbqsPGJhLwZ8wrC8EFNUX7Sz3u319jqrPk7DWJprZweFyeVBl+oXgPvIq+9SclEblsYuczhk2XyzmqYnguSHDOZZtJCCHHQtrQnfSLPwkQiJ4XSkWnm/eep+tfWRldDKT21231aSWRizXw3D8oOiWsB7F31i0FBOBo+u0jp68SlYn0mOboZBMAmuCFtGeStHpDnpRq6VikkVaQ== 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=gC177nq8lTEyKgOfjcHJqJrLWpqDOPcD3u89h0r0Fts=; b=KOaVgl/BR4YgiuCISbq/iTea4lAVRHxYPl9yIaM9ZUgU4Gi805LPs/gBcMNFMrMPdYrWUC2pKJwn4cI5pS8Nq9BWWU/sIgMRHQk26njLZBoiPKKNYgjfKWJ2qjvhAzR94WXOz9dakfeaJPNUY4UmmZQ0nUJRZfgrt+wbit0ztjlq6yvHG6VEFrdKPgTCEN98sh2BQ0edmOz98Cb1c9DeTJgRoTYpAmGSoAkxVQlmjNB01QMPfTYgGir0tSaCp2bK+dbupfI8EqUS2HVt8t2UFtVqz4FDrxR6BT85ZtJmtOYLwaQIs0lJUr+rmy7HuNuMAoJmkA6udHJO6JhvOzUwgQ== 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:29 +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:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Mar 2022 21:05:56 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [IttWx812gppivrF6CZqcYx55PCPsA2j+] 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-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b5d1f6a-472b-43a4-d66b-08da06bf4adc X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQIK6GOv6I/5+ncmNhpuEjVDy4rDU/3HqsNTIAxbwtq2EzitiOxNuCGmuikwet74/kDXg9+mBGdKjmLY4+UwlF5vYlmQj3tAniWXEOxIwiu2hTQn4ZO6c0nHeTCJwOdEdMXiecgZVjGC8JJXI7owWnSMbOgRc7ZdABDEPeJ1Qgjsu6NqsHz9QJ9CdryvT1g0oF3TFJNsCAyK4uyyFU/7iCqUFtdDzLHZmz6kGGO/BToLjBwXFV376iYg5CqqFfC6Udlp9ZeoGJy3BvvMCvXjHAviiBhPkhAu5xZiY1BH0Q0JIV7yD4NcdAzkpixVKNiEDdBI4qSjiUPAjwfEtzqVhBVfQITIrpZDiiwt9ZBksbOxdT8fIx+YP13wzAv9spDIXgIqY0ZZQtenU66eqfb/VGYNFGScN3xOMqy6hqKop1B+YE29yZoTCsNUQdv2BtZ4m1go7pPm5iWCsn29TAjWQpOoeWJd/3rzT2vmiU880ppFGnXz6cDjgJEevlREKEGU1+/evg5SPQZnt20VGC/9wgbNLF6FlFg/dWKdvCUWDHsyHX0TnwVRqFanGOXJ6jnMOBzG9j/6lTYTfT37ekZ8vMEWq5wrfIH11TMzyjLa3ynBAB/n9m//65UkYFfbEbYVswL66RPUNzysAfpkji/WTSK9BYo3sNXdidtgFAIsH9K/ea6HAzh399reGjS6FM5mKXMMr7xbHGDmQTJwIXyE0PTCde3FeOcO7Gs02VF8WA5/Lq6UeuElgxlW5ghHJ79ZlA= X-MS-TrafficTypeDiagnostic: PR3PR01MB7035:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3PO6soho1hZ2qdimmIW34WZXdTb1F+xpNEfIolGFXx9rAjuoSKwXEJYYn08CqzDeECWEtqenahLMOcwPOMJAMBSIvUjVSbx630+BDbgtOHu6F8XPM6Y9kQr/w8+TrRlXyuO5mmR/JFNCgAM+F37vfk8+eP0GI+CDs4mpw1Cl8YUNFIacPZ23p+bJKIp7LXOdN5hEcxz5HpzjIyRokfIhXMJFdJ1i24xzvg4cp/8RzozRQsaM5eVRx3caqtGVekCEQ+7V95OBS+K85FW4V8+YwqhkQzHFL4zKUXneAlcwryiJCwnWEJGR3Dc2XWVAftVgNtfihgJT9g+of+gWyd5ChCNfF5pFr4wBANJb0QY2fuiq5i7NfmmgRyYRZkoEKz4q4GZFmdkX3wzVnjWbm27AJCGPuX2JJOpCChheI03eHFJqBw+3w4Bwqs2Y38f4vXHoMOqazyHrlFLrI0xSunPlauzdyUe19JX6lcoHlHcdcBBybQMuOjP9WYmwkYW32L2siYe4Ufhvwh1mPTE/W6/CPU05trTMbMBqHhdYvBUhjzfrgOvXxFKa1S4xf2l1Taa6DPfr88QJVmTF4ovyd/6Igw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Rzq5glP04pdY7LMkFZO2h7dhVs7VtuAXfosO04M48Mje6s4dPsTJz0/FhKzG0Zfo47LzMPtM3wKKoemTs1UdmGrkppuvvmiBtMNPtOuWkJHBe76odF4rsYO2P+aRaRgQTuPgESbeeERrqLmYZUkqkQETHsG4JSUP24kpBsTTjggaq0RrH3ucOD0JTTjkBgYbGfANdYmXmf1CZi9SZHdfze+kHUIIEqCHGFT1ncpJrVYbIAR3oyBaWe7yhEBBDzTBGmftlLBcB2j6u488XRdXGdIFk5AemxLuwtjFh3yqSXbBiuwHZ/x9sY3WW0FZdO9EM4u0gmXENam14gpPpHfjyTEoNTtZy5fwVtsGnDmLcQgTA6zytPIXjZY5LQt/y9vv6XEjmCtAKqBjIZaKqbmd6vCuctoEl+4aB0QQS4RA9egWs6Q/C7ZiAN+z33vFoRJvKEFCHyYqSNzmg5Q7svs0Dq9iUJWRV6p9v1inKw65Wm4cGjswWtYACzZp/RaEWRgmE7XDQJY2hCjVINnruOEKhXQBIJyeizQnrh0PvU/fzn0WB4P+SnrcfGf/WNcVxAqLw85PAIuEUB0nJMMQ+mBIAchnyi/bNhSvJtM3b/s9p3YKsrPQsOf4/Ad9MU70ldDtiipq5y5Z12TaeJoHpXEzvEXC+DD7+tikGzVWpo7+Tas27bqMTKpoOUQfyLDQyLpUC5slULlBn+v3D75qgMPyJwjMhdNG6ZaZTdSnq0dahoaQUk4ZUhP+9NMHkwXITlcRZSnxS7FeK79wmgNd1NqQSeOmQ3rglo641K3D93m4UXhR3OghQR8Q5icqkhAM142H2/zAxRcQNL6sB/Lsvx0D9QsPb4xaqHAqTwiW22azmAXErZ723BbxctmgYEdII6RzB4sPkggHvLMfpuooSqnhTmbxdmX+iy+TqzE+z8E5fXH7I+f5O/LToVahdJV3XAqR5dOBfolZ/g1PMW+4XP+grxYoprMRJcLeb0CZLy+xuF4woJX9s+4YDzvCp/yIlIg5rZ2pg+uqtD1/ko17gLntlpn+FDh70TWcg0h2nXfhWkw4qUip8sPqdKNCaKWDkKf9d+PLMhuufEKYSlfk6ldo0+6fwa9AVl8WeB7AYiXMNCGup1KmHCh3u9fkDITA4klpskUrI9mFOmY+JbcdWRP5rJQZmTktFkEsAFdO1DHIb/Y= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b5d1f6a-472b-43a4-d66b-08da06bf4adc 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:29.3196 (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 06/21] avcodec/tscc: 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: g9B1+azTwXhq Returns better error messages in case of error and deduplicates the inflateInit() code. Signed-off-by: Andreas Rheinhardt --- configure | 2 +- libavcodec/tscc.c | 36 ++++++++++++------------------------ 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/configure b/configure index fdc3f3d28c..ad5b5f1727 100755 --- a/configure +++ b/configure @@ -2953,7 +2953,7 @@ truehd_decoder_select="mlp_parser" truehd_encoder_select="lpc audio_frame_queue" truemotion2_decoder_select="bswapdsp" truespeech_decoder_select="bswapdsp" -tscc_decoder_deps="zlib" +tscc_decoder_select="inflate_wrapper" twinvq_decoder_select="mdct lsp sinewin" txd_decoder_select="texturedsp" utvideo_decoder_select="bswapdsp llviddsp" diff --git a/libavcodec/tscc.c b/libavcodec/tscc.c index 841f0c0d14..cba4d5bdc9 100644 --- a/libavcodec/tscc.c +++ b/libavcodec/tscc.c @@ -41,6 +41,7 @@ #include "decode.h" #include "internal.h" #include "msrledec.h" +#include "zlib_wrapper.h" #include @@ -57,8 +58,7 @@ typedef struct TsccContext { unsigned char* decomp_buf; GetByteContext gb; int height; - int zlib_init_ok; - z_stream zstream; + FFZStream zstream; uint32_t pal[256]; } CamtasiaContext; @@ -69,6 +69,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; CamtasiaContext * const c = avctx->priv_data; + z_stream *const zstream = &c->zstream.zstream; AVFrame *frame = c->frame; int ret; int palette_has_changed = 0; @@ -77,16 +78,16 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, palette_has_changed = ff_copy_palette(c->pal, avpkt, avctx); } - ret = inflateReset(&c->zstream); + ret = inflateReset(zstream); if (ret != Z_OK) { av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); return AVERROR_UNKNOWN; } - c->zstream.next_in = buf; - c->zstream.avail_in = buf_size; - c->zstream.next_out = c->decomp_buf; - c->zstream.avail_out = c->decomp_size; - ret = inflate(&c->zstream, Z_FINISH); + zstream->next_in = buf; + zstream->avail_in = buf_size; + zstream->next_out = c->decomp_buf; + zstream->avail_out = c->decomp_size; + ret = inflate(zstream, Z_FINISH); // Z_DATA_ERROR means empty picture if (ret == Z_DATA_ERROR && !palette_has_changed) { return buf_size; @@ -102,7 +103,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, if (ret != Z_DATA_ERROR) { bytestream2_init(&c->gb, c->decomp_buf, - c->decomp_size - c->zstream.avail_out); + c->decomp_size - zstream->avail_out); ff_msrle_decode(avctx, frame, c->bpp, &c->gb); } @@ -123,7 +124,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, static av_cold int decode_init(AVCodecContext *avctx) { CamtasiaContext * const c = avctx->priv_data; - int zret; // Zlib return code c->avctx = avctx; @@ -151,21 +151,11 @@ static av_cold int decode_init(AVCodecContext *avctx) } } - 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; - c->frame = av_frame_alloc(); if (!c->frame) return AVERROR(ENOMEM); - return 0; + return ff_inflate_init(&c->zstream, avctx); } static av_cold int decode_end(AVCodecContext *avctx) @@ -174,9 +164,7 @@ static av_cold int decode_end(AVCodecContext *avctx) av_freep(&c->decomp_buf); av_frame_free(&c->frame); - - if (c->zlib_init_ok) - inflateEnd(&c->zstream); + ff_inflate_end(&c->zstream); return 0; }