Tinystreamer is an experimental project that adapts higher-level GStreamer-style concepts to RTOS-class systems.
The long-term goal is to bring a portable streaming model to constrained, non-Linux platforms across multiple CPU and SoC families, including Cortex-M and Cortex-A class devices. Rather than treating a stream as only raw throughput, the focus is on event timing, clock discipline, and synchronization as first-class concerns.
On small systems, sustained high-throughput media processing is often unrealistic. What is realistic, and useful, is a network of inexpensive distributed nodes that share a notion of time.
That shared time can be used to:
- align sensor captures across devices
- schedule coordinated events
- correlate data streams after transport jitter
This project uses a GStreamer-like abstraction to make sync strategies pluggable.
This is not limited to networked transport. The same streaming pipeline model is useful for local capture paths as well, such as ADC sample streams, where buffering, timing, and downstream scheduling still matter.
The repository currently includes:
- a C-based core with buffers, pads, queues, clocking, and pipeline primitives
- early element implementations for UDP ingest, depayloading, queueing Note haven't spent a whole lot of time to figure out jitter buffering
- experimental sink/source work oriented toward LED matrix style outputs
- FreeRTOS-oriented platform integration and embedded example projects
- networked demos that stream simple visual data over UDP for bring-up and timing experiments
- local pipeline applicability for sensor and sampled-data capture flows (for example, ADC-oriented streaming)
This codebase is experimental. I am a solo developer working in fre time.
This project is licensed under the GNU General Public License v3.0 or later. See the LICENSE file for full terms.