[libcamera-devel] [PATCH 09/10] android: camera_device: Handle COLOR_CORRECTION_ABERRATION_MODE
Jacopo Mondi
jacopo at jmondi.org
Fri Oct 9 14:21:00 CEST 2020
Register the ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
static metadata property inspecting the values retuned by the pipeline
handler through the properties::draft::AvailableNoiseReductionModes
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;
/*
* 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 = {
--
2.28.0
More information about the libcamera-devel
mailing list