Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
roc::pipeline Namespace Reference

Sender and receiver processing pipelines. More...

Classes

struct  TaskConfig
 Task processing parameters. More...
 
struct  SenderConfig
 Sender parameters. More...
 
struct  ReceiverSessionConfig
 Receiver session parameters. More...
 
struct  ReceiverCommonConfig
 Receiver common parameters. More...
 
struct  ReceiverConfig
 Receiver parameters. More...
 
struct  TranscoderConfig
 Converter parameters. More...
 
class  IPipelineTaskCompleter
 Pipeline task completion handler. More...
 
class  IPipelineTaskScheduler
 Pipeline task scheduler interface. PipelineLoop uses this interface to schedule asynchronous work. Method calls may come from different threads, but are serialized. More...
 
struct  SenderSessionMetrics
 Metrics of sender session (connection to receiver). More...
 
struct  SenderSlotMetrics
 Metrics of sender slot. More...
 
struct  ReceiverSessionMetrics
 Metrics of receiver session (connection from sender). More...
 
struct  ReceiverSlotMetrics
 Metrics of receiver slot. More...
 
class  PipelineLoop
 Base class for task-based pipelines. More...
 
class  PipelineTask
 Base class for pipeline tasks. More...
 
class  ReceiverEndpoint
 Receiver endpoint sub-pipeline. More...
 
class  ReceiverLoop
 Receiver pipeline loop. More...
 
class  ReceiverSession
 Receiver session sub-pipeline. More...
 
class  ReceiverSessionGroup
 Receiver session group. More...
 
class  ReceiverSlot
 Receiver slot. More...
 
class  ReceiverSource
 Receiver source pipeline. More...
 
class  ReceiverState
 Receiver pipeline state. Thread-safe. More...
 
class  SenderEndpoint
 Sender endpoint sub-pipeline. More...
 
class  SenderLoop
 Sender pipeline loop. More...
 
class  SenderSession
 Sender session sub-pipeline. More...
 
class  SenderSink
 Sender sink pipeline. More...
 
class  SenderSlot
 Sender slot. More...
 
class  TranscoderSink
 Transcoder sink pipeline. More...
 
class  TranscoderSource
 Transcoder source pipeline. More...
 

Functions

bool validate_endpoint (address::Interface iface, address::Protocol proto)
 Validate endpoint type and protocol. More...
 
bool validate_endpoint_and_pipeline_consistency (packet::FecScheme pipeline_fec_scheme, address::Interface iface, address::Protocol proto)
 Validate consistency of the endpoint and the pipeline FEC scheme. More...
 
bool validate_endpoint_pair_consistency (address::Protocol source_proto, address::Protocol repair_proto)
 Validate consistency of the two endpoints. More...
 

Variables

const size_t DefaultSampleRate = 44100
 Default sample rate, number of samples per second. More...
 
const core::nanoseconds_t DefaultPacketLength = 5 * core::Millisecond
 Default packet length. More...
 
const core::nanoseconds_t DefaultLatency = 200 * core::Millisecond
 Default latency. More...
 

Detailed Description

Sender and receiver processing pipelines.

Function Documentation

◆ validate_endpoint()

bool roc::pipeline::validate_endpoint ( address::Interface  iface,
address::Protocol  proto 
)

Validate endpoint type and protocol.

◆ validate_endpoint_and_pipeline_consistency()

bool roc::pipeline::validate_endpoint_and_pipeline_consistency ( packet::FecScheme  pipeline_fec_scheme,
address::Interface  iface,
address::Protocol  proto 
)

Validate consistency of the endpoint and the pipeline FEC scheme.

◆ validate_endpoint_pair_consistency()

bool roc::pipeline::validate_endpoint_pair_consistency ( address::Protocol  source_proto,
address::Protocol  repair_proto 
)

Validate consistency of the two endpoints.

Variable Documentation

◆ DefaultLatency

const core::nanoseconds_t roc::pipeline::DefaultLatency = 200 * core::Millisecond

Default latency.

Remarks
200ms works well on majority Wi-Fi networks and is not too annoying. However, many networks allow lower latencies, and some networks require higher.

Definition at line 55 of file config.h.

◆ DefaultPacketLength

const core::nanoseconds_t roc::pipeline::DefaultPacketLength = 5 * core::Millisecond

Default packet length.

Remarks
5ms works well on majority Wi-Fi networks and allows rather low latencies. However, a lower length may be required depending on network MTU, e.g. for Internet.

Definition at line 49 of file config.h.

◆ DefaultSampleRate

const size_t roc::pipeline::DefaultSampleRate = 44100

Default sample rate, number of samples per second.

Definition at line 37 of file config.h.