Skip to content

Core Concepts

This page provides a detailed overview of the key concepts in sgn, including the following:

  • Frame: The basic building blocks of sgn data.
  • Pad: The primary nodes in the task graph.
  • Element: Small, thematic groupings of pads, to make graph construction easier.
  • Pipeline: The task graph, capable of asynchronous execution.

Frame

A Frame is the basic building block of sgn data. It is an object with arbitrary attributes. Frames are used to represent data in sgn, and they are passed between pads in the task graph. All frames have a few properties:

  • metadata: A dictionary of metadata associated with the frame.
  • EOS: A boolean flag indicating the end of the stream.
  • data: An arbitrary python object to be manipulated in the stream

Pad

A Pad is a node in the task graph. It possesses a callable that can be applied to a Frame, and it can be connected (linked) to other pads in the graph.

Element

An Element is a small, thematic grouping of pads. It is used to make graph construction easier. An element has three types of pads:

  • Source pads (Output Pads): Pads that produce data, called source pads or output pads.
  • Sink pads (Input Pads): Pads that consume data, called sink pads or input pads.
  • Internal pads: Pads that are used for actions inside an element.
The terms "source" and "sink" here belong to a convention inherited from streaming frameworks like GStreamer, and
reflect the direction of data flow. In `sgn`, the terms "output" and "input" are used interchangeably with "source" and
"sink".

Pipeline

A Pipeline is the task graph in sgn. It is a directed acyclic graph (DAG) that represents the flow of data between pads. The pipeline is capable of asynchronous execution, and it can be used to build complex data processing workflows.