diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2022-07-15 10:27:29 +0200 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2022-07-23 10:53:58 +0200 |
commit | cd374f31e06e9b334f88d6b32be80094f3781742 (patch) | |
tree | c3b7feebb9c3d54871200c740ffebc7f07c08508 | |
parent | b979c7c99ff029202724f4bdd235e29bd724ec23 (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.cpp | 15 |
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; |