I wanted to let people know about a few blocks and libs I’ve been working on that might be useful to the community. They’re in various states of “done”, but given that I’m using them on a couple of public installations, I figured I’d stick a fork in them and call them done.
Cinder Frame Graph builds upon the below two libraries to provide a node-based video processing framework using Cinder’s built-in types (surfaces, textures, vectors, shaders, etc.). I’m using this on a project right now to programmatically edit and grade hundreds of 4k video streams in real-time.
libnodes is a generic C++ library for building node-based dataflow applications. It’s designed to be used in performances and permanent installations where stability is paramount. To that end, it’s fully type-safe and designed to minimize dynamic allocation. I wrote it because I found so many of my works consist largely of passing data through various processes and filters, and I wanted a node-based system to help separate and clarify the flow of data through the application. It’s also really easy to use its built-in tree traversal to build a GUI using ImGui. You could also use this library for any kind of dataflow application like JSON data analysis or audio processing. I’m using this with OpenCV on another project to run easily configurable analysis flows on umpteen video streams for a permanent public installation.
libglvideo is a lightweight cross-platform generic C++ library for MP4/MOV playback that currently only supports MJPEG and Hap YCoCg. It’s lack of features is a feature, not a bug, as it’s designed to be easy to integrate and to have low overhead. Caveat emptor: it’s the most experimental of the bunch. But if you want cross-platform GPU accelerated video playback, give it a look.