[libcamera-devel] [PATCH v3 1/3] android: camera_device: Prepare for none-mandatory formats

Niklas Söderlund niklas.soderlund at ragnatech.se
Sat Aug 1 12:14:25 CEST 2020


When probing what formats a libcamera Camera supports we want to allow
to probe for not mandatory formats. Add a new flag to indicate if a
format in camera3FormatsMap is mandatory or not.

All current defined formats are mandatory.

Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/android/camera_device.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index b49d6681e5a52d32..8028d3e12bda1316 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -46,6 +46,7 @@ const std::vector<Size> camera3Resolutions = {
  */
 struct Camera3Format {
 	std::vector<PixelFormat> libcameraFormats;
+	bool mandatory;
 	const char *name;
 };
 
@@ -57,11 +58,13 @@ const std::map<int, const Camera3Format> camera3FormatsMap = {
 	{
 		HAL_PIXEL_FORMAT_BLOB, {
 			{ formats::MJPEG },
+			true,
 			"BLOB"
 		}
 	}, {
 		HAL_PIXEL_FORMAT_YCbCr_420_888, {
 			{ formats::NV12, formats::NV21 },
+			true,
 			"YCbCr_420_888"
 		}
 	}, {
@@ -71,6 +74,7 @@ const std::map<int, const Camera3Format> camera3FormatsMap = {
 		 */
 		HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, {
 			{ formats::NV12, formats::NV21 },
+			true,
 			"IMPLEMENTATION_DEFINED"
 		}
 	},
@@ -281,7 +285,7 @@ int CameraDevice::initializeStreamConfigurations()
 				break;
 			}
 		}
-		if (!mappedFormat.isValid()) {
+		if (camera3Format.mandatory && !mappedFormat.isValid()) {
 			LOG(HAL, Error) << "Failed to map Android format "
 					<< camera3Format.name << " ("
 					<< utils::hex(androidFormat) << ")";
-- 
2.27.0



More information about the libcamera-devel mailing list