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

Receiver pipeline loop. More...

#include <receiver_loop.h>

Inheritance diagram for roc::pipeline::ReceiverLoop:
Collaboration diagram for roc::pipeline::ReceiverLoop:

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

 ReceiverLoop (IPipelineTaskScheduler &scheduler, const ReceiverConfig &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::ISourcesource ()
 Get receiver sources. 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

Receiver pipeline loop.

This class acts as a task-based facade for the receiver pipeline subsystem of roc_pipeline module (ReceiverSource, ReceiverSlot, ReceiverEndpoint, ReceiverSessionGroup, ReceiverSession).

It provides two interfaces:

  • sndio::ISource - can be used to retrieve samples from 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 ISource is used to decorate actual implementation of ISource - ReceiverSource, in order to integrate it with PipelineLoop.

Definition at line 47 of file receiver_loop.h.

Member Typedef Documentation

◆ SlotHandle

Opaque slot handle.

Definition at line 50 of file receiver_loop.h.

Constructor & Destructor Documentation

◆ ReceiverLoop()

roc::pipeline::ReceiverLoop::ReceiverLoop ( IPipelineTaskScheduler scheduler,
const ReceiverConfig 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::ReceiverLoop::is_valid ( ) const

Check if the pipeline was successfully constructed.

◆ source()

sndio::ISource& roc::pipeline::ReceiverLoop::source ( )

Get receiver sources.

Remarks
Samples received from remote peers become available in this source.

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