From patchwork Thu Dec 16 10:33:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 32653 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp267014iog; Thu, 16 Dec 2021 02:33:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJxBDF+icmqr6gVPeMO6o5klHmwxZWqm+DBIrXG4Z3aS+CqvfLydd8ntCakFhdJtLTqkelDx X-Received: by 2002:a17:907:a41e:: with SMTP id sg30mr15343405ejc.612.1639650830958; Thu, 16 Dec 2021 02:33:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639650830; cv=none; d=google.com; s=arc-20160816; b=ZhbNdutWR+SqswdPA6RLODG0kD5wOe9K6r78CQ6V4XSQDWywZY1ycyjy+nrd2RnWNa ujuVvDHNM/6W4Ld8si9Yertjijd3dE0vG0om7m0QnLeSQx0Bf6uiklsx0A9d8biuRfw2 pnoq8KCQEeI7xELDaLxuqdM2qJqSva/L9dkgOgp+OEDm/LKL4u0EP3kyQ2vTyC7KfLJd zxKFz1QKbyOXPgBsB3GitOCm40YycAJ/OPDV6hfHAhG11VTdl+4mhOILhkQGlPW9QmLP YIO2sYG4iOIE9EDM/kvhfLqzdR2oEtIsHtj1G39om4b7YjzKodUXIhWQRKCNewqyE5za mD5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=BGKy8o05QRWYqsU/34k+oLr0+SI+l0PFa0HlOU0tCtA=; b=VWN8BTCfDZgiE7LMi2Bpw0Axn3HVz5YW4rXYgXvKUQVP5ZoqkuKX9WOKst1SmdtVQz SjEdaZdmkteeY1CA54ebhYumIBMY2mzyq1ulAikeVohxZOHeHml38sN2rjkOMjjwG106 QwfQMANcASUDcn6T9oTSV6TO+jvb+cbR8VseBHvhqXsDji34qulMMwkRDU1PPm+tdHx4 aIX/OzptMkBKG9VRvbuZhk7wgvm9gKYxJ1GCkTquQQZ445ykBTAwUP1N6qNd4JBVHX/u c/DwiaH0MmwYEkzzwycqCipcE2VF7PeUVj5VHDVcGEq+NjVHgBMj3HQW+hx+dmK6Va+M XJ0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=heyJpRZT; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c14si3814389ede.624.2021.12.16.02.33.27; Thu, 16 Dec 2021 02:33:50 -0800 (PST) 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=@gmail.com header.s=20210112 header.b=heyJpRZT; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8047068AE5A; Thu, 16 Dec 2021 12:33:23 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 78D3B68A486 for ; Thu, 16 Dec 2021 12:33:17 +0200 (EET) Received: by mail-ed1-f52.google.com with SMTP id z29so5184387edl.7 for ; Thu, 16 Dec 2021 02:33:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ufwSjYeEnx/CQhKanVljr6hYyhQfN0ZvrAv/4HhQFMg=; b=heyJpRZTD+JPn1FsOShEeNFpL1MLJxPRe6KaIwRBo3Ir4jPNsvFqs/v7UP9PiV2BvL FCtLUdfiVR1doVDrtdZVrxoAv5ylmRBMHskwHBBYFCtimCcFj40iWMfuqnU9XGe/YQqt jf/uP1sCB3HhO4VNFK72ms84k+RSvSf/drwD/9ILfCi2p6aK3yettkmnj8xycWJeJB/I A5lrmxPQrSnAEP2RRcEMrbZLMGLaq+pcAvoFgHTuhpO3qJjwbG319/rN+mObyPxbSKm5 ooEw1YkUFt7+ege/DVJFgYa8StQ4F0qMvkQadG1bVvcfOiQo07OmQati6gEQfWijx4Kr Hduw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ufwSjYeEnx/CQhKanVljr6hYyhQfN0ZvrAv/4HhQFMg=; b=haeK+eUh7jtQlACdqCXtZApD8xN5J+EUEQ7Fpd5vJvNU6gdVUp384uKtyl8v8SrrYr EyNhUEGgjXyB1bo5JJAmz618+ZRvEGlQAf2y5d8e20GY8QbiUCYkfmsJAb2rB7rTtv1M HzKwIg9v21yFEZwAUogzBVZz1NadVX/c3E71CL2mLs9UvR8Cu1NoZzETX4fcn/+HTJya DApwKuEy/7Aljkh7mPbl2Rj40m5LO1jmmbd/LA37CUMIiZE+VcP0pSSmD3huYMQW914S vBtOB4DXL4u71jixlkVhF7qWswfja6PvMhz+vyZNZ0cLPhBp1mqJwr/5pXYCtKuVhYDy KaPw== X-Gm-Message-State: AOAM530w4SqaaX308zMgOENVWLI70Sf7H4OwsfUzKxmti67P+PHXmddJ TkIKGUokWrkmxRQM6jOgo+yUtbRoQvQ= X-Received: by 2002:a17:906:1706:: with SMTP id c6mr15147500eje.343.1639650796146; Thu, 16 Dec 2021 02:33:16 -0800 (PST) Received: from localhost.localdomain ([95.168.120.84]) by smtp.gmail.com with ESMTPSA id sh30sm1684256ejc.117.2021.12.16.02.33.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 02:33:15 -0800 (PST) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Thu, 16 Dec 2021 11:33:16 +0100 Message-Id: <20211216103316.920100-1-onemda@gmail.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/cdgraphics: fix transparency handling 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: zDed+nlHqJbK Signed-off-by: Paul B Mahol --- libavcodec/cdgraphics.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libavcodec/cdgraphics.c b/libavcodec/cdgraphics.c index c9e265fa53..06f8392094 100644 --- a/libavcodec/cdgraphics.c +++ b/libavcodec/cdgraphics.c @@ -68,7 +68,7 @@ typedef struct CDGraphicsContext { AVFrame *frame; int hscroll; int vscroll; - int transparency; + uint8_t alpha[CDG_PALETTE_SIZE]; int cleared; } CDGraphicsContext; @@ -79,7 +79,9 @@ static av_cold int cdg_decode_init(AVCodecContext *avctx) cc->frame = av_frame_alloc(); if (!cc->frame) return AVERROR(ENOMEM); - cc->transparency = -1; + + for (int i = 0; i < CDG_PALETTE_SIZE; i++) + cc->alpha[i] = 0xFFU; avctx->pix_fmt = AV_PIX_FMT_PAL8; return ff_set_dimensions(avctx, CDG_FULL_WIDTH, CDG_FULL_HEIGHT); @@ -120,9 +122,7 @@ static void cdg_load_palette(CDGraphicsContext *cc, uint8_t *data, int low) r = ((color >> 8) & 0x000F) * 17; g = ((color >> 4) & 0x000F) * 17; b = ((color ) & 0x000F) * 17; - palette[i + array_offset] = 0xFFU << 24 | r << 16 | g << 8 | b; - if (cc->transparency >= 0) - palette[cc->transparency] &= 0xFFFFFF; + palette[i + array_offset] = cc->alpha[i + array_offset] << 24 | r << 16 | g << 8 | b; } cc->frame->palette_has_changed = 1; } @@ -346,7 +346,8 @@ static int cdg_decode_frame(AVCodecContext *avctx, return ret; break; case CDG_INST_TRANSPARENT_COL: - cc->transparency = cdg_data[0] & 0xF; + for (int i = 0; i < CDG_PALETTE_SIZE; i++) + cc->alpha[i] = 255 - ((cdg_data[i] & 0x3f) << 2); break; default: break;