Skip to main content

Pipeline

In SiMa NEAT, a pipeline is an ordered composition of nodes and node groups assembled through Session.

The result is deterministic graph wiring and a reproducible gst-launch representation.

Building blocks

  • Node: atomic stage unit (decode, convert, preprocess, sink, etc.).
  • NodeGroup: reusable ordered set of nodes (for example model stages or input groups).
  • Session: composition boundary and runtime build/validate point.

Reference:

Deterministic naming

Element names are generated deterministically from node order. This gives:

  • Stable describe() output.
  • Stable describe_backend() strings for reproduction/debug.
  • Consistent diagnostics and probe attachment points.

Execution options

  • Sync execution: push_and_pull(...) or run(...) for simple request-response behavior.
  • Async execution: push(...) / pull(...) with queue tuning and drop policy.

Caps and negotiation (simple mental model)

SiMa NEAT relies on native GStreamer negotiation, but controls key boundaries:

  • Push pipelines (Input): caps are derived from actual input at build/start time, then enforced by runtime policy.
  • Source pipelines (file/RTSP/image groups): caps are negotiated by source/decode elements, optionally constrained with explicit caps nodes.
  • Output normalization: add_output_tensor(...) inserts convert/scale/caps + sink to keep output predictable.

For push pipelines, format/shape changes are handled automatically. Runtime presets and queue policies control latency/safety tradeoffs, and advanced memory limits can be set with RunAdvancedOptions::max_input_bytes.

Reference:

Why this matters

  • Stable element naming for debugging and diagnostics.
  • Reproducible describe_backend() for troubleshooting with native GStreamer tools.
  • Composable model + media pipelines in one API surface.
  • Preset-driven runtime behavior for caps transitions and buffer safety.

See also

Tutorials