Implement baseline capability
Develop a functional, baseline CTstream implementation. Integrate this with the core CloudTurbine code base. Support image, audio and text capture.
While CTstream's user interface is functional, this goal aims to develop a "next gen", elegant user interface design. Consider design concepts from audio recording software (such as Ableton Live).
Implement the design developed in the previous goal. Work with the UI designer to balance UI features and implementation difficulty. Consider options for implementing the new GUI (Swing, JavaFX, etc.).
Simplify/enhance the ability to add new streams
CTstream is extensible, allowing developers to add new types of data streams. An outline how this is done is included at the bottom of the CTstream app documentation (https://www.cloudturbine.com/ctstream/). Enhance CTstream code organization/modularity to simplify this process. Consider adding an API specifically to support adding new stream types.
Add new streams
Add new data streams; ideas include UDP capture, HTTP URL polling, interface to data acquisition hardware (National Instruments, Measurement Computing, Android), IoT.
Cross-platform "reach through" for screen capture
CTstream includes a user-sizeable window for performing screen captures. Ideally, this window should support a "reach through" capability so the user can interact with application windows within the captured region. This works on Windows OS, but not on Mac OS. Additionally, on Linux, "reach through" works but the captured image is black if the CTstream window is on top. The goal of this step is to develop a cross-platform "reach through" implementation.
A baseline implementation of CTstream has been developed and integrated into the core CloudTurbine code base (https://github.com/cycronix/cloudturbine/tree/master/JavaCode/CTstream). This version supports saving images (webcam and screencapture), audio and text to CT format. It includes a “functional” (but not elegant) user interface and has already proven useful for creating CT-related videos and streams for CT testing.
I’ve been working on some preliminary designs for the CTstream interface. There are many things happening with this design , but the main theme behind this concept is to organize each streaming channel into a module that contains it’s own settings. The app will still include a main settings window for configuring application wide settings, such as the output folder, encryption, debug mode, etc., but the majority of the settings will be contained in the main interface on a channel by channel basis.
By splitting the app up into modular channels, you can now have several channels of each type streaming simultaneously. Simply clicking the (+) icon in the top left of the app will add another channel. When a new channel is added it is given a default name and color key. The color key is used on the timeline chart to give the user an overall view of the time and duration of the channel’s data.
The timeline chart allows users to scrub through and view different time segments of the captured data. This can be accomplished by clicking and dragging on the rectangular view indicator on the timeline. A click and hold on the timeline while moving your mouse side to side will move the viewable area forward and backward through time. A click and hold while moving the mouse up and down will change the viewable range of data below.
One thing to note is that when recording a series of images, an image’s width in the preview is dictated by the frames per second. In the example above you can see that the top screen capture channel is recording at a higher frames per second than the web cam channel below it.
Another element of the design that informs the overall layout of the app is the ability to arm and disarm each channel individually. This allows you to have many channels setup and available for streaming without having to actually stream everything at once when you hit the record button.
The design has been updated with a more simplified layout. This phase of the design still includes the core features of CTstream, but is postponing the scrubbable timeline and expanded preview features until a future update.
- The design now includes a File menu. This will contain links to add a channel, and an additional settings window.
- The channel name and channel type fields have switched positions. The channel type is now displayed above the channel name field.
- Many icons on the settings panel have been replaced with checkboxes.
The design now includes a mockup for a collapsed view of the CTstream window. All the settings on a panel are hidden except for the channel type field, channel name field, expand panel button, and close panel button.