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;
