From 1889cdc2e91cc378d239c9b155bbabbdb7827b67 Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Fri, 6 Nov 2020 16:08:16 +0100 Subject: android: camera_device: Initialize pixel array properties Initialize pixel array properties in the Android camera HAL inspecting the camera properties. If the camera does not provide any suitable property, not static metadata is registered to the Android framework. Reviewed-by: Laurent Pinchart Signed-off-by: Jacopo Mondi --- src/android/camera_device.cpp | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'src/android') diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 675af570..017a15ca 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -593,6 +593,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() } const ControlInfoMap &controlsInfo = camera_->controls(); + const ControlList &properties = camera_->properties(); /* Color correction static metadata. */ { @@ -725,17 +726,29 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() staticMetadata_->addEntry(ANDROID_JPEG_MAX_SIZE, &maxJpegBufferSize_, 1); /* Sensor static metadata. */ - int32_t pixelArraySize[] = { - 2592, 1944, - }; - staticMetadata_->addEntry(ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE, - &pixelArraySize, 2); + if (properties.contains(properties::PixelArraySize)) { + const Size &size = + properties.get(properties::PixelArraySize); + std::vector data{ + static_cast(size.width), + static_cast(size.height), + }; + staticMetadata_->addEntry(ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE, + data.data(), data.size()); + } - int32_t sensorSizes[] = { - 0, 0, 2560, 1920, - }; - staticMetadata_->addEntry(ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE, - &sensorSizes, 4); + if (properties.contains(properties::PixelArrayActiveAreas)) { + const Span &rects = + properties.get>(properties::PixelArrayActiveAreas); + std::vector data{ + static_cast(rects[0].x), + static_cast(rects[0].y), + static_cast(rects[0].width), + static_cast(rects[0].height), + }; + staticMetadata_->addEntry(ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE, + data.data(), data.size()); + } int32_t sensitivityRange[] = { 32, 2400, -- cgit v1.2.1