[libcamera-devel] [PATCH 09/10] android: camera_device: Handle COLOR_CORRECTION_ABERRATION_MODE
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Oct 9 14:50:51 CEST 2020
Hi Jacopo,
On 09/10/2020 13:21, Jacopo Mondi wrote:
> Register the ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
> static metadata property inspecting the values retuned by the pipeline
> handler through the properties::draft::AvailableNoiseReductionModes
Noise reduction? or Color Correction...
> libcamera property.
>
> Reserve in the static metadata pack enough space to support all the 3
> available color correction aberration modes Android defines.
>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
> src/android/camera_device.cpp | 20 +++++++++++++-------
> 1 file changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 39d8218a67e5..172676f98059 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -538,7 +538,7 @@ std::tuple<uint32_t, uint32_t> CameraDevice::calculateStaticMetadataSize()
> * Currently: 51 entries, 687 bytes of static metadata
> */
> uint32_t numEntries = 51;
> - uint32_t byteSize = 691;
> + uint32_t byteSize = 693;
3 available color correction ...
691 (which will now be 692 from the previous patch?)
692 + 3 = 695 perhaps?
Maybe I need to try again to automate this part :-(
With those minors fixed up
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>
> /*
> * Calculate space occupation in bytes for dynamically built metadata
> @@ -580,12 +580,18 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
> const ControlList &cameraProperties = camera_->properties();
>
> /* Color correction static metadata. */
> - std::vector<uint8_t> aberrationModes = {
> - ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF,
> - };
> - staticMetadata_->addEntry(ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,
> - aberrationModes.data(),
> - aberrationModes.size());
> + if (cameraProperties.contains(properties::draft::AvailableColorCorrectionAberrationModes)) {
> + Span<const int32_t> pipelineAberrationModes =
> + cameraProperties.get<Span<const int32_t>>
> + (properties::draft::AvailableColorCorrectionAberrationModes);
> +
> + std::vector<uint8_t> aberrationModes;
> + for (int32_t mode : pipelineAberrationModes)
> + aberrationModes.push_back(mode);
> + staticMetadata_->addEntry(ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,
> + aberrationModes.data(),
> + aberrationModes.size());
> + }
>
> /* Control static metadata. */
> std::vector<uint8_t> aeAvailableAntiBandingModes = {
>
--
Regards
--
Kieran
More information about the libcamera-devel
mailing list