X-Git-Url: http://dolda2000.com/gitweb/?p=kaka%2Fcakelight.git;a=blobdiff_plain;f=src%2Fkaka%2Fcakelight%2FVideoMode.java;h=e4b9400ca04b57d6d570fb8c4b4675702d9612f2;hp=e0dc386417a58802c02b4adaca08f389646f3bd3;hb=03b67a7377d6d23d517d33e47f338bb7859596ed;hpb=03670958a5eab132a4f1a6ae5ae58b88f55bfe2f diff --git a/src/kaka/cakelight/VideoMode.java b/src/kaka/cakelight/VideoMode.java index e0dc386..e4b9400 100644 --- a/src/kaka/cakelight/VideoMode.java +++ b/src/kaka/cakelight/VideoMode.java @@ -5,7 +5,7 @@ import java.io.IOException; import java.util.Optional; import java.util.function.Consumer; -public class VideoMode implements Mode, Consumer> { +public class VideoMode extends Mode implements Consumer> { private Configuration config; private Thread thread; private Consumer frameConsumer; @@ -34,8 +34,9 @@ public class VideoMode implements Mode, Consumer> { public void run() { try (FrameGrabber grabber = FrameGrabber.from(videoDevice, config)) { while (!isInterrupted()) { -// Optional frame = grabber.grabFrame(); - grabber.grabFrame().ifPresent(frameConsumer); + Optional frame = grabber.grabFrame(); + if (frameConsumer != null) frame.ifPresent(frameConsumer); + frame.ifPresent(VideoMode.this::onFrame); // timeIt("frame", grabber::grabFrame); // TODO: process frame // TODO: save where the LedController can access it @@ -48,10 +49,15 @@ public class VideoMode implements Mode, Consumer> { thread.start(); } - public void onFrame(Consumer consumer) { + public void onVideoFrame(Consumer consumer) { frameConsumer = consumer; } + private void onFrame(Frame frame) { + assert frameListener != null; + frameListener.accept(frame.getLedFrame()); + } + @Override public void accept(Optional videoDevice) { // Should only happen when this mode is active!