Expand description

This crate contains all the building blocks and foundational systems that a mmids application requires. It also contains standard workflow steps that are likely to be used in most mmids applications.

Modules

Endpoints are components that handle interactions with external systems. The external systems may be other programs (managed via shell/process calls) or networked systems (such as the logic for handling inbound or outbound RTMP connections). Endpoints are usually idle until invoked by workflow steps.

The event hub is a central actor that receives events from all type of mmids subsystems and allows them to be published to interested subscribers.

Handles interfacing with mmids via an http based interface. Routes are defined by consumers, which define the code that should execute when that route gets hit.

Networking layer for Mmids applications

Reactors are actors that are used to manage workflows for specific stream names. This is a pull mechanism for dynamic workflow capabilities in mmids. When a reactor is asked for a workflow for a stream name, the reactor will reach out to an external service (configured by a reactor executor) to obtain a workflow definition for the requested stream name. If none is returned then that normally means the stream name is not allowed. If a valid workflow definition is returned, the reactor will ensure that the workflow is created so media can be routed to it.

A workflow represents a single media pipeline. Each workflow contains one or more steps that can either receive video, transform video, or send video to other sources. Media data transitions from one step to the next in a linear fashion based on the order in which they were defined.

Structs

Unique identifier that identifies the flow of video end-to-end. Normally when media data enters the beginning of a workflow it will be given a unique stream identifier, and it will keep that identifier until it leaves the last stage of the workflow. This allows for logging to give visibility of how media is processed throughout it’s all lifetime.

Represents timestamps relevant to video data. Contains the decoding time stamp (dts) and presentation time stamp (dts).