Introducing Teppefall Capture
This application is still a work in progress, but I am tired of keeping it a secret so here is the dirt. Teppefall Capture is a simple Photo Booth clone. By simple I mean it is built on the FX/Layout stack, has an OpenGL powered live preview (JOGL + TextureRenderer) and gets its video feed from a custom video capture library.
.png)
The video library just wraps JMyron and Quicktime API's, so it can't be used for anything fancy, like movies etc, but is fine for web cameras. I wrote it so that Capture can support third party decoders in the future. Also, the pathetic reality of Java media forces me to support several code paths per platform just to have a slight chance of being able to extract images from a web or video camera. My focus is simply on images and maybe some filters. Video would force me to step into the world of Quicktime madness where nothing works on Windows if the moon is in the wrong alignment. And Java Media is in the stone age, so I doubt that will work any better.
These screenshots show Teppefall Capture under the Substance Graphite look and feel running on Windows Vista. The video feed is provided by a JMyron decoder.
This application has something like 30 threads, 10Mb of dependencies and is extremely volatile. It might still be shelved since it has a high number of problematic bugs. This application not only takes down Java VM's... it can crash Windows XP if there is a driver problem. Blue screens for everybody ! This is usually because my primary video decoder is based on Jmyron, which is a native library with zero tolerance for sloppy coding. Just a small change in the threading or start/stop code can crash the entire application.
Capture was built using Teppefall FX/Layout and has only a few lines of JFC/Swing layout code. Everything else is done in Teppefall Layout JFC – my homegrown XML format. The 2D renderer on top was prototyped in Javascript and then converted to Java, but it still runs in the same SurfacePanel component (the one used in FX). I though about compiling the Javascript into a Java renderer, but I doubt it will work as well - or at all. I also need all the performance I can get. I had to do my own hit code for the RSS tag and stuff like that is easy to mess up.
Performance is a big problem in an application like this. The current version eats up 98% CPU when showing a live video feed (no restrictions on FPS or JOGL). Because of this I am forced to shut down the live preview when an image is being written to disk. There might not be enough CPU power available on my machine to do both things at the same time. I am primarily worried that Capture will make media players skip on single core systems. So a lot of thought has to be put into the way you move data around. Telling people that “it works on my system” might not be the best route.
Anyway. I have no release date. Before summer I think.
.png)
.png)
.png)

