WebRtcTrackReceiver
WebRtcTrackReceiver
#include <icy/webrtc/trackreceiver.h>class WebRtcTrackReceiverDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:61
Inherits:
PacketStreamAdapter
PacketStreamAdapter that receives depacketized frames from a single remote libdatachannel Track and emits them as VideoPacket or AudioPacket into a PacketStream.
Call setupReceiveTrack() on the track first to install the correct depacketizer, then bind this receiver to it.
Usage: pc->onTrack([&](shared_ptrrtc::Track track) { if (setupReceiveTrack(track)) videoReceiver.bind(track); });
videoReceiver.emitter += packetSlot(&recorder, &Recorder::onEncodedVideo);
Emits owning packets - the frame data is copied, so downstream processors can safely queue packets asynchronously.
Emits VideoPacket for video tracks, AudioPacket for audio tracks. Use those packets to drive a decoder, recorder, or custom pipeline. See samples/media-recorder for a complete receive -> decode -> file example.
List of all members
| Name | Kind | Owner |
|---|---|---|
emitter | variable | Declared here |
WebRtcTrackReceiver | function | Declared here |
~WebRtcTrackReceiver | function | Declared here |
bind | function | Declared here |
configureJitterBuffer | function | Declared here |
jitterBufferConfig | function | Declared here |
jitterBufferEnabled | function | Declared here |
_dispatch | variable | Declared here |
_timer | variable | Declared here |
_mutex | variable | Declared here |
_pending | variable | Declared here |
_jitterBuffer | variable | Declared here |
_jitterConfig | variable | Declared here |
_timerTickMs | variable | Declared here |
_timerNeedsUpdate | variable | Declared here |
_state | variable | Declared here |
_generation | variable | Declared here |
enqueue | function | Declared here |
flushPending | function | Declared here |
PacketStreamAdapter | function | Inherited from PacketStreamAdapter |
~PacketStreamAdapter | function | Inherited from PacketStreamAdapter |
emit | function | Inherited from PacketStreamAdapter |
emit | function | Inherited from PacketStreamAdapter |
emit | function | Inherited from PacketStreamAdapter |
emit | function | Inherited from PacketStreamAdapter |
emit | function | Inherited from PacketStreamAdapter |
getEmitter | function | Inherited from PacketStreamAdapter |
retention | function | Inherited from PacketStreamAdapter |
onStreamStateChange | function | Inherited from PacketStreamAdapter |
_emitter | variable | Inherited from PacketStreamAdapter |
PacketStreamAdapter | function | Inherited from PacketStreamAdapter |
operator= | function | Inherited from PacketStreamAdapter |
PacketStreamAdapter | function | Inherited from PacketStreamAdapter |
operator= | function | Inherited from PacketStreamAdapter |
Inherited from PacketStreamAdapter
| Kind | Name | Description |
|---|---|---|
function | PacketStreamAdapter | Construct the adapter, binding it to the given packet signal. |
function | ~PacketStreamAdapter virtual inline | |
function | emit virtual | Emit a mutable raw buffer as a packet. |
function | emit virtual | Emit a read-only raw buffer as a packet (data is copied internally). |
function | emit virtual | Emit a string as a packet (data is copied internally). |
function | emit virtual | Emit a flag-only packet carrying no payload data. |
function | emit virtual | Emit an existing packet directly onto the outgoing signal. |
function | getEmitter | Returns a reference to the outgoing packet signal. |
function | retention virtual const | Returns how this adapter treats incoming packet lifetime. Most adapters are synchronous and therefore only borrow the packet for the current call chain. Queue-style adapters override this to advertise that they clone before deferred use. Callers may treat the first adapter reporting Cloned or Retained as the explicit ownership boundary in the stream graph. |
function | onStreamStateChange virtual inline | Called by the PacketStream to notify when the internal Stream state changes. On receiving the Stopped state, it is the responsibility of the adapter to have ceased all outgoing packet transmission, especially in multi-thread scenarios. |
variable | _emitter | |
function | PacketStreamAdapter | NonCopyable and NonMovable. |
function | operator= | Deleted assignment operator. |
function | PacketStreamAdapter | Deleted constructor. |
function | operator= | Deleted assignment operator. |
Public Attributes
| Return | Name | Description |
|---|---|---|
PacketSignal | emitter |
emitter
PacketSignal emitterDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:87
Public Methods
| Return | Name | Description |
|---|---|---|
WebRtcTrackReceiver | Construct an unbound receiver. Call bind() to attach a remote track. | |
void | bind | Bind to a remote track. Must be called after setupReceiveTrack() returned true. Installs an onFrame callback that converts each depacketized frame to a VideoPacket or AudioPacket and emits it on the PacketStream. The track type (video/audio) is detected from the SDP description. |
void | configureJitterBuffer | Replace the receive-side jitter-buffer settings. |
JitterBufferConfig | jitterBufferConfig const | Current jitter-buffer settings for this receiver. |
bool | jitterBufferEnabled const | True when depacketized receive frames are buffered before emission. |
WebRtcTrackReceiver
WebRtcTrackReceiver()Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:65
Construct an unbound receiver. Call bind() to attach a remote track.
bind
void bind(std::shared_ptr< rtc::Track > track)Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:74
Bind to a remote track. Must be called after setupReceiveTrack() returned true. Installs an onFrame callback that converts each depacketized frame to a VideoPacket or AudioPacket and emits it on the PacketStream. The track type (video/audio) is detected from the SDP description.
Parameters
trackRemote track from the PeerConnection::onTrack callback.
configureJitterBuffer
void configureJitterBuffer(const JitterBufferConfig & config)Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:79
Replace the receive-side jitter-buffer settings.
Reconfiguring resets any buffered media still waiting for release.
jitterBufferConfig
const
JitterBufferConfig jitterBufferConfig() constDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:82
Current jitter-buffer settings for this receiver.
jitterBufferEnabled
const
bool jitterBufferEnabled() constDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:85
True when depacketized receive frames are buffered before emission.
Private Attributes
| Return | Name | Description |
|---|---|---|
Synchronizer | _dispatch | |
Timer | _timer | |
std::mutex | _mutex | |
std::deque< std::unique_ptr< IPacket > > | _pending | |
std::unique_ptr< detail::ReceiverJitterBuffer > | _jitterBuffer | |
JitterBufferConfig | _jitterConfig | |
std::int64_t | _timerTickMs | |
bool | _timerNeedsUpdate | |
std::shared_ptr< DispatchState > | _state | |
uint64_t | _generation |
_dispatch
Synchronizer _dispatchDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:99
_timer
Timer _timerDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:100
_mutex
std::mutex _mutexDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:101
_pending
std::deque< std::unique_ptr< IPacket > > _pendingDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:102
_jitterBuffer
std::unique_ptr< detail::ReceiverJitterBuffer > _jitterBufferDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:103
_jitterConfig
JitterBufferConfig _jitterConfigDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:104
_timerTickMs
std::int64_t _timerTickMs = 5Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:105
_timerNeedsUpdate
bool _timerNeedsUpdate = falseDefined in src/webrtc/include/icy/webrtc/trackreceiver.h:106
_state
std::shared_ptr< DispatchState > _state = std::make_shared<DispatchState>()Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:107
_generation
uint64_t _generation = 0Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:108
Private Methods
| Return | Name | Description |
|---|---|---|
void | enqueue | |
void | flushPending |
enqueue
void enqueue(std::unique_ptr< IPacket > packet)Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:96
flushPending
void flushPending()