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

Sender pipeline loop. More...

#include <sender_loop.h>

Inheritance diagram for roc::pipeline::SenderLoop:
Collaboration diagram for roc::pipeline::SenderLoop:

Classes

class  Task
 Base task class. More...
 
class  Tasks
 Subclasses for specific tasks. More...
 

Public Types

typedef struct SlotHandleSlotHandle
 Opaque slot handle. More...
 

Public Member Functions

 SenderLoop (IPipelineTaskScheduler &scheduler, const SenderSinkConfig &sink_config, const rtp::EncodingMap &encoding_map, core::IPool &packet_pool, core::IPool &packet_buffer_pool, core::IPool &frame_buffer_pool, core::IArena &arena)
 Initialize. More...
 
bool is_valid () const
 Check if the pipeline was successfully constructed. More...
 
sndio::ISinksink ()
 Get sender sink. More...
 
- Public Member Functions inherited from roc::pipeline::PipelineLoop
void schedule (PipelineTask &task, IPipelineTaskCompleter &completer)
 Enqueue a task for asynchronous execution. More...
 
bool schedule_and_wait (PipelineTask &task)
 Enqueue a task for asynchronous execution and wait until it finishes. More...
 
void process_tasks ()
 Process some of the enqueued tasks, if any. More...
 

Additional Inherited Members

- Protected Member Functions inherited from roc::pipeline::PipelineLoop
 PipelineLoop (IPipelineTaskScheduler &scheduler, const PipelineLoopConfig &config, const audio::SampleSpec &sample_spec)
 Initialization. More...
 
size_t num_pending_tasks () const
 How much pending tasks are there. More...
 
size_t num_pending_frames () const
 How much pending frames are there. More...
 
const Statsget_stats_ref () const
 Get task processing statistics. Returned object can't be accessed concurrently with other methods. More...
 
bool process_subframes_and_tasks (audio::Frame &frame)
 Split frame and process subframes and some of the enqueued tasks. More...
 

Detailed Description

Sender pipeline loop.

This class acts as a task-based facade for the sender pipeline subsystem of roc_pipeline module (SenderSink, SenderSlot, SenderEndpoint, SenderSession).

It provides two interfaces:

  • sndio::ISink - can be used to pass samples to the pipeline (should be used from sndio thread)
  • PipelineLoop - can be used to schedule tasks on the pipeline (can be used from any thread)
Note
Private inheritance from ISink is used to decorate actual implementation of ISink - SenderSource, in order to integrate it with PipelineLoop.

Definition at line 44 of file sender_loop.h.

Member Typedef Documentation

◆ SlotHandle

Opaque slot handle.

Definition at line 47 of file sender_loop.h.

Constructor & Destructor Documentation

◆ SenderLoop()

roc::pipeline::SenderLoop::SenderLoop ( IPipelineTaskScheduler scheduler,
const SenderSinkConfig sink_config,
const rtp::EncodingMap encoding_map,
core::IPool packet_pool,
core::IPool packet_buffer_pool,
core::IPool frame_buffer_pool,
core::IArena arena 
)

Initialize.

Member Function Documentation

◆ is_valid()

bool roc::pipeline::SenderLoop::is_valid ( ) const

Check if the pipeline was successfully constructed.

◆ sink()

sndio::ISink& roc::pipeline::SenderLoop::sink ( )

Get sender sink.

Remarks
Samples written to the sink are sent to remote peers.

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