diff --git a/photon-client/src/components/dashboard/tabs/InputTab.vue b/photon-client/src/components/dashboard/tabs/InputTab.vue index 6e6833080a..147775d7e5 100644 --- a/photon-client/src/components/dashboard/tabs/InputTab.vue +++ b/photon-client/src/components/dashboard/tabs/InputTab.vue @@ -158,6 +158,16 @@ const interactiveCols = computed(() => (args) => useCameraSettingsStore().changeCurrentPipelineSetting({ cameraWhiteBalanceTemp: args }, false) " /> + = 0.0) { + try { + int propVal = (int) MathUtil.clamp(saturation, minSaturation, maxSaturation); + + logger.debug( + "Setting property " + + saturationProp.getName() + + " to " + + propVal + + " (user requested " + + saturation + + ")"); + + saturationProp.set(propVal); + } catch (VideoException e) { + logger.error("Failed to set camera saturation!", e); + } + } + } + @Override public void setExposureRaw(double exposureRaw) { if (exposureRaw >= 0.0) { @@ -406,6 +456,7 @@ public void onCameraConnected() { // modes setUpExposureProperties(); setUpWhiteBalanceProperties(); + setUpSaturationProperty(); cacheVideoModes(); setAllCamDefaults(); diff --git a/photon-core/src/main/java/org/photonvision/vision/camera/csi/LibcameraGpuSettables.java b/photon-core/src/main/java/org/photonvision/vision/camera/csi/LibcameraGpuSettables.java index 0ce0aa2516..0827a491fd 100644 --- a/photon-core/src/main/java/org/photonvision/vision/camera/csi/LibcameraGpuSettables.java +++ b/photon-core/src/main/java/org/photonvision/vision/camera/csi/LibcameraGpuSettables.java @@ -131,6 +131,11 @@ public void setAutoExposure(boolean cameraAutoExposure) { } } + @Override + public void setSaturation(double saturation) { + // TODO need to implement this on JNI side as well + } + @Override public void setExposureRaw(double exposureRaw) { logger.debug("Setting exposure to " + exposureRaw); @@ -255,6 +260,16 @@ public LibCameraJNI.SensorModel getModel() { return sensorModel; } + @Override + public double getMinSaturation() { + return 0; + } + + @Override + public double getMaxSaturation() { + return 0; + } + @Override public double getMinExposureRaw() { return this.minExposure; diff --git a/photon-core/src/main/java/org/photonvision/vision/processes/VisionSourceSettables.java b/photon-core/src/main/java/org/photonvision/vision/processes/VisionSourceSettables.java index 331ea10b8b..c768465d88 100644 --- a/photon-core/src/main/java/org/photonvision/vision/processes/VisionSourceSettables.java +++ b/photon-core/src/main/java/org/photonvision/vision/processes/VisionSourceSettables.java @@ -54,6 +54,12 @@ public void onCameraConnected() { cameraPropertiesCached = true; } + public abstract void setSaturation(double saturation); + + public abstract double getMinSaturation(); + + public abstract double getMaxSaturation(); + public abstract void setExposureRaw(double exposureRaw); public abstract double getMinExposureRaw(); diff --git a/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java b/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java index ba1025fb1b..6b169a2156 100644 --- a/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java @@ -134,6 +134,19 @@ public double getMaxExposureRaw() { return 1234; } + @Override + public void setSaturation(double saturation) {} + + @Override + public double getMinSaturation() { + return 1; + } + + @Override + public double getMaxSaturation() { + return 1234; + } + @Override public void setAutoWhiteBalance(boolean autowb) {}