[libcamera-devel] [RFC PATCH v2 5/5] android: camera_device: Propagate the requested test pattern mode
Jacopo Mondi
jacopo at jmondi.org
Tue Jun 22 12:55:33 CEST 2021
Hi Hiro,
On Tue, Jun 22, 2021 at 11:36:54AM +0900, Hirokazu Honda wrote:
> Propagate the requested test pattern mode to libcamera::Camera
> through libcamera::Request and also set the android metadata to
> the test pattern mode contained by the complete Request.
>
> Signed-off-by: Hirokazu Honda <hiroh at chromium.org>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Thanks
j
> ---
> src/android/camera_device.cpp | 50 ++++++++++++++++++++++++++++++++++-
> 1 file changed, 49 insertions(+), 1 deletion(-)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 8c71fd06..5c2100ad 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -1933,16 +1933,57 @@ int CameraDevice::processControls(Camera3RequestDescriptor *descriptor)
> return 0;
>
> /* Translate the Android request settings to libcamera controls. */
> + ControlList &controls = descriptor->request_->controls();
> camera_metadata_ro_entry_t entry;
> if (settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry)) {
> const int32_t *data = entry.data.i32;
> Rectangle cropRegion{ data[0], data[1],
> static_cast<unsigned int>(data[2]),
> static_cast<unsigned int>(data[3]) };
> - ControlList &controls = descriptor->request_->controls();
> controls.set(controls::ScalerCrop, cropRegion);
> }
>
> + if (settings.getEntry(ANDROID_SENSOR_TEST_PATTERN_MODE, &entry)) {
> + const int32_t data = *entry.data.i32;
> + switch (data) {
> + case ANDROID_SENSOR_TEST_PATTERN_MODE_OFF:
> + controls.set(controls::draft::TestPatternMode,
> + controls::draft::TestPatternModeOff);
> + break;
> +
> + case ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR:
> + controls.set(controls::draft::TestPatternMode,
> + controls::draft::TestPatternModeSolidColor);
> + break;
> +
> + case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS:
> + controls.set(controls::draft::TestPatternMode,
> + controls::draft::TestPatternModeColorBars);
> + break;
> +
> + case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY:
> + controls.set(controls::draft::TestPatternMode,
> + controls::draft::TestPatternModeColorBarsFadeToGray);
> + break;
> +
> + case ANDROID_SENSOR_TEST_PATTERN_MODE_PN9:
> + controls.set(controls::draft::TestPatternMode,
> + controls::draft::TestPatternModePn9);
> + break;
> +
> + case ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1:
> + controls.set(controls::draft::TestPatternMode,
> + controls::draft::TestPatternModeCustom1);
> + break;
> +
> + default:
> + LOG(HAL, Error)
> + << "Unknown test pattern mode: " << data;
> +
> + return -EINVAL;
> + }
> + }
> +
> return 0;
> }
>
> @@ -2429,6 +2470,13 @@ CameraDevice::getResultMetadata(const Camera3RequestDescriptor &descriptor) cons
> resultMetadata->addEntry(ANDROID_SCALER_CROP_REGION, cropRect);
> }
>
> + if (metadata.contains(controls::draft::TestPatternMode)) {
> + const int32_t testPatternMode =
> + metadata.get(controls::draft::TestPatternMode);
> + resultMetadata->addEntry(ANDROID_SENSOR_TEST_PATTERN_MODE,
> + testPatternMode);
> + }
> +
> /*
> * Return the result metadata pack even is not valid: get() will return
> * nullptr.
> --
> 2.32.0.288.g62a8d224e6-goog
>
More information about the libcamera-devel
mailing list