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

Task processing parameters. More...

#include <config.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
 Mximum task processing duration happening immediatelly 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 abolutely precisely, and there is always thread switch overhead, scheduler jitter clock drift, we use a wide interval. More...
 

Detailed Description

Task processing parameters.

Definition at line 58 of file config.h.

Member Data Documentation

◆ enable_precise_task_scheduling

bool roc::pipeline::TaskConfig::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 64 of file config.h.

◆ max_frame_length_between_tasks

core::nanoseconds_t roc::pipeline::TaskConfig::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 76 of file config.h.

◆ max_inframe_task_processing

core::nanoseconds_t roc::pipeline::TaskConfig::max_inframe_task_processing

Mximum task processing duration happening immediatelly 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 83 of file config.h.

◆ min_frame_length_between_tasks

core::nanoseconds_t roc::pipeline::TaskConfig::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 70 of file config.h.

◆ task_processing_prohibited_interval

core::nanoseconds_t roc::pipeline::TaskConfig::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 abolutely precisely, and there is always thread switch overhead, scheduler jitter clock drift, we use a wide interval.

Definition at line 90 of file config.h.


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