Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
|
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... | |
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.
core::nanoseconds_t roc::pipeline::TaskConfig::max_frame_length_between_tasks |
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.
core::nanoseconds_t roc::pipeline::TaskConfig::min_frame_length_between_tasks |
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.