From patchwork Fri Apr 29 21:23:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 15755 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 99807C3256 for ; Fri, 29 Apr 2022 21:23:57 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 357EF65645; Fri, 29 Apr 2022 23:23:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1651267436; bh=W7KtEl/sAOvB/6I8xCUwUC7EoKFc9a64RuU7V/oyPxw=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=B5Y2tTSpWRZgTtb+YPjzVFW7WRdzK8Wm56TfjjhgVZhRZvr4VBUIYdoKwPBSdo7Zn kfXANZse8jDED8/VJ3lkMXH3II43jxkViTJdgSxbKhuJQ2AXQS7Vilzw7tMcF/WZpf EFVBgpj19rZNJREkRYoEi5Ty+/nnt/X1Zu9VcuKJAazRvA570uAZYK3p5wZSvkqKOA WG1TOqiCZQhlbCDdff12PiRT457CsqzJ2LSa2fYDiC7y6GjBWXTZp5YiiZSndyu4W4 uD41Cwswmj4FpPvhSI8ivz9ScH+3aqr8mFgGsC4taa7ZK5IwsNtC7J8yQ2BmeTZsQ1 jDYKwo8ajl0bg== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5107A6042F for ; Fri, 29 Apr 2022 23:23:53 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Dgeph29K"; dkim-atps=neutral Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C2658475; Fri, 29 Apr 2022 23:23:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1651267433; bh=W7KtEl/sAOvB/6I8xCUwUC7EoKFc9a64RuU7V/oyPxw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Dgeph29KlzQAdahBdIdJn0VldoczTZh0/6MMPybV8MKvoavlVzhLs9v3+417bg+aR CI/V/GU8blFjRCBXm6bfJaYDm6WNq8KZQnJ+XZLQJiSh0J23MXKPcYHYarPFor/D38 AoiXTB5CzVfv+f45znHEIDTHSwlUSGckNIJlbLrw= To: libcamera-devel@lists.libcamera.org Date: Sat, 30 Apr 2022 00:23:44 +0300 Message-Id: <20220429212348.18063-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> References: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 1/5] libcamera: geometry: Add missing ostream header in geometry.h 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-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Commit c730dc74795d ("libcamera: geometry: Add operator<< for classes in geometry") added usage of std::ostream in geometry.h but forget to include the corresponding header. Fix it to avoid future compilation breakages if indirect inclusions are changed. Fixes: c730dc74795d ("libcamera: geometry: Add operator<< for classes in geometry") Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- include/libcamera/geometry.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h index d4a144bcd42a..d7fdbe708e6d 100644 --- a/include/libcamera/geometry.h +++ b/include/libcamera/geometry.h @@ -8,6 +8,7 @@ #pragma once #include +#include #include #include From patchwork Fri Apr 29 21:23:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 15756 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id C10FCC3256 for ; Fri, 29 Apr 2022 21:23:58 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id CED0965649; Fri, 29 Apr 2022 23:23:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1651267436; bh=c/W7P84n+bFDmMYUyU2IKL/TCgna5QVZsUa6c8/xcJg=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=yjyZtLYHzXEM1qrRVnQ5LphEXOYqzH1tlvcT9zQjEuBfZ9XxC0t8X4EyJiGjJK8GT CXlR7qyNn6MtFICiV5uBCJw6UbPMIv1Tet/3LTULlYA/w8mxb337RE3kNaiSJt9sHP V2iTo0FWJLulJiqtUVwRbYhfgUL6bYCJynQ9B047Yx3XSxwJc0jzuvPFeUPoEKoa/t 2KxekzxkwETu1YMAFXXn9JtPpdNj/QmW7Svj3hGhzVQiXJI49HOaNPS8qY8eRuWBvd vQfAORDeeO5rDRGWThWW7g2S9cJJVjjFPc1DFbgouAtrVjtf3QTk0tQrEDx1qc+F0E GL2VcMdQ3wGfg== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id AEDD86042F for ; Fri, 29 Apr 2022 23:23:53 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="aFA2jJfg"; dkim-atps=neutral Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 424AD488; Fri, 29 Apr 2022 23:23:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1651267433; bh=c/W7P84n+bFDmMYUyU2IKL/TCgna5QVZsUa6c8/xcJg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aFA2jJfgIE3PPGNTVhFcZl18Hz9y+aXMVTQW9FjLnj33V5Sr/BdP+RZ4YhQtCDU5E lv5438yL1nRRw14sEG0f/TYlLX32i6/Or3H2hLKdED4c1x900bYEESvc0CbKu+T3gI zVnyMIZ2HCHkZgMGboeU0jITwRkAwdD4MU2o9raE= To: libcamera-devel@lists.libcamera.org Date: Sat, 30 Apr 2022 00:23:45 +0300 Message-Id: <20220429212348.18063-3-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> References: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/5] libcamera: Add operator<<() for pixel format classes 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-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Implement the stream output operator<<() for the PixelFormat and V4L2PixelFormat classes to simplify printing them. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- include/libcamera/internal/v4l2_pixelformat.h | 3 +++ include/libcamera/pixel_format.h | 3 +++ src/libcamera/pixel_format.cpp | 12 ++++++++++++ src/libcamera/v4l2_pixelformat.cpp | 13 +++++++++++++ 4 files changed, 31 insertions(+) diff --git a/include/libcamera/internal/v4l2_pixelformat.h b/include/libcamera/internal/v4l2_pixelformat.h index 886d534d8c91..fb2d5d0b93df 100644 --- a/include/libcamera/internal/v4l2_pixelformat.h +++ b/include/libcamera/internal/v4l2_pixelformat.h @@ -8,6 +8,7 @@ #pragma once +#include #include #include @@ -50,4 +51,6 @@ private: uint32_t fourcc_; }; +std::ostream &operator<<(std::ostream &out, const V4L2PixelFormat &f); + } /* namespace libcamera */ diff --git a/include/libcamera/pixel_format.h b/include/libcamera/pixel_format.h index a9d7c03de851..d49c5f784118 100644 --- a/include/libcamera/pixel_format.h +++ b/include/libcamera/pixel_format.h @@ -7,6 +7,7 @@ #pragma once +#include #include #include #include @@ -45,4 +46,6 @@ private: uint64_t modifier_; }; +std::ostream &operator<<(std::ostream &out, const PixelFormat &f); + } /* namespace libcamera */ diff --git a/src/libcamera/pixel_format.cpp b/src/libcamera/pixel_format.cpp index 997aeb8a9290..80c22072b072 100644 --- a/src/libcamera/pixel_format.cpp +++ b/src/libcamera/pixel_format.cpp @@ -140,4 +140,16 @@ PixelFormat PixelFormat::fromString(const std::string &name) return PixelFormatInfo::info(name).format; } +/** + * \brief Insert a text representation of a PixelFormat into an output stream + * \param[in] out The output stream + * \param[in] f The PixelFormat + * \return The output stream \a out + */ +std::ostream &operator<<(std::ostream &out, const PixelFormat &f) +{ + out << f.toString(); + return out; +} + } /* namespace libcamera */ diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp index 0e0da3f0df07..1dd93baa7a64 100644 --- a/src/libcamera/v4l2_pixelformat.cpp +++ b/src/libcamera/v4l2_pixelformat.cpp @@ -316,4 +316,17 @@ V4L2PixelFormat V4L2PixelFormat::fromPixelFormat(const PixelFormat &pixelFormat, return multiplanar ? info.v4l2Formats.multi : info.v4l2Formats.single; } +/** + * \brief Insert a text representation of a V4L2PixelFormat into an output + * stream + * \param[in] out The output stream + * \param[in] f The V4L2PixelFormat + * \return The output stream \a out + */ +std::ostream &operator<<(std::ostream &out, const V4L2PixelFormat &f) +{ + out << f.toString(); + return out; +} + } /* namespace libcamera */ From patchwork Fri Apr 29 21:23:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 15757 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 77F2DC326C for ; Fri, 29 Apr 2022 21:23:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 94E5C6564D; Fri, 29 Apr 2022 23:23:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1651267437; bh=EFYgJqN43/rpkMEshDR1KwiP44TUYutlYEWmQsCPi8U=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=b6DabLdM2jPyKcxl8P+ktZ/b0TTQ+K4WUo8HcOYfDIrPNTMqrImpNClwA0Grc8ewO bw0EJfJSDCwQrTU3Dx5/8J82ZjXo6TeNrkGauATZRvG9ouK0Vln+YDth8/I7uzrtWC SNkj1EY8xgKBD+4OyD9DjIBqFCEqqU3jbWql2tbu9Kbkd6DezbsBYOMW8VWnO2LiyK mXIZIcAycr9FViGZuAtuIqfcBkbpKYeLY0k5xdNMaHKPJ3XODYmGkbZLZZ5/CSCDbQ nFivCzN1GVCBpJK3AjPvLYwvfGxn/Ba0UU08SCwaxOAMENclUcqw+N/qGp5HgkkjTP qZmLPLhEGXLQg== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 22F1C65640 for ; Fri, 29 Apr 2022 23:23:54 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="AuXv9GlM"; dkim-atps=neutral Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id AC586496; Fri, 29 Apr 2022 23:23:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1651267433; bh=EFYgJqN43/rpkMEshDR1KwiP44TUYutlYEWmQsCPi8U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AuXv9GlMlJLmfQBfAF1mOWZzuMPLqlPOdVzeYncmPhKcxXm4kAVMvAcSVFLrOaxN8 7Pj66WRJhTo/kbYo/wi74kwCKTJevoBap3422bsCIVDIhpJqcHExz8S/dBJcEz/7K2 5Ur+XJ3+370KT6yW8cLwOqeiblawBaEOzyGzNQM0= To: libcamera-devel@lists.libcamera.org Date: Sat, 30 Apr 2022 00:23:46 +0300 Message-Id: <20220429212348.18063-4-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> References: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 3/5] libcamera: bayer_format: Add operator<<() 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-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Implement the stream output operator<<() for the BayerFormat class to simplify printing them. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- include/libcamera/internal/bayer_format.h | 3 ++ src/libcamera/bayer_format.cpp | 57 ++++++++++++++--------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/include/libcamera/internal/bayer_format.h b/include/libcamera/internal/bayer_format.h index cb20bf9bea84..7d3e37c67e9c 100644 --- a/include/libcamera/internal/bayer_format.h +++ b/include/libcamera/internal/bayer_format.h @@ -7,6 +7,7 @@ #pragma once +#include #include #include @@ -68,4 +69,6 @@ static inline bool operator!=(const BayerFormat &lhs, const BayerFormat &rhs) return !(lhs == rhs); } +std::ostream &operator<<(std::ostream &out, const BayerFormat &f); + } /* namespace libcamera */ diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp index 9aaec0bce264..4882707e7763 100644 --- a/src/libcamera/bayer_format.cpp +++ b/src/libcamera/bayer_format.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -236,28 +237,10 @@ const BayerFormat &BayerFormat::fromMbusCode(unsigned int mbusCode) */ std::string BayerFormat::toString() const { - std::string result; + std::stringstream ss; + ss << *this; - static const char *orderStrings[] = { - "BGGR", - "GBRG", - "GRBG", - "RGGB", - "MONO" - }; - if (isValid() && order <= MONO) - result = orderStrings[order]; - else - return "INVALID"; - - result += "-" + std::to_string(bitDepth); - - if (packing == Packing::CSI2) - result += "-CSI2P"; - else if (packing == Packing::IPU3) - result += "-IPU3P"; - - return result; + return ss.str(); } /** @@ -270,6 +253,38 @@ bool operator==(const BayerFormat &lhs, const BayerFormat &rhs) lhs.packing == rhs.packing; } +/** + * \brief Insert a text representation of a BayerFormats into an output stream + * \param[in] out The output stream + * \param[in] f The BayerFormat + * \return The output stream \a out + */ +std::ostream &operator<<(std::ostream &out, const BayerFormat &f) +{ + static const char *orderStrings[] = { + "BGGR-", + "GBRG-", + "GRBG-", + "RGGB-", + "MONO-" + }; + + if (!f.isValid() || f.order > BayerFormat::MONO) { + out << "INVALID"; + return out; + } + + /* The cast is required to avoid bitDepth being interpreted as a char. */ + out << orderStrings[f.order] << static_cast(f.bitDepth); + + if (f.packing == BayerFormat::Packing::CSI2) + out << "-CSI2P"; + else if (f.packing == BayerFormat::Packing::IPU3) + out << "-IPU3P"; + + return out; +} + /** * \fn bool operator!=(const BayerFormat &lhs, const BayerFormat &rhs) * \brief Compare two BayerFormats for inequality From patchwork Fri Apr 29 21:23:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 15758 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id E95DBC326D for ; Fri, 29 Apr 2022 21:23:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 7CF906564A; Fri, 29 Apr 2022 23:23:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1651267438; bh=W76n6HoevJoFngdULGEdm7WOQ2oOHCc3vwuiacl57so=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=i7moMaLhBKUGNh0QMBZm9XxI25JxA5WpBbPL1dwr+iuTMkIXeUfl3HebjHzsH8McD cUMnTxLfxotuzI8Fr0rIA8OM+VXxc/IuNYGF5gRv6v4ng2xxNL7XGszLyZ9NEIPxjq FxQ2IAyu5q0Lr86fmd2kSqms+68AheTDEFSsY1joIQenAA0wqQxy/iwm/ztgT6Fpuk UhaQ6iNn71+kqS1jdxKXHiFZbGBpAx5p+O/1WTAxXBtfh6wlgUl19i6nqIyl5hh3rK VRWCga4SJZLJ42IfgLETjk5T3LpR3d9InMeFFPbGnmdvrABxvJ4cbmeM0zGBElZgkQ rMV2zbu8rlllQ== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id B77EB65648 for ; Fri, 29 Apr 2022 23:23:54 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="gvmuhQlC"; dkim-atps=neutral Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 4B0058EB; Fri, 29 Apr 2022 23:23:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1651267434; bh=W76n6HoevJoFngdULGEdm7WOQ2oOHCc3vwuiacl57so=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gvmuhQlCoI0DPq3BagAPCiOlb2fo7OJBCGLX1LL8s9p7k2DaSYT3WQxV7L6HB37E5 FcGRsSdDWW2GR+qV0ECQwfVFSLrXyj1hjI5wFEJZiSFCutTrtIGAasRDfhuI5DgDzX s0ZDhgiGIjK07+GlwqhWqLMlkUfcSW5zq3GUBQpo= To: libcamera-devel@lists.libcamera.org Date: Sat, 30 Apr 2022 00:23:47 +0300 Message-Id: <20220429212348.18063-5-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> References: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 4/5] libcamera: Add operator<<() for V4L2 format classes 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-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Implement the stream output operator<<() for the V4L2DeviceFormat and V4L2SubdeviceFormat classes to simplify printing them. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- include/libcamera/internal/v4l2_subdevice.h | 3 ++ include/libcamera/internal/v4l2_videodevice.h | 3 ++ src/libcamera/v4l2_subdevice.cpp | 34 +++++++++++++------ src/libcamera/v4l2_videodevice.cpp | 16 ++++++++- 4 files changed, 45 insertions(+), 11 deletions(-) diff --git a/include/libcamera/internal/v4l2_subdevice.h b/include/libcamera/internal/v4l2_subdevice.h index 58d1e5114e7b..6fda52ada41b 100644 --- a/include/libcamera/internal/v4l2_subdevice.h +++ b/include/libcamera/internal/v4l2_subdevice.h @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -35,6 +36,8 @@ struct V4L2SubdeviceFormat { uint8_t bitsPerPixel() const; }; +std::ostream &operator<<(std::ostream &out, const V4L2SubdeviceFormat &f); + class V4L2Subdevice : public V4L2Device { public: diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h index 9c9493cc16ed..23f37f83f8e2 100644 --- a/include/libcamera/internal/v4l2_videodevice.h +++ b/include/libcamera/internal/v4l2_videodevice.h @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -180,6 +181,8 @@ public: const std::string toString() const; }; +std::ostream &operator<<(std::ostream &out, const V4L2DeviceFormat &f); + class V4L2VideoDevice : public V4L2Device { public: diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp index d5ae460571d8..b3d0ddad83db 100644 --- a/src/libcamera/v4l2_subdevice.cpp +++ b/src/libcamera/v4l2_subdevice.cpp @@ -190,17 +190,10 @@ const std::map formatInfoMap = { */ const std::string V4L2SubdeviceFormat::toString() const { - std::stringstream mbus; - mbus << size << "-"; + std::stringstream ss; + ss << *this; - const auto it = formatInfoMap.find(mbus_code); - - if (it == formatInfoMap.end()) - mbus << utils::hex(mbus_code, 4); - else - mbus << it->second.name; - - return mbus.str(); + return ss.str(); } /** @@ -220,6 +213,27 @@ uint8_t V4L2SubdeviceFormat::bitsPerPixel() const return it->second.bitsPerPixel; } +/** + * \brief Insert a text representation of a V4L2SubdeviceFormat into an output + * stream + * \param[in] out The output stream + * \param[in] f The V4L2SubdeviceFormat + * \return The output stream \a out + */ +std::ostream &operator<<(std::ostream &out, const V4L2SubdeviceFormat &f) +{ + out << f.size << "-"; + + const auto it = formatInfoMap.find(f.mbus_code); + + if (it == formatInfoMap.end()) + out << utils::hex(f.mbus_code, 4); + else + out << it->second.name; + + return out; +} + /** * \class V4L2Subdevice * \brief A V4L2 subdevice as exposed by the Linux kernel diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp index 5ba866ad71bb..5b4637b1a39e 100644 --- a/src/libcamera/v4l2_videodevice.cpp +++ b/src/libcamera/v4l2_videodevice.cpp @@ -433,10 +433,24 @@ bool V4L2BufferCache::Entry::operator==(const FrameBuffer &buffer) const const std::string V4L2DeviceFormat::toString() const { std::stringstream ss; - ss << size << "-" << fourcc.toString(); + ss << *this; + return ss.str(); } +/** + * \brief Insert a text representation of a V4L2DeviceFormat into an output + * stream + * \param[in] out The output stream + * \param[in] f The V4L2DeviceFormat + * \return The output stream \a out + */ +std::ostream &operator<<(std::ostream &out, const V4L2DeviceFormat &f) +{ + out << f.size << "-" << f.fourcc; + return out; +} + /** * \class V4L2VideoDevice * \brief V4L2VideoDevice object and API From patchwork Fri Apr 29 21:23:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 15759 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 602F1C3256 for ; Fri, 29 Apr 2022 21:24:00 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 2425E65655; Fri, 29 Apr 2022 23:24:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1651267440; bh=7JllKk5ohTN+hG2+DMqyFmy5gLktUP6vSVBORBvCV4o=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=i2E4BQLptHKI+5CHLsJ/Xf/kF9iwq+fZqRIiH0IzL70aszKAsOtrc9YzqcWMhlNLZ j5lqIAZr/7wjgcNHBKkeyiJu/N1fdWPtIvQaZ5Kl77NNkUTuWz4Dng+eHGGuUwyvq3 nTAV8pGDH2o6JzMfmNlQe/zvSZfC36/wf8hllRJ33AfNX3xBOIyLopQr9XJKSSEaFn emV9FiS9+Rq5eqtvVA7lRSQ8jzZQ096DkIXR3p4MWET008hzFmMiT28+fgxPkiOwP+ LYS7gCuBm9zLRpYG/wehyPj/XcYkGkNPiDTyqGAISqIJUFyb+vFK069jdrziFZnIsS i8OzmcqZmC2Ww== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4A9BF6564D for ; Fri, 29 Apr 2022 23:23:55 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="S8kQHEAP"; dkim-atps=neutral Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B66CC963; Fri, 29 Apr 2022 23:23:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1651267435; bh=7JllKk5ohTN+hG2+DMqyFmy5gLktUP6vSVBORBvCV4o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=S8kQHEAPBowaMoiCLVkkQID41M5zFPQoshSdJp/NMo8Wd6C+tuJI9nBwvWiPu1PIW 93b4zwAs1PI24cDpf57o8+g7Ix+QuutPzk2kEQHfSIIlBQz4KzN1Va4M3mM12LIyif LTfQ3ia0WovOcl+W2VKfNV+Wf3gSgzH99FIxoyhw= To: libcamera-devel@lists.libcamera.org Date: Sat, 30 Apr 2022 00:23:48 +0300 Message-Id: <20220429212348.18063-6-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> References: <20220429212348.18063-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 5/5] libcamera: Replace toString with operator<<() for format classes 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-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Now that format classes implement the stream formatting operator<<(), use it instead of the toString() function. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- src/android/camera_capabilities.cpp | 6 ++--- src/android/camera_device.cpp | 4 ++-- src/android/jpeg/encoder_libjpeg.cpp | 2 +- src/android/jpeg/thumbnailer.cpp | 2 +- src/android/mm/generic_camera_buffer.cpp | 3 +-- src/android/yuv/post_processor_yuv.cpp | 4 ++-- src/cam/camera_session.cpp | 2 +- src/cam/kms_sink.cpp | 2 +- src/libcamera/pipeline/ipu3/cio2.cpp | 2 +- src/libcamera/pipeline/ipu3/imgu.cpp | 6 ++--- .../pipeline/raspberrypi/raspberrypi.cpp | 20 ++++++++-------- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 10 ++++---- src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 6 ++--- src/libcamera/pipeline/simple/converter.cpp | 4 ++-- src/libcamera/pipeline/simple/simple.cpp | 9 ++++--- src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 5 ++-- src/libcamera/pipeline/vimc/vimc.cpp | 2 +- src/libcamera/v4l2_subdevice.cpp | 2 +- src/qcam/viewfinder_qt.cpp | 3 +-- src/v4l2/v4l2_camera_proxy.cpp | 2 +- test/bayer-format.cpp | 24 +++++++++---------- test/camera-sensor.cpp | 2 +- 22 files changed, 59 insertions(+), 63 deletions(-) diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp index e06a517d84b8..6f197eb80195 100644 --- a/src/android/camera_capabilities.cpp +++ b/src/android/camera_capabilities.cpp @@ -554,7 +554,7 @@ int CameraCapabilities::initializeStreamConfigurations() formatsMap_[androidFormat] = formats::MJPEG; LOG(HAL, Debug) << "Mapped Android format " << camera3Format.name << " to " - << formats::MJPEG.toString() + << formats::MJPEG << " (fixed mapping)"; continue; } @@ -566,7 +566,7 @@ int CameraCapabilities::initializeStreamConfigurations() PixelFormat mappedFormat; for (const PixelFormat &pixelFormat : libcameraFormats) { - LOG(HAL, Debug) << "Testing " << pixelFormat.toString(); + LOG(HAL, Debug) << "Testing " << pixelFormat; /* * The stream configuration size can be adjusted, @@ -605,7 +605,7 @@ int CameraCapabilities::initializeStreamConfigurations() formatsMap_[androidFormat] = mappedFormat; LOG(HAL, Debug) << "Mapped Android format " << camera3Format.name << " to " - << mappedFormat.toString(); + << mappedFormat; std::vector resolutions; const PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat); diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index f7ec95eb720e..8e804d4d5aed 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -575,7 +575,7 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list) << ", crop_rotate_scale_degrees: " << rotationToString(stream->crop_rotate_scale_degrees) #endif - << " (" << format.toString() << ")"; + << " (" << format << ")"; if (!format.isValid()) return -EINVAL; @@ -926,7 +926,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques << camera3Stream->height << ")" << "[" << utils::hex(camera3Stream->format) << "] -> " << "(" << cameraStream->configuration().size << ")[" - << cameraStream->configuration().pixelFormat.toString() << "]"; + << cameraStream->configuration().pixelFormat << "]"; /* * Inspect the camera stream type, create buffers opportunely diff --git a/src/android/jpeg/encoder_libjpeg.cpp b/src/android/jpeg/encoder_libjpeg.cpp index 21a3b33dd92c..fd62bd9c7c5b 100644 --- a/src/android/jpeg/encoder_libjpeg.cpp +++ b/src/android/jpeg/encoder_libjpeg.cpp @@ -59,7 +59,7 @@ const struct JPEGPixelFormatInfo &findPixelInfo(const PixelFormat &format) const auto iter = pixelInfo.find(format); if (iter == pixelInfo.end()) { LOG(JPEG, Error) << "Unsupported pixel format for JPEG encoder: " - << format.toString(); + << format; return invalidPixelFormat; } diff --git a/src/android/jpeg/thumbnailer.cpp b/src/android/jpeg/thumbnailer.cpp index 1fab80724f3c..41c71c76e9ce 100644 --- a/src/android/jpeg/thumbnailer.cpp +++ b/src/android/jpeg/thumbnailer.cpp @@ -30,7 +30,7 @@ void Thumbnailer::configure(const Size &sourceSize, PixelFormat pixelFormat) if (pixelFormat_ != formats::NV12) { LOG(Thumbnailer, Error) << "Failed to configure: Pixel Format " - << pixelFormat_.toString() << " unsupported."; + << pixelFormat_ << " unsupported."; return; } diff --git a/src/android/mm/generic_camera_buffer.cpp b/src/android/mm/generic_camera_buffer.cpp index a4349f89cb13..1bd7090d634f 100644 --- a/src/android/mm/generic_camera_buffer.cpp +++ b/src/android/mm/generic_camera_buffer.cpp @@ -66,8 +66,7 @@ CameraBuffer::Private::Private([[maybe_unused]] CameraBuffer *cameraBuffer, const auto &info = PixelFormatInfo::info(pixelFormat); if (!info.isValid()) { error_ = -EINVAL; - LOG(HAL, Error) << "Invalid pixel format: " - << pixelFormat.toString(); + LOG(HAL, Error) << "Invalid pixel format: " << pixelFormat; return; } diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp index 513c6ef86153..ed44e6fe02da 100644 --- a/src/android/yuv/post_processor_yuv.cpp +++ b/src/android/yuv/post_processor_yuv.cpp @@ -27,8 +27,8 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg, { if (inCfg.pixelFormat != outCfg.pixelFormat) { LOG(YUV, Error) << "Pixel format conversion is not supported" - << " (from " << inCfg.pixelFormat.toString() - << " to " << outCfg.pixelFormat.toString() << ")"; + << " (from " << inCfg.pixelFormat + << " to " << outCfg.pixelFormat << ")"; return -EINVAL; } diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp index bacb42561560..efffafbf9e9a 100644 --- a/src/cam/camera_session.cpp +++ b/src/cam/camera_session.cpp @@ -145,7 +145,7 @@ void CameraSession::infoConfiguration() const const StreamFormats &formats = cfg.formats(); for (PixelFormat pixelformat : formats.pixelformats()) { std::cout << " * Pixelformat: " - << pixelformat.toString() << " " + << pixelformat << " " << formats.range(pixelformat).toString() << std::endl; diff --git a/src/cam/kms_sink.cpp b/src/cam/kms_sink.cpp index 29be5623cb17..7add81a64334 100644 --- a/src/cam/kms_sink.cpp +++ b/src/cam/kms_sink.cpp @@ -194,7 +194,7 @@ int KMSSink::configurePipeline(const libcamera::PixelFormat &format) if (ret) { std::cerr << "Unable to find display pipeline for format " - << format.toString() << std::endl; + << format << std::endl; return ret; } diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp index f4e8c6632c2f..a4e4d302f841 100644 --- a/src/libcamera/pipeline/ipu3/cio2.cpp +++ b/src/libcamera/pipeline/ipu3/cio2.cpp @@ -211,7 +211,7 @@ int CIO2Device::configure(const Size &size, V4L2DeviceFormat *outputFormat) if (ret) return ret; - LOG(IPU3, Debug) << "CIO2 output format " << outputFormat->toString(); + LOG(IPU3, Debug) << "CIO2 output format " << outputFormat; return 0; } diff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp index 3ac997cc1acf..34613feb8130 100644 --- a/src/libcamera/pipeline/ipu3/imgu.cpp +++ b/src/libcamera/pipeline/ipu3/imgu.cpp @@ -479,7 +479,7 @@ int ImgUDevice::configure(const PipeConfig &pipeConfig, V4L2DeviceFormat *inputF if (ret) return ret; - LOG(IPU3, Debug) << "ImgU input format = " << inputFormat->toString(); + LOG(IPU3, Debug) << "ImgU input format = " << inputFormat; /* * \todo The IPU3 driver implementation shall be changed to use the @@ -511,7 +511,7 @@ int ImgUDevice::configure(const PipeConfig &pipeConfig, V4L2DeviceFormat *inputF if (ret) return ret; - LOG(IPU3, Debug) << "ImgU GDC format = " << gdcFormat.toString(); + LOG(IPU3, Debug) << "ImgU GDC format = " << gdcFormat; StreamConfiguration paramCfg = {}; paramCfg.size = inputFormat->size; @@ -568,7 +568,7 @@ int ImgUDevice::configureVideoDevice(V4L2VideoDevice *dev, unsigned int pad, const char *name = dev == output_.get() ? "output" : "viewfinder"; LOG(IPU3, Debug) << "ImgU " << name << " format = " - << outputFormat->toString(); + << outputFormat; return 0; } diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index d8c709b7a503..e2ee7f1ace21 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -167,7 +167,7 @@ V4L2SubdeviceFormat findBestFormat(const SensorFormats &formatsMap, const Size & } LOG(RPI, Debug) << "Format: " << size - << " fmt " << format.toString() + << " fmt " << format << " Score: " << score << " (best " << bestScore << ")"; } @@ -758,8 +758,8 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) return ret; LOG(RPI, Info) << "Sensor: " << camera->id() - << " - Selected sensor format: " << sensorFormat.toString() - << " - Selected unicam format: " << unicamFormat.toString(); + << " - Selected sensor format: " << sensorFormat + << " - Selected unicam format: " << unicamFormat; ret = data->isp_[Isp::Input].dev()->setFormat(&unicamFormat); if (ret) @@ -790,7 +790,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) format.colorSpace = cfg.colorSpace; LOG(RPI, Debug) << "Setting " << stream->name() << " to " - << format.toString(); + << format; ret = stream->dev()->setFormat(&format); if (ret) @@ -799,7 +799,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) if (format.size != cfg.size || format.fourcc != fourcc) { LOG(RPI, Error) << "Failed to set requested format on " << stream->name() - << ", returned " << format.toString(); + << ", returned " << format; return -EINVAL; } @@ -842,7 +842,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) } LOG(RPI, Debug) << "Defaulting ISP Output0 format to " - << format.toString(); + << format; } /* @@ -866,7 +866,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) output1Format.fourcc = V4L2PixelFormat::fromPixelFormat(formats::YUV420); LOG(RPI, Debug) << "Setting ISP Output1 (internal) to " - << output1Format.toString(); + << output1Format; ret = data->isp_[Isp::Output1].dev()->setFormat(&output1Format); if (ret) { @@ -882,7 +882,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) ret = data->isp_[Isp::Stats].dev()->setFormat(&format); if (ret) { LOG(RPI, Error) << "Failed to set format on ISP stats stream: " - << format.toString(); + << format; return ret; } @@ -923,7 +923,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) ret = data->unicam_[Unicam::Embedded].dev()->setFormat(&format); if (ret) { LOG(RPI, Error) << "Failed to set format on Unicam embedded: " - << format.toString(); + << format; return ret; } } @@ -965,7 +965,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) if (ret) { LOG(RPI, Error) << "Failed to set format on " << device->entity()->name() << " pad " << sinkPad->index() - << " with format " << format.toString() + << " with format " << format << ": " << ret; return ret; } diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index 1c53495c97cc..7cf36524ccc4 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -573,13 +573,13 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c) * the pipeline. */ V4L2SubdeviceFormat format = config->sensorFormat(); - LOG(RkISP1, Debug) << "Configuring sensor with " << format.toString(); + LOG(RkISP1, Debug) << "Configuring sensor with " << format; ret = sensor->setFormat(&format); if (ret < 0) return ret; - LOG(RkISP1, Debug) << "Sensor configured with " << format.toString(); + LOG(RkISP1, Debug) << "Sensor configured with " << format; ret = isp_->setFormat(0, &format); if (ret < 0) @@ -591,13 +591,13 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c) return ret; LOG(RkISP1, Debug) - << "ISP input pad configured with " << format.toString() + << "ISP input pad configured with " << format << " crop " << rect; /* YUYV8_2X8 is required on the ISP source path pad for YUV output. */ format.mbus_code = MEDIA_BUS_FMT_YUYV8_2X8; LOG(RkISP1, Debug) - << "Configuring ISP output pad with " << format.toString() + << "Configuring ISP output pad with " << format << " crop " << rect; ret = isp_->setSelection(2, V4L2_SEL_TGT_CROP, &rect); @@ -609,7 +609,7 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c) return ret; LOG(RkISP1, Debug) - << "ISP output pad configured with " << format.toString() + << "ISP output pad configured with " << format << " crop " << rect; std::map streamConfig; diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp index f195f91ead1f..07a6566d308c 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp @@ -119,13 +119,13 @@ int RkISP1Path::configure(const StreamConfiguration &config, LOG(RkISP1, Debug) << "Configured " << name_ << " resizer input pad with " - << ispFormat.toString() << " crop " << rect.toString(); + << ispFormat << " crop " << rect.toString(); ispFormat.size = config.size; LOG(RkISP1, Debug) << "Configuring " << name_ << " resizer output pad with " - << ispFormat.toString(); + << ispFormat; switch (config.pixelFormat) { case formats::NV12: @@ -143,7 +143,7 @@ int RkISP1Path::configure(const StreamConfiguration &config, LOG(RkISP1, Debug) << "Configured " << name_ << " resizer output pad with " - << ispFormat.toString(); + << ispFormat; const PixelFormatInfo &info = PixelFormatInfo::info(config.pixelFormat); V4L2DeviceFormat outputFormat; diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp index ee8376dea1e0..77c44fc8714f 100644 --- a/src/libcamera/pipeline/simple/converter.cpp +++ b/src/libcamera/pipeline/simple/converter.cpp @@ -65,8 +65,8 @@ int SimpleConverter::Stream::configure(const StreamConfiguration &inputCfg, format.planes[0].bpl != inputCfg.stride) { LOG(SimplePipeline, Error) << "Input format not supported (requested " - << inputCfg.size << "-" << videoFormat.toString() - << ", got " << format.toString() << ")"; + << inputCfg.size << "-" << videoFormat + << ", got " << format << ")"; return -EINVAL; } diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index e76bf01261b0..76bd228b5aba 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -607,10 +607,10 @@ int SimpleCameraData::setupFormats(V4L2SubdeviceFormat *format, LOG(SimplePipeline, Debug) << "Source '" << source->entity()->name() << "':" << source->index() - << " produces " << sourceFormat.toString() + << " produces " << sourceFormat << ", sink '" << sink->entity()->name() << "':" << sink->index() - << " requires " << format->toString(); + << " requires " << format; return -EINVAL; } } @@ -620,7 +620,7 @@ int SimpleCameraData::setupFormats(V4L2SubdeviceFormat *format, << "':" << source->index() << " -> '" << sink->entity()->name() << "':" << sink->index() - << " configured with format " << format->toString(); + << " configured with format " << format; } return 0; @@ -939,8 +939,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c) captureFormat.size != pipeConfig->captureSize) { LOG(SimplePipeline, Error) << "Unable to configure capture in " - << pipeConfig->captureSize << "-" - << videoFormat.toString(); + << pipeConfig->captureSize << "-" << videoFormat; return -EINVAL; } diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp index e5a79417f923..2ebf2788c3b4 100644 --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp @@ -126,9 +126,8 @@ CameraConfiguration::Status UVCCameraConfiguration::validate() if (iter == pixelFormats.end()) { cfg.pixelFormat = pixelFormats.front(); LOG(UVC, Debug) - << "Adjusting pixel format from " - << pixelFormat.toString() << " to " - << cfg.pixelFormat.toString(); + << "Adjusting pixel format from " << pixelFormat + << " to " << cfg.pixelFormat; status = Adjusted; } diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index 3db0ffe58c39..3379ac5cd47d 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -209,7 +209,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera, if (pixelformat.first != formats::BGR888) { LOG(VIMC, Info) << "Skipping unsupported pixel format " - << pixelformat.first.toString(); + << pixelformat.first; continue; } } diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp index b3d0ddad83db..ca6b43cea5f1 100644 --- a/src/libcamera/v4l2_subdevice.cpp +++ b/src/libcamera/v4l2_subdevice.cpp @@ -206,7 +206,7 @@ uint8_t V4L2SubdeviceFormat::bitsPerPixel() const const auto it = formatInfoMap.find(mbus_code); if (it == formatInfoMap.end()) { LOG(V4L2, Error) << "No information available for format '" - << toString() << "'"; + << *this << "'"; return 0; } diff --git a/src/qcam/viewfinder_qt.cpp b/src/qcam/viewfinder_qt.cpp index a05c75ed9e12..6844f998bbe0 100644 --- a/src/qcam/viewfinder_qt.cpp +++ b/src/qcam/viewfinder_qt.cpp @@ -67,8 +67,7 @@ int ViewFinderQt::setFormat(const libcamera::PixelFormat &format, image_ = QImage(size, QImage::Format_RGB32); - qInfo() << "Using software format conversion from" - << format.toString().c_str(); + qInfo() << "Using software format conversion from" << format; } else { qInfo() << "Zero-copy enabled"; } diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp index 4913e44a6f5f..26a227da6db2 100644 --- a/src/v4l2/v4l2_camera_proxy.cpp +++ b/src/v4l2/v4l2_camera_proxy.cpp @@ -327,7 +327,7 @@ int V4L2CameraProxy::tryFormat(struct v4l2_format *arg) if (ret < 0) { LOG(V4L2Compat, Error) << "Failed to negotiate a valid format: " - << format.toString(); + << format; return -EINVAL; } diff --git a/test/bayer-format.cpp b/test/bayer-format.cpp index 135bcb5214c8..54f03487fa0e 100644 --- a/test/bayer-format.cpp +++ b/test/bayer-format.cpp @@ -72,8 +72,8 @@ protected: bayerFmt = BayerFormat::fromV4L2PixelFormat(v4l2FmtExpect); V4L2PixelFormat v4l2Fmt = bayerFmt.toV4L2PixelFormat(); if (v4l2Fmt != v4l2FmtExpect) { - cerr << "Expected: '" << v4l2FmtExpect.toString() - << "' got: '" << v4l2Fmt.toString() << "'" << endl; + cerr << "Expected: '" << v4l2FmtExpect + << "' got: '" << v4l2Fmt << "'" << endl; return TestFail; } @@ -86,7 +86,7 @@ protected: v4l2Fmt = bayerFmt.toV4L2PixelFormat(); if (v4l2Fmt != v4l2FmtExpect) { cerr << "Expected: empty V4L2PixelFormat got: '" - << v4l2Fmt.toString() << "'" << endl; + << v4l2Fmt << "'" << endl; return TestFail; } @@ -101,8 +101,8 @@ protected: bayerFmt = BayerFormat::fromV4L2PixelFormat(v4l2Fmt); if (bayerFmt != bayerFmtExpect) { cerr << "Expected BayerFormat '" - << bayerFmtExpect.toString() << "', got: '" - << bayerFmt.toString() << "'" << endl; + << bayerFmtExpect << "', got: '" + << bayerFmt << "'" << endl; return TestFail; } @@ -115,7 +115,7 @@ protected: bayerFmt = BayerFormat::fromV4L2PixelFormat(v4l2FmtUnknown); if (bayerFmt.isValid()) { cerr << "Expected empty BayerFormat got: '" - << bayerFmt.toString() << "'" << endl; + << bayerFmt << "'" << endl; return TestFail; } @@ -151,8 +151,8 @@ protected: BayerFormat hFlipFmt = bayerFmt.transform(Transform::HFlip); if (hFlipFmt != bayerFmtExpect) { cerr << "Horizontal flip of 'BGGR-8' should result in '" - << bayerFmtExpect.toString() << "', got: '" - << hFlipFmt.toString() << "'" << endl; + << bayerFmtExpect << "', got: '" + << hFlipFmt << "'" << endl; return TestFail; } @@ -166,8 +166,8 @@ protected: BayerFormat vFlipFmt = bayerFmt.transform(Transform::VFlip); if (vFlipFmt != bayerFmtExpect) { cerr << "Vertical flip of 'BGGR-8' should result in '" - << bayerFmtExpect.toString() << "', got: '" - << vFlipFmt.toString() << "'" << endl; + << bayerFmtExpect << "', got: '" + << vFlipFmt << "'" << endl; return TestFail; } @@ -182,7 +182,7 @@ protected: if (transposeFmt != bayerFmt) { cerr << "Transpose with both green pixels on the " << "antidiagonal should not change the order " - << "(got '" << transposeFmt.toString() << "')" + << "(got '" << transposeFmt << "')" << endl; return TestFail; } @@ -199,7 +199,7 @@ protected: if (transposeFmt != bayerFmtExpect) { cerr << "Transpose with the red & blue pixels on the " << "antidiagonal should switch their position " - << "(got '" << transposeFmt.toString() << "')" + << "(got '" << transposeFmt << "')" << endl; return TestFail; } diff --git a/test/camera-sensor.cpp b/test/camera-sensor.cpp index 9b06a60e7695..d3dcb51056f1 100644 --- a/test/camera-sensor.cpp +++ b/test/camera-sensor.cpp @@ -99,7 +99,7 @@ protected: format.size != Size(4096, 2160)) { cerr << "Failed to get a suitable format, expected 4096x2160-0x" << utils::hex(MEDIA_BUS_FMT_SBGGR10_1X10) - << ", got " << format.toString() << endl; + << ", got " << format << endl; return TestFail; }