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

Pipeline loop task processing parameters. More...

#include <pipeline_loop.h>

Public Attributes

bool enable_precise_task_scheduling
 Enable precise task scheduling mode (default). The other settings have effect only when this is set to true. When enabled, pipeline processes tasks in dedicated time intervals between sub-frame and between frames, trying to prevent time collisions between task and frame processing. More...
 
core::nanoseconds_t min_frame_length_between_tasks
 Minimum frame duration between processing tasks. In-frame task processing does not happen until at least given number of samples is processed. Set to zero to allow task processing between frames of any size. More...
 
core::nanoseconds_t max_frame_length_between_tasks
 Maximum frame duration between processing tasks. If the frame is larger than this size, it is split into multiple subframes to allow task processing between the sub-frames. Set to zero to disable frame splitting. More...
 
core::nanoseconds_t max_inframe_task_processing
 Maximum task processing duration happening immediately after processing a frame. If this period expires and there are still pending tasks, asynchronous task processing is scheduled. At least one task is always processed after each frame, even if this setting is too small. More...
 
core::nanoseconds_t task_processing_prohibited_interval
 Time interval during which no task processing is allowed. This setting is used to prohibit task processing during the time when next read() or write() call is expected. Since it can not be calculated absolutely precisely, and there is always thread switch overhead, scheduler jitter clock drift, we use a wide interval. More...
 

Detailed Description

Pipeline loop task processing parameters.

Definition at line 34 of file pipeline_loop.h.

Member Data Documentation

◆ enable_precise_task_scheduling

bool roc::pipeline::PipelineLoopConfig::enable_precise_task_scheduling

Enable precise task scheduling mode (default). The other settings have effect only when this is set to true. When enabled, pipeline processes tasks in dedicated time intervals between sub-frame and between frames, trying to prevent time collisions between task and frame processing.

Definition at line 40 of file pipeline_loop.h.

◆ max_frame_length_between_tasks

core::nanoseconds_t roc::pipeline::PipelineLoopConfig::max_frame_length_between_tasks

Maximum frame duration between processing tasks. If the frame is larger than this size, it is split into multiple subframes to allow task processing between the sub-frames. Set to zero to disable frame splitting.

Definition at line 52 of file pipeline_loop.h.

◆ max_inframe_task_processing

core::nanoseconds_t roc::pipeline::PipelineLoopConfig::max_inframe_task_processing

Maximum task processing duration happening immediately after processing a frame. If this period expires and there are still pending tasks, asynchronous task processing is scheduled. At least one task is always processed after each frame, even if this setting is too small.

Definition at line 59 of file pipeline_loop.h.

◆ min_frame_length_between_tasks

core::nanoseconds_t roc::pipeline::PipelineLoopConfig::min_frame_length_between_tasks

Minimum frame duration between processing tasks. In-frame task processing does not happen until at least given number of samples is processed. Set to zero to allow task processing between frames of any size.

Definition at line 46 of file pipeline_loop.h.

◆ task_processing_prohibited_interval

core::nanoseconds_t roc::pipeline::PipelineLoopConfig::task_processing_prohibited_interval

Time interval during which no task processing is allowed. This setting is used to prohibit task processing during the time when next read() or write() call is expected. Since it can not be calculated absolutely precisely, and there is always thread switch overhead, scheduler jitter clock drift, we use a wide interval.

Definition at line 66 of file pipeline_loop.h.


The documentation for this struct was generated from the following file: