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...
 
typedef struct EndpointHandleEndpointHandle
 Opaque endpoint handle. More...
 

Public Member Functions

 SenderLoop (IPipelineTaskScheduler &scheduler, const SenderConfig &config, const rtp::FormatMap &format_map, packet::PacketFactory &packet_factory, core::BufferFactory< uint8_t > &byte_buffer_factory, core::BufferFactory< audio::sample_t > &sample_buffer_factory, 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 TaskConfig &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

◆ EndpointHandle

Opaque endpoint handle.

Definition at line 50 of file sender_loop.h.

◆ SlotHandle

Opaque slot handle.

Definition at line 47 of file sender_loop.h.

Constructor & Destructor Documentation

◆ SenderLoop()

roc::pipeline::SenderLoop::SenderLoop ( IPipelineTaskScheduler scheduler,
const SenderConfig config,
const rtp::FormatMap format_map,
packet::PacketFactory packet_factory,
core::BufferFactory< uint8_t > &  byte_buffer_factory,
core::BufferFactory< audio::sample_t > &  sample_buffer_factory,
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: