[libcamera-devel] [PATCH] android: capabilities: Add static white level

Kieran Bingham kieran.bingham at ideasonboard.com
Tue Jan 4 00:26:49 CET 2022


Quoting Paul Elder (2021-12-21 05:15:49)
> Plumb SENSOR_INFO_WHITE_LEVEL into the static metadata. Get the
> information from the maximum bit depth raw format supported by the
> sensor. Since we hardcode accept only 16-bit raw formats, take that

"Since we hardcode that we only accept 16-bit ...."

> hardcoded value. While at it, save the hardcoded value in a variable so
> that if it is changed in the future this gets updated automatically.
> 
> Note that nothing is added to the capability detector, as white level
> will always be added to the static metadata. Add a comment to document
> it.
> 
> Bug: https://bugs.libcamera.org/show_bug.cgi?id=49
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
>  src/android/camera_capabilities.cpp | 9 ++++++++-
>  src/android/camera_capabilities.h   | 1 +
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
> index d5e79057..bc62a928 100644
> --- a/src/android/camera_capabilities.cpp
> +++ b/src/android/camera_capabilities.cpp
> @@ -447,6 +447,7 @@ int CameraCapabilities::initialize(std::shared_ptr<Camera> camera,
>         orientation_ = orientation;
>         facing_ = facing;
>         minISO_ = minISO;
> +       rawBitDepth_ = 16;
>         rawStreamAvailable_ = false;
>         maxFrameDuration_ = 0;
>  
> @@ -667,7 +668,7 @@ int CameraCapabilities::initializeStreamConfigurations()
>                 const PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);
>                 switch (info.colourEncoding) {
>                 case PixelFormatInfo::ColourEncodingRAW:
> -                       if (info.bitsPerPixel != 16)
> +                       if (info.bitsPerPixel != rawBitDepth_)

Should this print a warning to say we're ignoring non-16-bit raw
formats?

Otherwise, seems ok, on the assumption that we don't currently care
about non-16-bit raw support.


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

>                                 continue;
>  
>                         rawStreamAvailable_ = true;
> @@ -1335,6 +1336,12 @@ int CameraCapabilities::initializeStaticMetadata()
>         staticMetadata_->addEntry(ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,
>                                   maxFrameDuration_);
>  
> +       /* This is required for FULL. */
> +       int whiteLevel = (1 << rawBitDepth_) - 1;
> +       staticMetadata_->addEntry(ANDROID_SENSOR_INFO_WHITE_LEVEL,
> +                                 whiteLevel);
> +       availableCharacteristicsKeys_.insert(ANDROID_SENSOR_INFO_WHITE_LEVEL);
> +
>         /* Statistics static metadata. */
>         uint8_t faceDetectMode = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;
>         staticMetadata_->addEntry(ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,
> diff --git a/src/android/camera_capabilities.h b/src/android/camera_capabilities.h
> index 7f554c63..2e6595fb 100644
> --- a/src/android/camera_capabilities.h
> +++ b/src/android/camera_capabilities.h
> @@ -71,6 +71,7 @@ private:
>         int facing_;
>         int orientation_;
>         int minISO_;
> +       unsigned int rawBitDepth_;
>         bool rawStreamAvailable_;
>         int64_t maxFrameDuration_;
>         camera_metadata_enum_android_info_supported_hardware_level hwLevel_;
> -- 
> 2.27.0
>


More information about the libcamera-devel mailing list