From patchwork Fri Apr 3 16:06:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaaira Gupta X-Patchwork-Id: 3376 Return-Path: Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 93139600FA for ; Fri, 3 Apr 2020 18:06:33 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=es-iitr-ac-in.20150623.gappssmtp.com header.i=@es-iitr-ac-in.20150623.gappssmtp.com header.b="XwMTMdVb"; dkim-atps=neutral Received: by mail-pf1-x435.google.com with SMTP id u65so3687233pfb.4 for ; Fri, 03 Apr 2020 09:06:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=es-iitr-ac-in.20150623.gappssmtp.com; s=20150623; h=date:from:to:subject:message-id:mime-version:content-disposition :user-agent; bh=zE5knxhcYhCRxnze6uySiNoHusbMBNXrpSYW4s/wq0k=; b=XwMTMdVbAcmB6+LkDMBeQQk2oz58RvKfU8LxY41cM6GO27z6FNZ87vAxGOj8CQhVY2 RnaUv/+SXH+5jdLymnGttPxH+gMJ+FRTT3qp086pnkZfykFz9X9aXg7p+lUc+aGo9uNd sV7oQJ1FY95ZgCJaeozj925oNJsn+SigqmswSPfr1+2925Atp//fuwWGlszN3hXOX9nL Lb+7urDQYM/65yPuIrGUZrDlcUjwV+FnzluV5mgJ+Uk/6r2pqK6gGdVG/1YcVWrXdhdc /Sm9g+oQgqA6GstX1ULYu+Hq/ArRvruFFvfqWhvfdm99ZKbA0P7CNA+DVirUJlpmqsfp 3ZIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=zE5knxhcYhCRxnze6uySiNoHusbMBNXrpSYW4s/wq0k=; b=OX6GWgR0v6PUiHFY/OGtXh18dNPktIXl2pnrdQpBIHpmylXZRi5KqH5IveaNEN0FP/ 4w8/x9UNcWMyK2z7TuMDeLnxOunnt/dV7pbHcddJDSKTpMdITR0WJFNtbaEgz86Vy6IP DlGsQruAIhE8uT2mXY7fAISd26+fZePLvymU7lps0E92YYu1cSemOmt7H4eA1vLoHPMP G5tlI2pDfAXJMivA1i5UlgsVKQmmdHCQKpyZTgoM8jTavYMV/FNpBuQf2qHb01czvmGk smHfySHN2J1XoX3RXVJ+bl8qv6p0whyLvC62Vsy786qnGpV/VHAM6FSNr7o3Z3XXEWaL Kj5w== X-Gm-Message-State: AGi0PuZWdgax6BDPrjTx+rggghrkH5C5sQN/z92LXnf9eIRm6afi5beD B4fEq2eZxHKo0zbN8BewNzX/Z58fxWzVcw== X-Google-Smtp-Source: APiQypJAPyXrcyKqiotrYdZUCfobiGxKkFGS7/jWvT/k1tckIk0E1y5q8HKUwhhtm41mlc9QSSP8tg== X-Received: by 2002:a63:7a1e:: with SMTP id v30mr8601570pgc.84.1585929991646; Fri, 03 Apr 2020 09:06:31 -0700 (PDT) Received: from kaaira-HP-Pavilion-Notebook ([103.113.213.154]) by smtp.gmail.com with ESMTPSA id q123sm6195631pfb.54.2020.04.03.09.06.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 03 Apr 2020 09:06:31 -0700 (PDT) Date: Fri, 3 Apr 2020 21:36:23 +0530 From: Kaaira Gupta To: libcamera-devel@lists.libcamera.org, Kieran Bingham , Helen Koike , Vaishali Thakkar Message-ID: <20200403160623.GA6354@kaaira-HP-Pavilion-Notebook> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) Subject: [libcamera-devel] [PATCH v2] libcamera: pixelformats: Replace set of modifiers with single value X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Apr 2020 16:06:34 -0000 DRM fourccs look like they have a per-plane modifier, but in fact each of them should be same. Hence instead of passing a set of modifiers for each fourcc in PixelFormat class, we can pass just a single modifier. So, replace the set with a single value. Signed-off-by: Kaaira Gupta Reviewed-by: Laurent Pinchart --- Changes since v1: - reformat the code. - Make commit message more articulate. include/libcamera/pixelformats.h | 6 +++--- src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +- src/libcamera/pixelformats.cpp | 24 ++++++++++++------------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/include/libcamera/pixelformats.h b/include/libcamera/pixelformats.h index 9ce6f7f..89966e5 100644 --- a/include/libcamera/pixelformats.h +++ b/include/libcamera/pixelformats.h @@ -19,7 +19,7 @@ class PixelFormat { public: PixelFormat(); - explicit PixelFormat(uint32_t fourcc, const std::set &modifiers = {}); + explicit PixelFormat(uint32_t fourcc, uint64_t modifier = 0); bool operator==(const PixelFormat &other) const; bool operator!=(const PixelFormat &other) const { return !(*this == other); } @@ -29,13 +29,13 @@ public: operator uint32_t() const { return fourcc_; } uint32_t fourcc() const { return fourcc_; } - const std::set &modifiers() const { return modifiers_; } + uint64_t modifier() const { return modifier_; } std::string toString() const; private: uint32_t fourcc_; - std::set modifiers_; + uint64_t modifier_; }; } /* namespace libcamera */ diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index 1e114ca..219b90b 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -365,7 +365,7 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate() const Size size = cfg.size; const IPU3Stream *stream; - if (cfg.pixelFormat.modifiers().count(IPU3_FORMAT_MOD_PACKED)) + if (cfg.pixelFormat.modifier() == IPU3_FORMAT_MOD_PACKED) stream = &data_->rawStream_; else if (cfg.size == sensorFormat_.size) stream = &data_->outStream_; diff --git a/src/libcamera/pixelformats.cpp b/src/libcamera/pixelformats.cpp index 87557d9..1330dc5 100644 --- a/src/libcamera/pixelformats.cpp +++ b/src/libcamera/pixelformats.cpp @@ -19,9 +19,9 @@ namespace libcamera { * \brief libcamera image pixel format * * The PixelFormat type describes the format of images in the public libcamera - * API. It stores a FourCC value as a 32-bit unsigned integer and a set of - * modifiers. The FourCC and modifiers values are defined in the Linux kernel - * DRM/KMS API (see linux/drm_fourcc.h). + * API. It stores a FourCC value as a 32-bit unsigned integer and a modifier. + * The FourCC and modifier values are defined in the Linux kernel DRM/KMS API + * (see linux/drm_fourcc.h). */ /** @@ -36,12 +36,12 @@ PixelFormat::PixelFormat() } /** - * \brief Construct a PixelFormat from a DRM FourCC and a set of modifiers + * \brief Construct a PixelFormat from a DRM FourCC and a modifier * \param[in] fourcc A DRM FourCC - * \param[in] modifiers A set of DRM FourCC modifiers + * \param[in] modifier A DRM FourCC modifier */ -PixelFormat::PixelFormat(uint32_t fourcc, const std::set &modifiers) - : fourcc_(fourcc), modifiers_(modifiers) +PixelFormat::PixelFormat(uint32_t fourcc, uint64_t modifier) + : fourcc_(fourcc), modifier_(modifier) { } @@ -51,7 +51,7 @@ PixelFormat::PixelFormat(uint32_t fourcc, const std::set &modifiers) */ bool PixelFormat::operator==(const PixelFormat &other) const { - return fourcc_ == other.fourcc() && modifiers_ == other.modifiers_; + return fourcc_ == other.fourcc() && modifier_ == other.modifier_; } /** @@ -70,7 +70,7 @@ bool PixelFormat::operator<(const PixelFormat &other) const return true; if (fourcc_ > other.fourcc_) return false; - return modifiers_ < modifiers_; + return modifier_ < other.modifier_; } /** @@ -97,9 +97,9 @@ bool PixelFormat::operator<(const PixelFormat &other) const */ /** - * \fn PixelFormat::modifiers() const - * \brief Retrieve the pixel format modifiers - * \return Set of DRM modifiers + * \fn PixelFormat::modifier() const + * \brief Retrieve the pixel format modifier + * \return DRM modifier */ /**