summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Plowman <david.plowman@raspberrypi.com>2022-11-22 11:30:48 +0000
committerJacopo Mondi <jacopo@jmondi.org>2022-12-09 08:57:40 +0100
commit7a727a66cab151b2ad0936c2474eb02f81987079 (patch)
treed7eb57dacad0914c74859d569d6bdcee6bcd79c3
parent1bd74b91be2da535918d509ff32c1cb2b76dcec3 (diff)
libcamera: bayer_format: Add toMbusCode method
This makes it easier to perform transformations on Bayer type mbus codes by converting them to a BayerFormat, doing the transform, and then converting them back again. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r--include/libcamera/internal/bayer_format.h1
-rw-r--r--src/libcamera/bayer_format.cpp11
2 files changed, 12 insertions, 0 deletions
diff --git a/include/libcamera/internal/bayer_format.h b/include/libcamera/internal/bayer_format.h
index 78ba3969..3601dccb 100644
--- a/include/libcamera/internal/bayer_format.h
+++ b/include/libcamera/internal/bayer_format.h
@@ -47,6 +47,7 @@ public:
}
static const BayerFormat &fromMbusCode(unsigned int mbusCode);
+ unsigned int toMbusCode() const;
bool isValid() const { return bitDepth != 0; }
std::string toString() const;
diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp
index f27cc166..fdbc4af1 100644
--- a/src/libcamera/bayer_format.cpp
+++ b/src/libcamera/bayer_format.cpp
@@ -227,6 +227,17 @@ const BayerFormat &BayerFormat::fromMbusCode(unsigned int mbusCode)
}
/**
+ * \brief Retrieve the media bus code corresponding this this BayerFormat
+ * \return The corresponding media bus code, or zero if none was found
+ */
+unsigned int BayerFormat::toMbusCode() const
+{
+ auto it = std::find_if(mbusCodeToBayer.begin(), mbusCodeToBayer.end(),
+ [this](const auto &i) { return i.second == *this; });
+ return it != mbusCodeToBayer.end() ? it->first : 0;
+}
+
+/**
* \fn BayerFormat::isValid()
* \brief Return whether a BayerFormat is valid
*/