[libcamera-devel] [PATCH v3 2/6] libcamera: formats: Search PixelFormatInfo on multiple formats
Jacopo Mondi
jacopo at jmondi.org
Fri Jul 29 18:00:10 CEST 2022
The PixelFormatInfo::info(const V4L2PixelFormat &format) function
returns the PixelFormatInfo associated with a V4L2 pixel format.
To correctly support multiple V4L2 formats mapped to a single
PixelFormatInfo rework the function to search the given V4L2 format
in a list.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
src/libcamera/formats.cpp | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index 3c536722f375..6921d5c43bcb 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -829,9 +829,18 @@ 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();
+ };
+
const auto &info = std::find_if(pixelFormatInfo.begin(), pixelFormatInfo.end(),
- [format](auto pair) {
- return pair.second.v4l2Formats[0] == format;
+ [&matchFormats](auto &pair) {
+ return matchFormats(pair.second.v4l2Formats);
});
if (info == pixelFormatInfo.end())
return pixelFormatInfoInvalid;
--
2.37.1
More information about the libcamera-devel
mailing list