diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp
index 58fc4e9d..0d2bc350 100644
--- a/src/libcamera/v4l2_pixelformat.cpp
+++ b/src/libcamera/v4l2_pixelformat.cpp
@@ -321,7 +321,14 @@ V4L2PixelFormat V4L2PixelFormat::fromPixelFormat(const PixelFormat &pixelFormat,
 	if (!info.isValid())
 		return V4L2PixelFormat();
 
-	return multiplanar ? info.v4l2Formats.multi : info.v4l2Formats.single;
+	V4L2PixelFormat ret = multiplanar ? info.v4l2Formats.multi
+					  : info.v4l2Formats.single;
+	/* Try the other of multi/single if the proper one doesn't exist */
+	if (!ret.isValid())
+		ret = multiplanar ? info.v4l2Formats.single
+				  : info.v4l2Formats.multi;
+
+	return ret;
 }
 
 /**
