Skip to main content

Crate parallax

Crate parallax 

Source
Expand description

§Parallax

A Rust-native streaming pipeline engine with zero-copy multi-process support.

Parallax provides both dynamic (runtime-configured) and typed (compile-time safe) pipeline construction, with buffers backed by shared memory for efficient multi-process communication.

§Features

  • Zero-copy buffers: memfd-backed arenas with cross-process reference counting
  • Progressive typing: Start dynamic, graduate to typed
  • Multi-process pipelines: memfd + Unix socket IPC (SCM_RIGHTS)
  • Hybrid scheduling: Tokio tasks + dedicated real-time threads
  • rkyv serialization: Zero-copy deserialization at network boundaries
  • Linux-only: memfd_create, huge pages, eventfd, DMA-BUF

§Quick Start

use parallax::prelude::*;
use parallax::typed::{pipeline, from_iter, map, filter, collect};

// Dynamic pipeline (string syntax)
let mut pipeline = Pipeline::parse("videotestsrc num-buffers=60 ! videoconvert ! nullsink")?;
pipeline.run().await?;

// Dynamic pipeline (programmatic)
let mut pipeline = Pipeline::new();
let src = pipeline.add_source("src", my_source);   // impl Source
let sink = pipeline.add_sink("sink", my_sink);     // impl Sink
pipeline.link(src, sink)?;
pipeline.run().await?;

// Typed pipeline (compile-time checked)
let source = from_iter(vec![1, 2, 3, 4, 5]);
let result = pipeline(source)
    .then(filter(|x: &i32| x % 2 == 0))
    .then(map(|x: i32| x * 10))
    .sink(collect::<i32>())
    .run()?
    .into_inner();
// result: [20, 40]

Re-exports§

pub use error::Error;
pub use error::Result;

Modules§

buffer
Buffer types for zero-copy data passing.
clock
Clock and time types for pipeline synchronization.
codec
Codec-adjacent utilities that depend on no codec library.
control
Runtime control: change a running pipeline without tearing it down.
converters
Format converters for video and audio data.
element
Element system for Parallax pipelines.
elements
Built-in pipeline elements.
error
Error types for Parallax.
event
Events and tagging system for pipelines.
format
Media format and capabilities types.
gpu
GPU acceleration module for hardware video encoding/decoding.
link
Pipeline links for connecting elements across process and network boundaries.
memory
Memory management for Parallax.
metadata
Buffer metadata types.
negotiation
Caps negotiation for pipelines.
observability
Observability features: metrics and tracing.
pipeline
Pipeline construction and execution.
plugin
Plugin system for dynamically loading elements.
prelude
Prelude for convenient imports
temporal
Temporal types for time-sensitive stream processing.
typed
Typed pipeline API with compile-time type safety.

Macros§

define_plugin
Helper macro for defining plugin descriptors in Rust.