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(...)orrun(...)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.