From patchwork Wed Oct 30 13:20:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 16040 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E02D744ABA8 for ; Wed, 30 Oct 2019 15:21:21 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CF6A268B372; Wed, 30 Oct 2019 15:21:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1D02768B380 for ; Wed, 30 Oct 2019 15:21:15 +0200 (EET) Received: by mail-pl1-f195.google.com with SMTP id t10so986553plr.8 for ; Wed, 30 Oct 2019 06:21:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=kt++6V+FI8jx9IJXXa7i13xK004udpleuxXO6JxR5bI=; b=bIJUeEgz9LaergXrnuGDXoZP+Ah4NQDh5FWb52A94JSvIgib5H1QasboYJo+8EpJPB vc/b4qMPQVs+xnDyNE4/DDj1wba86FO36ms5V6ghr84RIT7MvtviMrhqDfzBnW+Apwzi UECZRe4qHbyomMiPMGguj3jk1meXC/3JUMrmLSfCLhD45ZO5OxIaPxNcooD/qtGzftJD Rq2LX/cFBZTQxtyz2GfwnamPXz0oKpY7DaS5wJGigco7qtJYmdm8+Zq5dmUi/Zfo3ToL YSiHXPKWaOAQV/xmNVnSoh6eXshZsVzbVnkKAmyaTq3tKIUPGx2+DjTagQF2+9scuim7 Yipg== 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:in-reply-to :references; bh=kt++6V+FI8jx9IJXXa7i13xK004udpleuxXO6JxR5bI=; b=AJoG07KRBBSClKYiQWHQZM5uQC3aI8u0VlUIMiH+IcBaebipjtKvuA9k5vfgQwFZ+m M2Gh/AmqodzpBFl/NOy4OJ45mV2jSA+0aFLlgjtsqXKtCVeWFZIlTXLzpyvZ17ZYOsVA kJm8hjfSfy0RaCm8HgeX2eu71L83MK/waaUmlZ7ETqR8IjpyR23VTCvhtrPggbg2YwP0 /woZpuaXGqtmnkph1ICyL2yF/A0bNnUp4p2I8gf42aOM5dHilwY0lJR9849FARf7pX6A hvHxlszoQ6txOTNamYJrVFPFjqHEKsWB/mg7uOpFeYflsyDVn4eXv6pVxL+VTMIS67Zn AGkQ== X-Gm-Message-State: APjAAAVJ+aUF+gF7ot9ewvzixJjjfgeJg75sx6yc0kDNibPVZelxGVKK CGspRulnceUIuNAWj2QTfgAv/05UGbA= X-Google-Smtp-Source: APXvYqy7s9F2BxsXBKDF/1YnmgZtpg3ltoi3HsZouvTpD0GmOTjALsDej8nzBbT5yAThtHJdoN+P9Q== X-Received: by 2002:a17:902:9881:: with SMTP id s1mr4246plp.18.1572441673361; Wed, 30 Oct 2019 06:21:13 -0700 (PDT) Received: from vpn.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id 127sm3067149pfy.56.2019.10.30.06.21.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 30 Oct 2019 06:21:12 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 30 Oct 2019 21:20:56 +0800 Message-Id: <20191030132056.21150-5-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20191030132056.21150-1-lance.lmwang@gmail.com> References: <20191030132056.21150-1-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v2 5/5] avfilter/vf_lut: simplify code 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavfilter/vf_lut.c | 60 ++++++++------------------------------------ 1 file changed, 11 insertions(+), 49 deletions(-) diff --git a/libavfilter/vf_lut.c b/libavfilter/vf_lut.c index 1fdc5e1812..3aed4ccc2c 100644 --- a/libavfilter/vf_lut.c +++ b/libavfilter/vf_lut.c @@ -220,6 +220,10 @@ static int config_props(AVFilterLink *inlink) int min[4], max[4]; int val, color, ret; + s->is_yuv = !(desc->flags & AV_PIX_FMT_FLAG_RGB) && + (desc->flags & AV_PIX_FMT_FLAG_PLANAR) && + desc->nb_components >= 3; + s->is_rgb = ff_fill_rgba_map(rgba_map, inlink->format) >= 0; s->hsub = desc->log2_chroma_w; s->vsub = desc->log2_chroma_h; @@ -227,42 +231,7 @@ static int config_props(AVFilterLink *inlink) s->var_values[VAR_H] = inlink->h; s->is_16bit = desc->comp[0].depth > 8; - switch (inlink->format) { - case AV_PIX_FMT_YUV410P: - case AV_PIX_FMT_YUV411P: - case AV_PIX_FMT_YUV420P: - case AV_PIX_FMT_YUV422P: - case AV_PIX_FMT_YUV440P: - case AV_PIX_FMT_YUV444P: - case AV_PIX_FMT_YUVA420P: - case AV_PIX_FMT_YUVA422P: - case AV_PIX_FMT_YUVA444P: - case AV_PIX_FMT_YUV420P9LE: - case AV_PIX_FMT_YUV422P9LE: - case AV_PIX_FMT_YUV444P9LE: - case AV_PIX_FMT_YUVA420P9LE: - case AV_PIX_FMT_YUVA422P9LE: - case AV_PIX_FMT_YUVA444P9LE: - case AV_PIX_FMT_YUV420P10LE: - case AV_PIX_FMT_YUV422P10LE: - case AV_PIX_FMT_YUV440P10LE: - case AV_PIX_FMT_YUV444P10LE: - case AV_PIX_FMT_YUVA420P10LE: - case AV_PIX_FMT_YUVA422P10LE: - case AV_PIX_FMT_YUVA444P10LE: - case AV_PIX_FMT_YUV420P12LE: - case AV_PIX_FMT_YUV422P12LE: - case AV_PIX_FMT_YUV440P12LE: - case AV_PIX_FMT_YUV444P12LE: - case AV_PIX_FMT_YUV420P14LE: - case AV_PIX_FMT_YUV422P14LE: - case AV_PIX_FMT_YUV444P14LE: - case AV_PIX_FMT_YUV420P16LE: - case AV_PIX_FMT_YUV422P16LE: - case AV_PIX_FMT_YUV444P16LE: - case AV_PIX_FMT_YUVA420P16LE: - case AV_PIX_FMT_YUVA422P16LE: - case AV_PIX_FMT_YUVA444P16LE: + if (s->is_yuv) { min[Y] = 16 * (1 << (desc->comp[0].depth - 8)); min[U] = 16 * (1 << (desc->comp[1].depth - 8)); min[V] = 16 * (1 << (desc->comp[2].depth - 8)); @@ -271,24 +240,17 @@ static int config_props(AVFilterLink *inlink) max[U] = 240 * (1 << (desc->comp[1].depth - 8)); max[V] = 240 * (1 << (desc->comp[2].depth - 8)); max[A] = (1 << desc->comp[0].depth) - 1; - break; - case AV_PIX_FMT_RGB48LE: - case AV_PIX_FMT_RGBA64LE: - min[0] = min[1] = min[2] = min[3] = 0; - max[0] = max[1] = max[2] = max[3] = 65535; - break; - default: + } else { min[0] = min[1] = min[2] = min[3] = 0; - max[0] = max[1] = max[2] = max[3] = 255 * (1 << (desc->comp[0].depth - 8)); + if (inlink->format == AV_PIX_FMT_RGB48LE || + inlink->format == AV_PIX_FMT_RGBA64LE) + max[0] = max[1] = max[2] = max[3] = 65535; + else + max[0] = max[1] = max[2] = max[3] = 255 * (1 << (desc->comp[0].depth - 8)); } - s->is_yuv = s->is_rgb = 0; s->is_planar = desc->flags & AV_PIX_FMT_FLAG_PLANAR; - if (ff_fmt_is_in(inlink->format, yuv_pix_fmts)) s->is_yuv = 1; - else if (ff_fmt_is_in(inlink->format, rgb_pix_fmts)) s->is_rgb = 1; - if (s->is_rgb) { - ff_fill_rgba_map(rgba_map, inlink->format); s->step = av_get_bits_per_pixel(desc) >> 3; if (s->is_16bit) { s->step = s->step >> 1;