mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-16 00:45:07 +03:00
android: camera_device: Propagate the requested test pattern mode
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@chromium.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
abaa45d627
commit
4c61c5d223
1 changed files with 46 additions and 1 deletions
|
@ -782,16 +782,54 @@ int CameraDevice::processControls(Camera3RequestDescriptor *descriptor)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Translate the Android request settings to libcamera controls. */
|
/* Translate the Android request settings to libcamera controls. */
|
||||||
|
ControlList &controls = descriptor->request_->controls();
|
||||||
camera_metadata_ro_entry_t entry;
|
camera_metadata_ro_entry_t entry;
|
||||||
if (settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry)) {
|
if (settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry)) {
|
||||||
const int32_t *data = entry.data.i32;
|
const int32_t *data = entry.data.i32;
|
||||||
Rectangle cropRegion{ data[0], data[1],
|
Rectangle cropRegion{ data[0], data[1],
|
||||||
static_cast<unsigned int>(data[2]),
|
static_cast<unsigned int>(data[2]),
|
||||||
static_cast<unsigned int>(data[3]) };
|
static_cast<unsigned int>(data[3]) };
|
||||||
ControlList &controls = descriptor->request_->controls();
|
|
||||||
controls.set(controls::ScalerCrop, cropRegion);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1343,6 +1381,13 @@ CameraDevice::getResultMetadata(const Camera3RequestDescriptor &descriptor) cons
|
||||||
resultMetadata->addEntry(ANDROID_SCALER_CROP_REGION, cropRect);
|
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
|
* Return the result metadata pack even is not valid: get() will return
|
||||||
* nullptr.
|
* nullptr.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue