[libcamera-devel,14/14] android: camera_device: Store static metadata in cache

Message ID 20190818011329.14499-15-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • Assorted fixes for Android camera HAL
Related show

Commit Message

Laurent Pinchart Aug. 18, 2019, 1:13 a.m. UTC
The CameraDevice class has a mechanism to cache static metadata, but
doesn't use it. Fix it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/android/camera_device.cpp | 42 +++++++++++++++++------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

Comments

Jacopo Mondi Aug. 19, 2019, 9:25 a.m. UTC | #1
Hi Laurent,

On Sun, Aug 18, 2019 at 04:13:29AM +0300, Laurent Pinchart wrote:
> The CameraDevice class has a mechanism to cache static metadata, but
> doesn't use it. Fix it.

Well, this is embarrassing.
Thanks for fixing.

Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>

Thanks
  j

>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  src/android/camera_device.cpp | 42 +++++++++++++++++------------------
>  1 file changed, 21 insertions(+), 21 deletions(-)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 9acfed694abc..c27175ac090d 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -131,14 +131,14 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  	/* \todo Use correct sizes */
>  	#define STATIC_ENTRY_CAP 256
>  	#define STATIC_DATA_CAP 6688
> -	camera_metadata_t *staticMetadata =
> -		allocate_camera_metadata(STATIC_ENTRY_CAP, STATIC_DATA_CAP);
> +	staticMetadata_ = allocate_camera_metadata(STATIC_ENTRY_CAP,
> +						   STATIC_DATA_CAP);
>
>  	/* Sensor static metadata. */
>  	int32_t pixelArraySize[] = {
>  		2592, 1944,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  				ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
>  				&pixelArraySize, 2);
>  	METADATA_ASSERT(ret);
> @@ -146,7 +146,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  	int32_t sensorSizes[] = {
>  		0, 0, 2560, 1920,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  				ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
>  				&sensorSizes, 4);
>  	METADATA_ASSERT(ret);
> @@ -154,13 +154,13 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  	int32_t sensitivityRange[] = {
>  		32, 2400,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  				ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
>  				&sensitivityRange, 2);
>  	METADATA_ASSERT(ret);
>
>  	uint16_t filterArr = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG;
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  				ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
>  				&filterArr, 1);
>  	METADATA_ASSERT(ret);
> @@ -168,33 +168,33 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  	int64_t exposureTimeRange[] = {
>  		100000, 200000000,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  				ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
>  				&exposureTimeRange, 2);
>  	METADATA_ASSERT(ret);
>
>  	int32_t orientation = 0;
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  				ANDROID_SENSOR_ORIENTATION,
>  				&orientation, 1);
>  	METADATA_ASSERT(ret);
>
>  	/* Flash static metadata. */
>  	char flashAvailable = ANDROID_FLASH_INFO_AVAILABLE_FALSE;
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_FLASH_INFO_AVAILABLE,
>  			&flashAvailable, 1);
>  	METADATA_ASSERT(ret);
>
>  	/* Lens static metadata. */
>  	float fn = 2.53 / 100;
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  				ANDROID_LENS_INFO_AVAILABLE_APERTURES, &fn, 1);
>  	METADATA_ASSERT(ret);
>
>  	/* Control metadata. */
>  	char controlMetadata = ANDROID_CONTROL_MODE_AUTO;
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_CONTROL_AVAILABLE_MODES,
>  			&controlMetadata, 1);
>  	METADATA_ASSERT(ret);
> @@ -205,7 +205,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  		ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ,
>  		ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
>  			availableAntiBandingModes, 4);
>  	METADATA_ASSERT(ret);
> @@ -214,19 +214,19 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  		ANDROID_CONTROL_AE_MODE_ON,
>  		ANDROID_CONTROL_AE_MODE_OFF,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_CONTROL_AE_AVAILABLE_MODES,
>  			aeAvailableModes, 2);
>  	METADATA_ASSERT(ret);
>
>  	controlMetadata = ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE;
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_CONTROL_AE_LOCK_AVAILABLE,
>  			&controlMetadata, 1);
>  	METADATA_ASSERT(ret);
>
>  	uint8_t awbLockAvailable = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE;
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
>  			&awbLockAvailable, 1);
>
> @@ -236,7 +236,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  		ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888,
>  		ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_SCALER_AVAILABLE_FORMATS,
>  			availableStreamFormats.data(),
>  			availableStreamFormats.size());
> @@ -250,7 +250,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  		ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920,
>  		ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
>  			availableStreamConfigurations.data(),
>  			availableStreamConfigurations.size());
> @@ -259,7 +259,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  	std::vector<int64_t> availableStallDurations = {
>  		ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, 2560, 1920, 33333333,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,
>  			availableStallDurations.data(),
>  			availableStallDurations.size());
> @@ -270,18 +270,18 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
>  		ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920, 33333333,
>  		ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888, 2560, 1920, 33333333,
>  	};
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,
>  			minFrameDurations.data(), minFrameDurations.size());
>  	METADATA_ASSERT(ret);
>
>  	/* Info static metadata. */
>  	uint8_t supportedHWLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
> -	ret = add_camera_metadata_entry(staticMetadata,
> +	ret = add_camera_metadata_entry(staticMetadata_,
>  			ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
>  			&supportedHWLevel, 1);
>
> -	return staticMetadata;
> +	return staticMetadata_;
>  }
>
>  /*
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 9acfed694abc..c27175ac090d 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -131,14 +131,14 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 	/* \todo Use correct sizes */
 	#define STATIC_ENTRY_CAP 256
 	#define STATIC_DATA_CAP 6688
-	camera_metadata_t *staticMetadata =
-		allocate_camera_metadata(STATIC_ENTRY_CAP, STATIC_DATA_CAP);
+	staticMetadata_ = allocate_camera_metadata(STATIC_ENTRY_CAP,
+						   STATIC_DATA_CAP);
 
 	/* Sensor static metadata. */
 	int32_t pixelArraySize[] = {
 		2592, 1944,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 				ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
 				&pixelArraySize, 2);
 	METADATA_ASSERT(ret);
@@ -146,7 +146,7 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 	int32_t sensorSizes[] = {
 		0, 0, 2560, 1920,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 				ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
 				&sensorSizes, 4);
 	METADATA_ASSERT(ret);
@@ -154,13 +154,13 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 	int32_t sensitivityRange[] = {
 		32, 2400,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 				ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
 				&sensitivityRange, 2);
 	METADATA_ASSERT(ret);
 
 	uint16_t filterArr = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG;
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 				ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
 				&filterArr, 1);
 	METADATA_ASSERT(ret);
@@ -168,33 +168,33 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 	int64_t exposureTimeRange[] = {
 		100000, 200000000,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 				ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
 				&exposureTimeRange, 2);
 	METADATA_ASSERT(ret);
 
 	int32_t orientation = 0;
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 				ANDROID_SENSOR_ORIENTATION,
 				&orientation, 1);
 	METADATA_ASSERT(ret);
 
 	/* Flash static metadata. */
 	char flashAvailable = ANDROID_FLASH_INFO_AVAILABLE_FALSE;
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_FLASH_INFO_AVAILABLE,
 			&flashAvailable, 1);
 	METADATA_ASSERT(ret);
 
 	/* Lens static metadata. */
 	float fn = 2.53 / 100;
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 				ANDROID_LENS_INFO_AVAILABLE_APERTURES, &fn, 1);
 	METADATA_ASSERT(ret);
 
 	/* Control metadata. */
 	char controlMetadata = ANDROID_CONTROL_MODE_AUTO;
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_CONTROL_AVAILABLE_MODES,
 			&controlMetadata, 1);
 	METADATA_ASSERT(ret);
@@ -205,7 +205,7 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 		ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ,
 		ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
 			availableAntiBandingModes, 4);
 	METADATA_ASSERT(ret);
@@ -214,19 +214,19 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 		ANDROID_CONTROL_AE_MODE_ON,
 		ANDROID_CONTROL_AE_MODE_OFF,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_CONTROL_AE_AVAILABLE_MODES,
 			aeAvailableModes, 2);
 	METADATA_ASSERT(ret);
 
 	controlMetadata = ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE;
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_CONTROL_AE_LOCK_AVAILABLE,
 			&controlMetadata, 1);
 	METADATA_ASSERT(ret);
 
 	uint8_t awbLockAvailable = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE;
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
 			&awbLockAvailable, 1);
 
@@ -236,7 +236,7 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 		ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888,
 		ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_SCALER_AVAILABLE_FORMATS,
 			availableStreamFormats.data(),
 			availableStreamFormats.size());
@@ -250,7 +250,7 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 		ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920,
 		ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
 			availableStreamConfigurations.data(),
 			availableStreamConfigurations.size());
@@ -259,7 +259,7 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 	std::vector<int64_t> availableStallDurations = {
 		ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, 2560, 1920, 33333333,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,
 			availableStallDurations.data(),
 			availableStallDurations.size());
@@ -270,18 +270,18 @@  camera_metadata_t *CameraDevice::getStaticMetadata()
 		ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920, 33333333,
 		ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888, 2560, 1920, 33333333,
 	};
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,
 			minFrameDurations.data(), minFrameDurations.size());
 	METADATA_ASSERT(ret);
 
 	/* Info static metadata. */
 	uint8_t supportedHWLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
-	ret = add_camera_metadata_entry(staticMetadata,
+	ret = add_camera_metadata_entry(staticMetadata_,
 			ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
 			&supportedHWLevel, 1);
 
-	return staticMetadata;
+	return staticMetadata_;
 }
 
 /*