[libcamera-devel] [PATCH 1/3] controls: Promote NoiseReductionMode to non-draft
Paul Elder
paul.elder at ideasonboard.com
Mon Sep 13 12:20:05 CEST 2021
Promote NoiseReductionMode to a non-draft control. Upgrade the value
descriptions. Update the raspberrypi IPA accordingly, as it is the only
current user of this control.
Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
---
include/libcamera/ipa/raspberrypi.h | 2 +-
src/android/camera_capabilities.cpp | 2 +-
src/ipa/raspberrypi/raspberrypi.cpp | 12 ++---
src/libcamera/control_ids.yaml | 73 +++++++++++++++++------------
4 files changed, 52 insertions(+), 37 deletions(-)
diff --git a/include/libcamera/ipa/raspberrypi.h b/include/libcamera/ipa/raspberrypi.h
index 521eaecd..e0dc6f5e 100644
--- a/include/libcamera/ipa/raspberrypi.h
+++ b/include/libcamera/ipa/raspberrypi.h
@@ -45,7 +45,7 @@ static const ControlInfoMap Controls({
{ &controls::ColourCorrectionMatrix, ControlInfo(-16.0f, 16.0f) },
{ &controls::ScalerCrop, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },
{ &controls::FrameDurationLimits, ControlInfo(INT64_C(1000), INT64_C(1000000000)) },
- { &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) }
+ { &controls::NoiseReductionMode, ControlInfo(controls::NoiseReductionModeValues) }
}, controls::controls);
} /* namespace RPi */
diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
index e92bca42..08e44a1a 100644
--- a/src/android/camera_capabilities.cpp
+++ b/src/android/camera_capabilities.cpp
@@ -1175,7 +1175,7 @@ int CameraCapabilities::initializeStaticMetadata()
{
std::vector<uint8_t> data;
data.reserve(5);
- const auto &infoMap = controlsInfo.find(&controls::draft::NoiseReductionMode);
+ const auto &infoMap = controlsInfo.find(&controls::NoiseReductionMode);
if (infoMap != controlsInfo.end()) {
for (const auto &value : infoMap->second.values())
data.push_back(value.get<int32_t>());
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
index 047123ab..8d44ab0a 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -605,11 +605,11 @@ static const std::map<int32_t, std::string> AwbModeTable = {
};
static const std::map<int32_t, RPiController::DenoiseMode> DenoiseModeTable = {
- { controls::draft::NoiseReductionModeOff, RPiController::DenoiseMode::Off },
- { controls::draft::NoiseReductionModeFast, RPiController::DenoiseMode::ColourFast },
- { controls::draft::NoiseReductionModeHighQuality, RPiController::DenoiseMode::ColourHighQuality },
- { controls::draft::NoiseReductionModeMinimal, RPiController::DenoiseMode::ColourOff },
- { controls::draft::NoiseReductionModeZSL, RPiController::DenoiseMode::ColourHighQuality },
+ { controls::NoiseReductionModeOff, RPiController::DenoiseMode::Off },
+ { controls::NoiseReductionModeFast, RPiController::DenoiseMode::ColourFast },
+ { controls::NoiseReductionModeHighQuality, RPiController::DenoiseMode::ColourHighQuality },
+ { controls::NoiseReductionModeMinimal, RPiController::DenoiseMode::ColourOff },
+ { controls::NoiseReductionModeZSL, RPiController::DenoiseMode::ColourHighQuality },
};
void IPARPi::queueRequest(const ControlList &controls)
@@ -898,7 +898,7 @@ void IPARPi::queueRequest(const ControlList &controls)
* analysis image resolution or format mismatch, we should
* report the status correctly in the metadata.
*/
- libcameraMetadata_.set(controls::draft::NoiseReductionMode, idx);
+ libcameraMetadata_.set(controls::NoiseReductionMode, idx);
} else {
LOG(IPARPI, Error) << "Noise reduction mode " << idx
<< " not recognised";
diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml
index 9d4638ae..fffcca2d 100644
--- a/src/libcamera/control_ids.yaml
+++ b/src/libcamera/control_ids.yaml
@@ -381,6 +381,50 @@ controls:
\todo Define how the sensor timestamp has to be used in the reprocessing
use case.
+ - NoiseReductionMode:
+ type: int32_t
+ description: |
+ Mode of operation for the noise reduction algorithm.
+
+ The noise reduction algorithm attempts to improve image quality by
+ removing excessive noise added by the capture process, especially in
+ dark conditions.
+ enum:
+ - name: NoiseReductionModeOff
+ value: 0
+ description: |
+ No noise reduction will be applied by the camera device, for
+ both the raw and YUV domains.
+ - name: NoiseReductionModeFast
+ value: 1
+ description: |
+ Noise reduction is applied without reducing the frame rate.
+ This may be the same as Raw if it is listed, or the same as Off if
+ any noise reduction will slow down the frame rate.
+ - name: NoiseReductionModeHighQuality
+ value: 2
+ description: |
+ High quality noise reduction at the expense of frame rate.
+ - name: NoiseReductionModeRaw
+ value: 3
+ description: |
+ Only sensor raw domain basic noise reduction is enabled, to remove
+ demosaicing or other processing artifacts. Frame rate will not be
+ reduced.
+ - name: NoiseReductionModeZSL
+ value: 4
+ description: |
+ Noise reduction is applied at different levels to different streams.
+
+ ZSL is meant to be used by applications that maintain a continuous
+ circular buffer of high-resolution images during preview and
+ reprocess image(s) from that buffer into a final capture when
+ triggered by the user. In this mode, the camera device applies
+ noise reduction to low-resolution streams (below maximum recording
+ resolution) to maximize preview quality, but does not apply noise
+ reduction to high-resolution streams, since those will be
+ reprocessed later if necessary.
+
# ----------------------------------------------------------------------------
# Draft controls section
@@ -427,35 +471,6 @@ controls:
The camera will cancel any active trigger and the AF routine is
reset to its initial state.
- - NoiseReductionMode:
- type: int32_t
- draft: true
- description: |
- Control to select the noise reduction algorithm mode. Currently
- identical to ANDROID_NOISE_REDUCTION_MODE.
-
- Mode of operation for the noise reduction algorithm.
- enum:
- - name: NoiseReductionModeOff
- value: 0
- description: No noise reduction is applied
- - name: NoiseReductionModeFast
- value: 1
- description: |
- Noise reduction is applied without reducing the frame rate.
- - name: NoiseReductionModeHighQuality
- value: 2
- description: |
- High quality noise reduction at the expense of frame rate.
- - name: NoiseReductionModeMinimal
- value: 3
- description: |
- Minimal noise reduction is applied without reducing the frame rate.
- - name: NoiseReductionModeZSL
- value: 4
- description: |
- Noise reduction is applied at different levels to different streams.
-
- ColorCorrectionAberrationMode:
type: int32_t
draft: true
--
2.27.0
More information about the libcamera-devel
mailing list