[libcamera-devel] [PATCH v2 4/4] android: camera_device: Initialize pixel array properties
Hirokazu Honda
hiroh at chromium.org
Wed Dec 9 08:26:02 CET 2020
Camera service on chromeos fails starting from this patch.
Looks like our camera HAL implementation requires the entry of
ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE.
Shall we add else-statement to the if-statement?
That is,
@@ -748,6 +754,13 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
};
staticMetadata_->addEntry(ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
data.data(), data.size());
+ } else {
+ int32_t sensorSizes[] = {
+ 0, 0, 2560, 1920,
+ };
+ staticMetadata_->addEntry(ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
+ &sensorSizes, 4);
+
}
With this change, camera on chromeos can start.
What do you think?
Best Regards,
-Hiro
On Wed, Dec 2, 2020 at 10:54 PM Jacopo Mondi <jacopo at jmondi.org> wrote:
>
> 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 <laurent.pinchart at ideasonboard.com>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
> src/android/camera_device.cpp | 33 +++++++++++++++++++++++----------
> 1 file changed, 23 insertions(+), 10 deletions(-)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 675af5705055..017a15cac284 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<Size>(properties::PixelArraySize);
> + std::vector<int32_t> data{
> + static_cast<int32_t>(size.width),
> + static_cast<int32_t>(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<const Rectangle> &rects =
> + properties.get<Span<const Rectangle>>(properties::PixelArrayActiveAreas);
> + std::vector<int32_t> data{
> + static_cast<int32_t>(rects[0].x),
> + static_cast<int32_t>(rects[0].y),
> + static_cast<int32_t>(rects[0].width),
> + static_cast<int32_t>(rects[0].height),
> + };
> + staticMetadata_->addEntry(ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
> + data.data(), data.size());
> + }
>
> int32_t sensitivityRange[] = {
> 32, 2400,
> --
> 2.29.1
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
More information about the libcamera-devel
mailing list