Message ID | 20210528030531.189492-6-hiroh@chromium.org |
---|---|
State | Changes Requested |
Headers | show |
Series |
|
Related | show |
Hi Hiro, Thank you for the patch. On Fri, May 28, 2021 at 12:05:31PM +0900, Hirokazu Honda wrote: > Report to the Android camera stack the list of supported test > pattern modes constructed by inspecting the values reported > by libcamera through the controls::draft::TestPatternMode control. > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org> > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> > --- > src/android/camera_device.cpp | 46 ++++++++++++++++++++++++++++++++--- > 1 file changed, 43 insertions(+), 3 deletions(-) > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > index 7fc4ddb0..d29147bc 100644 > --- a/src/android/camera_device.cpp > +++ b/src/android/camera_device.cpp > @@ -1082,11 +1082,51 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() > > staticMetadata_->addEntry(ANDROID_SENSOR_ORIENTATION, orientation_); > > - std::vector<int32_t> testPatterModes = { > - ANDROID_SENSOR_TEST_PATTERN_MODE_OFF, > + std::vector<int32_t> testPatternModes = { > + ANDROID_SENSOR_TEST_PATTERN_MODE_OFF > }; > + if (const auto &testPatternsInfo = > + controlsInfo.find(&controls::draft::TestPatternMode); > + testPatternsInfo != controlsInfo.end()) { Same comment as for patch 5/6. > + const auto &values = testPatternsInfo->second.values(); > + ASSERT(!values.empty()); > + for (const auto &value : values) { > + switch (value.get<int32_t>()) { > + case controls::draft::TestPatternModeOff: > + /* > + * ANDROID_SENSOR_TEST_PATTERN_MODE_OFF is > + * already in testPatternModes. > + */ > + break; > + case controls::draft::TestPatternModeSolidColor: > + testPatternModes.push_back( > + ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR); > + break; > + case controls::draft::TestPatternModeColorBars: > + testPatternModes.push_back( > + ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS); > + break; > + case controls::draft::TestPatternModeColorBarsFadeToGray: > + testPatternModes.push_back( > + ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY); > + break; > + case controls::draft::TestPatternModePn9: > + testPatternModes.push_back( > + ANDROID_SENSOR_TEST_PATTERN_MODE_PN9); > + break; > + case controls::draft::TestPatternModeCustom1: > + testPatternModes.push_back( > + ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1); > + break; Given that we don't support this yet, I'd drop it for now. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > + default: > + LOG(HAL, Error) << "Unknown test pattern mode: " > + << value.get<int32_t>(); > + continue; > + } > + } > + } > staticMetadata_->addEntry(ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES, > - testPatterModes); > + testPatternModes); > > uint8_t timestampSource = ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN; > staticMetadata_->addEntry(ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 7fc4ddb0..d29147bc 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -1082,11 +1082,51 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() staticMetadata_->addEntry(ANDROID_SENSOR_ORIENTATION, orientation_); - std::vector<int32_t> testPatterModes = { - ANDROID_SENSOR_TEST_PATTERN_MODE_OFF, + std::vector<int32_t> testPatternModes = { + ANDROID_SENSOR_TEST_PATTERN_MODE_OFF }; + if (const auto &testPatternsInfo = + controlsInfo.find(&controls::draft::TestPatternMode); + testPatternsInfo != controlsInfo.end()) { + const auto &values = testPatternsInfo->second.values(); + ASSERT(!values.empty()); + for (const auto &value : values) { + switch (value.get<int32_t>()) { + case controls::draft::TestPatternModeOff: + /* + * ANDROID_SENSOR_TEST_PATTERN_MODE_OFF is + * already in testPatternModes. + */ + break; + case controls::draft::TestPatternModeSolidColor: + testPatternModes.push_back( + ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR); + break; + case controls::draft::TestPatternModeColorBars: + testPatternModes.push_back( + ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS); + break; + case controls::draft::TestPatternModeColorBarsFadeToGray: + testPatternModes.push_back( + ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY); + break; + case controls::draft::TestPatternModePn9: + testPatternModes.push_back( + ANDROID_SENSOR_TEST_PATTERN_MODE_PN9); + break; + case controls::draft::TestPatternModeCustom1: + testPatternModes.push_back( + ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1); + break; + default: + LOG(HAL, Error) << "Unknown test pattern mode: " + << value.get<int32_t>(); + continue; + } + } + } staticMetadata_->addEntry(ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES, - testPatterModes); + testPatternModes); uint8_t timestampSource = ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN; staticMetadata_->addEntry(ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,