summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2022-07-15 10:27:29 +0200
committerJacopo Mondi <jacopo@jmondi.org>2022-07-23 10:53:58 +0200
commitcd374f31e06e9b334f88d6b32be80094f3781742 (patch)
treec3b7feebb9c3d54871200c740ffebc7f07c08508
parentb979c7c99ff029202724f4bdd235e29bd724ec23 (diff)
libcamera: formats: Search PixelFormatInfo on multiple formats
The PixelFormatInfo::info(const V4L2PixelFormat &format) function returns the PixelFormatInfo associated with a V4L2 pixel format. As we prepare to associate multiple V4L2 formats to a single PixelFormatInfo rework the function to search the given V4L2 format in a list. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r--src/libcamera/formats.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index f7e9adc7..86fc698a 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -994,10 +994,19 @@ const PixelFormatInfo &PixelFormatInfo::info(const PixelFormat &format)
*/
const PixelFormatInfo &PixelFormatInfo::info(const V4L2PixelFormat &format)
{
+ auto matchFormats = [&format](const std::vector<V4L2PixelFormat> &formats) {
+ const auto &it = std::find_if(formats.begin(), formats.end(),
+ [&format](const V4L2PixelFormat &fmt) {
+ return format == fmt;
+ });
+
+ return it == formats.end() ? false : true;
+ };
+
const auto &info = std::find_if(pixelFormatInfo.begin(), pixelFormatInfo.end(),
- [format](auto pair) {
- return pair.second.v4l2Formats.single[0] == format ||
- pair.second.v4l2Formats.multi[0] == format;
+ [&matchFormats](auto &pair) {
+ return matchFormats(pair.second.v4l2Formats.single) ||
+ matchFormats(pair.second.v4l2Formats.multi);
});
if (info == pixelFormatInfo.end())
return pixelFormatInfoInvalid;