Skip to content

AudYoFlo: Behavior: Data Transfers between Components

jvxgit edited this page Jun 17, 2024 · 2 revisions

The main purpose of AudYoFlo is to process data. Principally, it can be used for any kind of digital data, however, the main focus lies on the processing of audio data.

From the software perspective, all data enters the signal processing at a "source" and leaves the signal processing - typically in a modified version - at a "sink". Coming from the audio world where, typically, each soundcard has input (microphone) and output capabilities, the union of "source" and "sink" is represented as a device. A typical audio device may be an ASIO compatible soundcard that is operated at a fixed samplerate, with a fixed buffersize and certain input and output channels.

Signal processing in AudYoFlo is defined as the process to transfer the input data towards the output applying certain changes on the way. For the purpose of the modification, nodes can be connected from the "source" towards the "sink" to form a signal processing graph. In that processing graph, the connection from the source to the sink is a signal processing chain. An exemplary signal processing chain is depicted in the following simple figure:

grafik

On its way, the data is passed from node to node. In that context, the representation of the data and the placement in memory is very import. Also, the nodes shall not only accept data as provided but should also have the opportunity to influence the format in which the data is handed over to them. Therefore, a mechanism of negotiation between nodes is a key element in the preparation of each data signal processing chain.

In this chapter, we will explain the basics regarding the component chains and the principles regarding the negotiation of the parameters during data transfers in AudYoFlo.

Terms and Definitions: Connections, Master, Connectors and Bridges

In the construction of the data processing chains, the data flow graphs are defined by means of the following building blocks:

  1. Each component in AudYoFlo can act as a Connection Master. The connection master is responsible for the input and the output of the data in one data flow graph.
  2. Each component in AudYoFlo can expose input and output connectors. Typically, an output connector emits data whereas an input connector receives data.
  3. Bridges can be specified to connect input and output connectors. This is always a one-to-one connection in which the data flows from the output connector to the input connector.
  4. A data flow chain is the amount of one master, the involved input and output connectors and the bridges to define the linkage between the connectors.

With this definition, a typical data flow chain is for example defined as follows:

grafik

There is one connection master with one output connector and one input connector as well as two node components exposing an input and an output connector each. The bridges Bridge #0, Bridge #1 and Bridge #2 define the data flow from output connector to input connector, and the overall structure of the chain is from the source to the sink.

Once all connections are established and data processing is started, the data flows as shown by the red line on the right side of the Figure.

Duplex vs. Simplex Signal Processing

One specific constraint in the shown example is that the data flows from the Connection Master component to the Connectin Master component. This is a very useful constraint for Duplex Signal Processing of a device that has input as well as output capabilities: Typically, in this case, input and output are handled in a common I/O thread. This is required to guarantee low signal processing delay as well as a deterministic delay in the signal processing chain. Most audio technologies for professional audio follow this approach for Duplex Signal Processing.

Simplex Signal Processing

In AudYoFlo, all devices are assumed to support duplex data input and output. Therefore, it is always required that data flows from the same Connection Master source to its sink. If a technology such as a camera only has input capabilities, the device is duplex but has a sink which accepts only 0 channels of data.

Back

Clone this wiki locally