From patchwork Thu Mar 29 13:30:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: wm4 X-Patchwork-Id: 8225 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp1693336jad; Thu, 29 Mar 2018 06:30:51 -0700 (PDT) X-Google-Smtp-Source: AIpwx48sIQo+YyQ4L+16Ltfn0VlnM+f6O7OU+9Uvfq6nR74N6v4YhzeSeWs9VZLsPDQnwwzU+Y1Y X-Received: by 10.28.7.141 with SMTP id 135mr6288143wmh.157.1522330250978; Thu, 29 Mar 2018 06:30:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522330250; cv=none; d=google.com; s=arc-20160816; b=RS4Ffxa1qFY1dOhLVAcqnl6pbtk7GAt8bil9V+XnF2oDpKnqTL7ujS1jCNVwKe0uF+ nvUaOGAxObNoSUI/DwEESmLMbCvgYyPpdtwmMfbsffqt7vwwal6fjxmvHX9vUZUtmYxX lJIDcCapJh7IP9uPGlRXT1F1oG/8Fx+avTaM5xYVyLP6Ln2IZ56vNXzUC91mAqbsGNpD 4ILxPjHC/KCJ+GjP9KQIy5p6c7iPrBWhCiQhQ7aSH94qgwHuPSM/YsnU3u0+VShnxgC/ +qKF0xL1crhgHAPnkQ6EHh3XfhCQUUG54wCLwP3OIl+fsNTeLOs5Bn2zVyy4aq8o0Us+ pVhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=+v7LLzM5MonjRMqz60BpNpI3Fw8+gWhgPBcnvqFIro4=; b=kuJPqMCfCkPAwBAmTWu85DP1/6KMztYe+a4GhB6eYqfO2aPe4yLM4F59Wf5Tv+0ABu mgo93BVWdnehTEAVUd8g+/7/yzENQ1SsCzdZI475MyLrQ5mSVXYLJG+31qZiICv83ypH wdBhe8HggsVPKiTGYU/ihaoqyecvdWeHuiQKZ1XhyUMUP1+igz8HRPOcsRZ02grm0TVU Dqc07eY0b8OapFbQQA3o1YPt9YUPgKOYDL/1IKpeDiRbhl3fkn1v+PmVvr497+SG9/Fk VB3ikWa0m4j4TAIHDvVnJtBiGX0Qu5znW4Qo+OVo94YnYA705uDDZ4QxL3evWc9cR31A GfQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@googlemail.com header.s=20161025 header.b=j1FDOjak; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=googlemail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id k185si1361102wma.213.2018.03.29.06.30.48; Thu, 29 Mar 2018 06:30:50 -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=@googlemail.com header.s=20161025 header.b=j1FDOjak; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=googlemail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E5FD1689C88; Thu, 29 Mar 2018 16:30:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F072D689BD7 for ; Thu, 29 Mar 2018 16:30:20 +0300 (EEST) Received: by mail-wm0-f67.google.com with SMTP id x82so11638640wmg.1 for ; Thu, 29 Mar 2018 06:30:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Glir4ZEUgnRJIb27Tly6fC4rQjF4HDqSl32bRQaPgsA=; b=j1FDOjakR1RecQiVD7fyTgpRKDebyzqn31NM+taKP6vf4LwtYhPOwLE43vfUx5U7r7 fB7HrK7J6IiJQvrdVpk/ebUyA97k880rlnB3sVn4l0FC6Wxx8GzlpehUGqp7qgyrcw0x O63p/SPBn0QDHDa7VE/tPPEEhuyhfLwQabRCu/OwY4lTAwgycYs1HxCjS4DaJGdy1br7 86uQXZ5UvLqs7KtnA3AXd6clgUB9Uc5ObqXA8NvvTcT5Ro1k/bwhCi9WhnvAWPfhsUpr NQdVts87N7LKgaw8OkfyRKN2M2u43ykYVeadgUcwLAF5wH0db8s3Cxw6JhoHLJ22v0/c rT3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Glir4ZEUgnRJIb27Tly6fC4rQjF4HDqSl32bRQaPgsA=; b=ixZjpwJolFj4UrO2R6jdyfvxYg0w9v3IpPmw1hU5D7MJnVT3VhtXOyr8x2Z4Goy38M qZTsiTpwMZ7RUl4IHH/Eeqevp2b8+qnko7NqEoYbibfqg2PTVTX4hQdXwNzPGA/pIVK3 cWcsmHjUQpGZdlPy8ICZh2nl5Wg4GoJb+ATPQwXL3ajoDKZpQR5DJuvPtywiUtlJwecS r4FvNzVabcbcwl77gbzT1OBAnWY4KgYbHmCAe7vjU8PxKUXghDn2TaLM/tmE6zlBrdBu jlQ204BAngo0q1pmBe8oWfPYEk5+Humk2ux0mk+geZIFllNRiVId7NWTNZK/bQZswS4x zRpg== X-Gm-Message-State: AElRT7ExmNrw2+THkYypDMuLCPQo5DnO11uMsqyYDJw/CbVrMFUr+o3b rWAgEfWDxX7O/cKHYlI8YWdrww== X-Received: by 10.80.189.194 with SMTP id z2mr7372628edh.255.1522330238652; Thu, 29 Mar 2018 06:30:38 -0700 (PDT) Received: from debian.speedport.ip (p2003006CCD4EDC480CC341E3A28E97C1.dip0.t-ipconnect.de. [2003:6c:cd4e:dc48:cc3:41e3:a28e:97c1]) by smtp.googlemail.com with ESMTPSA id k24sm4371873ede.62.2018.03.29.06.30.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 06:30:37 -0700 (PDT) From: wm4 To: ffmpeg-devel@ffmpeg.org Date: Thu, 29 Mar 2018 15:30:42 +0200 Message-Id: <20180329133043.21890-1-nfxjfg@googlemail.com> X-Mailer: git-send-email 2.16.1 Subject: [FFmpeg-devel] [PATCH 1/2] xwdenc: do not rely on AV_PIX_FMT_FLAG_PSEUDOPAL palettes X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: wm4 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This is the only code I found within FFmpeg that still inherently requires AV_PIX_FMT_FLAG_PSEUDOPAL. It's easily changed not to require it. Preparation for the next patch. --- libavcodec/xwdenc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libavcodec/xwdenc.c b/libavcodec/xwdenc.c index 43bca89033..81cca6c963 100644 --- a/libavcodec/xwdenc.c +++ b/libavcodec/xwdenc.c @@ -41,6 +41,7 @@ static int xwd_encode_frame(AVCodecContext *avctx, AVPacket *pkt, int i, out_size, ret; uint8_t *ptr, *buf; AVFrame * const p = (AVFrame *)pict; + uint32_t pal[256]; pixdepth = av_get_bits_per_pixel(desc); if (desc->flags & AV_PIX_FMT_FLAG_BE) @@ -180,11 +181,17 @@ static int xwd_encode_frame(AVCodecContext *avctx, AVPacket *pkt, bytestream_put_be32(&buf, 0); // window border width bytestream_put_buffer(&buf, WINDOW_NAME, WINDOW_NAME_SIZE); + if (pix_fmt == AV_PIX_FMT_PAL8) { + memcpy(pal, p->data[1], sizeof(pal)); + } else { + avpriv_set_systematic_pal2(pal, pix_fmt); + } + for (i = 0; i < ncolors; i++) { uint32_t val; uint8_t red, green, blue; - val = AV_RN32A(p->data[1] + i * 4); + val = pal[i]; red = (val >> 16) & 0xFF; green = (val >> 8) & 0xFF; blue = val & 0xFF;