Camera gain (#62)

* Add default QuirkyCamera, make quirks public in USBCameraSource

* Add gain send, fix PS3Eye VID/PID

* Fix ps3eye test
This commit is contained in:
Banks T
2020-07-28 23:18:04 -04:00
committed by GitHub
parent 429241f838
commit 3f5898e73d
4 changed files with 28 additions and 10 deletions

View File

@@ -22,11 +22,14 @@ import java.util.List;
import java.util.Objects;
public class QuirkyCamera {
private static final List<QuirkyCamera> quirkyCameras =
List.of(
new QuirkyCamera(0x1415, 0x2000, "PS3Eye", CameraQuirk.Gain),
new QuirkyCamera(0x2000, 0x1415, "PS3Eye", CameraQuirk.Gain),
new QuirkyCamera(0x72E, 0x45D, "LifeCam VX-5500", CameraQuirk.DoubleSet));
public static final QuirkyCamera DefaultCamera = new QuirkyCamera(0, 0, "", List.of());
public final int usbVid;
public final int usbPid;
public final String baseName;
@@ -50,6 +53,10 @@ public class QuirkyCamera {
}
}
public boolean hasQuirk(CameraQuirk quirk) {
return quirks.get(quirk);
}
public static QuirkyCamera getQuirkyCamera(int usbVid, int usbPid, String baseName) {
for (var qc : quirkyCameras) {
if (qc.usbVid == usbVid && qc.usbPid == usbPid) {
@@ -59,10 +66,6 @@ public class QuirkyCamera {
return new QuirkyCamera(usbVid, usbPid, baseName, List.of());
}
public boolean hasQuirk(CameraQuirk quirk) {
return quirks.get(quirk);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@@ -40,7 +40,7 @@ public class USBCameraSource implements VisionSource {
public final CameraConfiguration configuration;
private final CvSink cvSink;
private final QuirkyCamera cameraQuirks;
public final QuirkyCamera cameraQuirks;
public USBCameraSource(CameraConfiguration config) {
logger = new Logger(USBCameraSource.class, config.nickname, LogGroup.Camera);

View File

@@ -37,6 +37,9 @@ import org.photonvision.common.util.SerializationUtils;
import org.photonvision.common.util.numbers.DoubleCouple;
import org.photonvision.common.util.numbers.IntegerCouple;
import org.photonvision.server.UIUpdateType;
import org.photonvision.vision.camera.CameraQuirk;
import org.photonvision.vision.camera.QuirkyCamera;
import org.photonvision.vision.camera.USBCameraSource;
import org.photonvision.vision.frame.Frame;
import org.photonvision.vision.frame.FrameConsumer;
import org.photonvision.vision.frame.consumer.MJPGFrameConsumer;
@@ -62,6 +65,7 @@ public class VisionModule {
private final NTDataPublisher ntConsumer;
private final UIDataPublisher uiDataConsumer;
private final int moduleIndex;
private final QuirkyCamera cameraQuirks;
private long lastSettingChangeTimestamp = 0;
private long lastFrameConsumeMillis;
@@ -84,6 +88,13 @@ public class VisionModule {
this::consumeResult);
this.moduleIndex = index;
// do this
if (visionSource instanceof USBCameraSource) {
cameraQuirks = ((USBCameraSource) visionSource).cameraQuirks;
} else {
cameraQuirks = QuirkyCamera.DefaultCamera;
}
DataChangeService.getInstance().addSubscriber(new VisionSettingChangeSubscriber());
dashboardOutputStreamer =
@@ -250,8 +261,6 @@ public class VisionModule {
}
saveModule();
VisionModule.this.lastSettingChangeTimestamp = System.currentTimeMillis();
}
}
}
@@ -270,7 +279,13 @@ public class VisionModule {
visionSource.getSettables().setCurrentVideoMode(config.cameraVideoModeIndex);
visionSource.getSettables().setBrightness(config.cameraBrightness);
visionSource.getSettables().setExposure(config.cameraExposure);
visionSource.getSettables().setGain(config.cameraGain);
if (!cameraQuirks.hasQuirk(CameraQuirk.Gain)) {
config.cameraGain = -1;
} else {
visionSource.getSettables().setGain(config.cameraGain);
}
visionSource.getSettables().getConfiguration().currentPipelineIndex =
pipelineManager.getCurrentPipelineIndex();
}