public class VideoMode extends Mode {
private Configuration config;
- private Thread thread;
- private Consumer<Frame> frameConsumer;
+ private Thread grabberThread;
+ private Consumer<VideoFrame> frameConsumer;
private VideoDeviceListener deviceListener;
public VideoMode() {
@Override
public void exit() {
- thread.interrupt();
+ grabberThread.interrupt();
deviceListener.stopListening();
}
private void startGrabberThread(File videoDevice) {
assert frameConsumer != null;
- thread = new Thread() {
+ grabberThread = new Thread() {
public void run() {
try (FrameGrabber grabber = FrameGrabber.from(videoDevice, config)) {
while (!isInterrupted()) {
- Optional<Frame> frame = grabber.grabFrame();
+ Optional<VideoFrame> frame = grabber.grabFrame();
if (frameConsumer != null) frame.ifPresent(frameConsumer);
- frame.ifPresent(VideoMode.this::onFrame);
+ frame.ifPresent(VideoMode.this::onVideoFrame);
// timeIt("frame", grabber::grabFrame);
}
} catch (IOException e) {
}
}
};
- thread.start();
+ grabberThread.start();
}
- public void onVideoFrame(Consumer<Frame> consumer) {
+ public void onVideoFrame(Consumer<VideoFrame> consumer) {
frameConsumer = consumer;
}
- private void onFrame(Frame frame) {
+ private void onVideoFrame(VideoFrame frame) {
updateWithFrame(frame.getLedFrame());
}
public void onVideoDeviceChange(Optional<File> videoDevice) {
// Should only happen when this mode is active!
- if (thread != null) {
- thread.interrupt();
+ if (grabberThread != null) {
+ grabberThread.interrupt();
}
videoDevice.ifPresent(this::startGrabberThread);
}