[libcamera-devel] [PATCH] android: camera_device: Propagate the requested test pattern mode
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Aug 6 12:30:33 CEST 2021
Hi Hiro,
On 04/08/2021 04:48, Hirokazu Honda wrote:
> Can we merge this patch?
>
> On Tue, Jun 29, 2021 at 1:36 AM Hirokazu Honda <hiroh at chromium.org> 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>
>> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
I'll run this through the compile matrix and integrate next.
--
Kieran
>> ---
>> src/android/camera_device.cpp | 47 ++++++++++++++++++++++++++++++++++-
>> 1 file changed, 46 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
>> index 678cde23..bce3fe48 100644
>> --- a/src/android/camera_device.cpp
>> +++ b/src/android/camera_device.cpp
>> @@ -768,16 +768,54 @@ 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;
>> + int32_t testPatternMode = controls::draft::TestPatternModeOff;
>> + switch (data) {
>> + case ANDROID_SENSOR_TEST_PATTERN_MODE_OFF:
>> + testPatternMode = controls::draft::TestPatternModeOff;
>> + break;
>> +
>> + case ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR:
>> + testPatternMode = controls::draft::TestPatternModeSolidColor;
>> + break;
>> +
>> + case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS:
>> + testPatternMode = controls::draft::TestPatternModeColorBars;
>> + break;
>> +
>> + case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY:
>> + testPatternMode = controls::draft::TestPatternModeColorBarsFadeToGray;
>> + break;
>> +
>> + case ANDROID_SENSOR_TEST_PATTERN_MODE_PN9:
>> + testPatternMode = controls::draft::TestPatternModePn9;
>> + break;
>> +
>> + case ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1:
>> + testPatternMode = controls::draft::TestPatternModeCustom1;
>> + break;
>> +
>> + default:
>> + LOG(HAL, Error)
>> + << "Unknown test pattern mode: " << data;
>> +
>> + return -EINVAL;
>> + }
>> +
>> + controls.set(controls::draft::TestPatternMode, testPatternMode);
>> + }
>> +
>> return 0;
>> }
>>
>> @@ -1329,6 +1367,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.93.g670b81a890-goog
>>
More information about the libcamera-devel
mailing list