[v1,1/1] libcamera: Move NoiseReductionMode control from draft to core
diff mbox series

Message ID 20260208214443.469189-2-rui.wang@ideasonboard.com
State New
Headers show
Series
  • Move NoiseReductionMode control from draft to core
Related show

Commit Message

Rui Wang Feb. 8, 2026, 9:44 p.m. UTC
Promote the NoiseReductionMode control from the draft namespace to the core
controls namespace.

This change affects:
- Core control definitions (control_ids_core.yaml)
- Draft control definitions (control_ids_draft.yaml)
- RkISP1 IPA algorithm implementations (dpf.cpp, filter.cpp, rkisp1.cpp)
- Raspberry Pi IPA implementations (rpi/common/ipa_base.cpp, pisp.cpp, vc4.cpp)
- Android camera capabilities (camera_capabilities.cpp)

All references to controls::draft::NoiseReductionMode and its enum values are
updated to use controls::NoiseReductionMode in the core namespace.

Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>
---
 src/android/camera_capabilities.cpp  |  2 +-
 src/ipa/rkisp1/algorithms/dpf.cpp    | 10 ++++-----
 src/ipa/rkisp1/algorithms/filter.cpp | 10 ++++-----
 src/ipa/rkisp1/rkisp1.cpp            |  2 +-
 src/ipa/rpi/common/ipa_base.cpp      |  6 +++---
 src/ipa/rpi/pisp/pisp.cpp            |  4 ++--
 src/ipa/rpi/vc4/vc4.cpp              | 12 +++++------
 src/libcamera/control_ids_core.yaml  | 31 +++++++++++++++++++++++++++-
 src/libcamera/control_ids_draft.yaml | 29 --------------------------
 9 files changed, 53 insertions(+), 53 deletions(-)

Patch
diff mbox series

diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
index b161bc6b..356c8e8f 100644
--- a/src/android/camera_capabilities.cpp
+++ b/src/android/camera_capabilities.cpp
@@ -1291,7 +1291,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/rkisp1/algorithms/dpf.cpp b/src/ipa/rkisp1/algorithms/dpf.cpp
index 83c1e4b7..0d8b9ef3 100644
--- a/src/ipa/rkisp1/algorithms/dpf.cpp
+++ b/src/ipa/rkisp1/algorithms/dpf.cpp
@@ -182,20 +182,20 @@  void Dpf::queueRequest(IPAContext &context,
 	auto &dpf = context.activeState.dpf;
 	bool update = false;
 
-	const auto &denoise = controls.get(controls::draft::NoiseReductionMode);
+	const auto &denoise = controls.get(controls::NoiseReductionMode);
 	if (denoise) {
 		LOG(RkISP1Dpf, Debug) << "Set denoise to " << *denoise;
 
 		switch (*denoise) {
-		case controls::draft::NoiseReductionModeOff:
+		case controls::NoiseReductionModeOff:
 			if (dpf.denoise) {
 				dpf.denoise = false;
 				update = true;
 			}
 			break;
-		case controls::draft::NoiseReductionModeMinimal:
-		case controls::draft::NoiseReductionModeHighQuality:
-		case controls::draft::NoiseReductionModeFast:
+		case controls::NoiseReductionModeMinimal:
+		case controls::NoiseReductionModeHighQuality:
+		case controls::NoiseReductionModeFast:
 			if (!dpf.denoise) {
 				dpf.denoise = true;
 				update = true;
diff --git a/src/ipa/rkisp1/algorithms/filter.cpp b/src/ipa/rkisp1/algorithms/filter.cpp
index 8ad79801..aa49d332 100644
--- a/src/ipa/rkisp1/algorithms/filter.cpp
+++ b/src/ipa/rkisp1/algorithms/filter.cpp
@@ -73,25 +73,25 @@  void Filter::queueRequest(IPAContext &context,
 		LOG(RkISP1Filter, Debug) << "Set sharpness to " << *sharpness;
 	}
 
-	const auto &denoise = controls.get(controls::draft::NoiseReductionMode);
+	const auto &denoise = controls.get(controls::NoiseReductionMode);
 	if (denoise) {
 		LOG(RkISP1Filter, Debug) << "Set denoise to " << *denoise;
 
 		switch (*denoise) {
-		case controls::draft::NoiseReductionModeOff:
+		case controls::NoiseReductionModeOff:
 			if (filter.denoise != 0) {
 				filter.denoise = 0;
 				update = true;
 			}
 			break;
-		case controls::draft::NoiseReductionModeMinimal:
+		case controls::NoiseReductionModeMinimal:
 			if (filter.denoise != 1) {
 				filter.denoise = 1;
 				update = true;
 			}
 			break;
-		case controls::draft::NoiseReductionModeHighQuality:
-		case controls::draft::NoiseReductionModeFast:
+		case controls::NoiseReductionModeHighQuality:
+		case controls::NoiseReductionModeFast:
 			if (filter.denoise != 3) {
 				filter.denoise = 3;
 				update = true;
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index fbcc3910..69a4ab93 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -120,7 +120,7 @@  const IPAHwSettings ipaHwSettingsV12{
 /* List of controls handled by the RkISP1 IPA */
 const ControlInfoMap::Map rkisp1Controls{
 	{ &controls::DebugMetadataEnable, ControlInfo(false, true, false) },
-	{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) },
+	{ &controls::NoiseReductionMode, ControlInfo(controls::NoiseReductionModeValues) },
 };
 
 } /* namespace */
diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp
index 7072b38c..40d7783e 100644
--- a/src/ipa/rpi/common/ipa_base.cpp
+++ b/src/ipa/rpi/common/ipa_base.cpp
@@ -88,7 +88,7 @@  const ControlInfoMap::Map ipaControls{
 		      static_cast<int64_t>(defaultMaxFrameDuration.get<std::micro>()),
 		      Span<const int64_t, 2>{ { static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()),
 						static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()) } }) },
-	{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) },
+	{ &controls::NoiseReductionMode, ControlInfo(controls::NoiseReductionModeValues) },
 	{ &controls::rpi::StatsOutputEnable, ControlInfo(false, true, false) },
 };
 
@@ -1290,9 +1290,9 @@  void IpaBase::applyControls(const ControlList &controls)
 			break;
 		}
 
-		case controls::draft::NOISE_REDUCTION_MODE:
+		case controls::NOISE_REDUCTION_MODE:
 			/* Handled below in handleControls() */
-			libcameraMetadata_.set(controls::draft::NoiseReductionMode,
+			libcameraMetadata_.set(controls::NoiseReductionMode,
 					       ctrl.second.get<int32_t>());
 			break;
 
diff --git a/src/ipa/rpi/pisp/pisp.cpp b/src/ipa/rpi/pisp/pisp.cpp
index ec7593ff..b93c0497 100644
--- a/src/ipa/rpi/pisp/pisp.cpp
+++ b/src/ipa/rpi/pisp/pisp.cpp
@@ -560,7 +560,7 @@  void IpaPiSP::handleControls(const ControlList &controls)
 			setHistogramWeights();
 			break;
 
-		case controls::draft::NOISE_REDUCTION_MODE: {
+		case controls::NOISE_REDUCTION_MODE: {
 			RPiController::DenoiseAlgorithm *denoise = dynamic_cast<RPiController::DenoiseAlgorithm *>(
 				controller_.getAlgorithm("denoise"));
 
@@ -570,7 +570,7 @@  void IpaPiSP::handleControls(const ControlList &controls)
 				return;
 			}
 
-			if (ctrl.second.get<int32_t>() == controls::draft::NoiseReductionModeOff)
+			if (ctrl.second.get<int32_t>() == controls::NoiseReductionModeOff)
 				denoise->setMode(RPiController::DenoiseMode::Off);
 			else
 				denoise->setMode(RPiController::DenoiseMode::ColourHighQuality);
diff --git a/src/ipa/rpi/vc4/vc4.cpp b/src/ipa/rpi/vc4/vc4.cpp
index 2b205b28..9c8865d2 100644
--- a/src/ipa/rpi/vc4/vc4.cpp
+++ b/src/ipa/rpi/vc4/vc4.cpp
@@ -293,16 +293,16 @@  RPiController::StatisticsPtr IpaVc4::platformProcessStats(Span<uint8_t> mem)
 void IpaVc4::handleControls(const ControlList &controls)
 {
 	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 },
 	};
 
 	for (auto const &ctrl : controls) {
 		switch (ctrl.first) {
-		case controls::draft::NOISE_REDUCTION_MODE: {
+		case controls::NOISE_REDUCTION_MODE: {
 			RPiController::DenoiseAlgorithm *sdn = dynamic_cast<RPiController::DenoiseAlgorithm *>(
 				controller_.getAlgorithm("SDN"));
 			/* Some platforms may have a combined "denoise" algorithm instead. */
diff --git a/src/libcamera/control_ids_core.yaml b/src/libcamera/control_ids_core.yaml
index f26a1b1b..455693ac 100644
--- a/src/libcamera/control_ids_core.yaml
+++ b/src/libcamera/control_ids_core.yaml
@@ -1361,4 +1361,33 @@  controls:
       description: |
         Enable or disable the lens shading correction.
 
-...
+  - NoiseReductionMode:
+      type: int32_t
+      direction: inout
+      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.
+
+...
\ No newline at end of file
diff --git a/src/libcamera/control_ids_draft.yaml b/src/libcamera/control_ids_draft.yaml
index 03309eea..0e04cb16 100644
--- a/src/libcamera/control_ids_draft.yaml
+++ b/src/libcamera/control_ids_draft.yaml
@@ -30,35 +30,6 @@  controls:
             The camera will cancel any active or completed metering sequence.
             The AE algorithm is reset to its initial state.
 
-  - NoiseReductionMode:
-      type: int32_t
-      direction: inout
-      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
       direction: inout