Dolda2000 GitWeb
/
kaka
/
cakelight.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added config for turning off lists
[kaka/cakelight.git]
/
src
/
kaka
/
cakelight
/
VideoMode.java
diff --git
a/src/kaka/cakelight/VideoMode.java
b/src/kaka/cakelight/VideoMode.java
index
e0dc386
..
134fa2d
100644
(file)
--- a/
src/kaka/cakelight/VideoMode.java
+++ b/
src/kaka/cakelight/VideoMode.java
@@
-5,15
+5,15
@@
import java.io.IOException;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.Optional;
import java.util.function.Consumer;
-public class VideoMode
implements Mode, Consumer<Optional<File>>
{
+public class VideoMode
extends Mode
{
private Configuration config;
private Configuration config;
- private Thread
t
hread;
- private Consumer<Frame> frameConsumer;
+ private Thread
grabberT
hread;
+ private Consumer<
Video
Frame> frameConsumer;
private VideoDeviceListener deviceListener;
public VideoMode() {
deviceListener = new VideoDeviceListener();
private VideoDeviceListener deviceListener;
public VideoMode() {
deviceListener = new VideoDeviceListener();
- deviceListener.onVideoDeviceChange(this);
+ deviceListener.onVideoDeviceChange(this
::onVideoDeviceChange
);
}
@Override
}
@Override
@@
-24,39
+24,41
@@
public class VideoMode implements Mode, Consumer<Optional<File>> {
@Override
public void exit() {
@Override
public void exit() {
-
t
hread.interrupt();
+
grabberT
hread.interrupt();
deviceListener.stopListening();
}
private void startGrabberThread(File videoDevice) {
assert frameConsumer != null;
deviceListener.stopListening();
}
private void startGrabberThread(File videoDevice) {
assert frameConsumer != null;
-
t
hread = new Thread() {
+
grabberT
hread = new Thread() {
public void run() {
try (FrameGrabber grabber = FrameGrabber.from(videoDevice, config)) {
while (!isInterrupted()) {
public void run() {
try (FrameGrabber grabber = FrameGrabber.from(videoDevice, config)) {
while (!isInterrupted()) {
-// Optional<Frame> frame = grabber.grabFrame();
- grabber.grabFrame().ifPresent(frameConsumer);
+ Optional<VideoFrame> frame = grabber.grabFrame();
+ if (frameConsumer != null) frame.ifPresent(frameConsumer);
+ frame.ifPresent(VideoMode.this::onVideoFrame);
// timeIt("frame", grabber::grabFrame);
// timeIt("frame", grabber::grabFrame);
- // TODO: process frame
- // TODO: save where the LedController can access it
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
-
t
hread.start();
+
grabberT
hread.start();
}
}
- public void on
Frame(Consumer<
Frame> consumer) {
+ public void on
VideoFrame(Consumer<Video
Frame> consumer) {
frameConsumer = consumer;
}
frameConsumer = consumer;
}
- @Override
- public void accept(Optional<File> videoDevice) {
+ private void onVideoFrame(VideoFrame frame) {
+ updateWithFrame(frame.getLedFrame());
+ }
+
+ public void onVideoDeviceChange(Optional<File> videoDevice) {
// Should only happen when this mode is active!
// Should only happen when this mode is active!
- if (
t
hread != null) {
-
t
hread.interrupt();
+ if (
grabberT
hread != null) {
+
grabberT
hread.interrupt();
}
videoDevice.ifPresent(this::startGrabberThread);
}
}
videoDevice.ifPresent(this::startGrabberThread);
}