![]() |
Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
|
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... | |
Pipeline loop task processing parameters.
Definition at line 34 of file pipeline_loop.h.
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.
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.
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.
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.
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.