#include <icy/webrtc/trackreceiver.h>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.
| Return | Name | Description |
|---|---|---|
PacketSignal | emitter |
PacketSignal emitter| 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. |
WebRtcTrackReceiver()Construct an unbound receiver. Call bind() to attach a remote track.
void bind(std::shared_ptr< rtc::Track > track)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.
track Remote track from the PeerConnection::onTrack callback.| Return | Name | Description |
|---|---|---|
Synchronizer | _dispatch | |
std::mutex | _mutex | |
std::deque< std::unique_ptr< IPacket > > | _pending | |
std::shared_ptr< DispatchState > | _state | |
uint64_t | _generation |
Synchronizer _dispatchstd::mutex _mutexstd::deque< std::unique_ptr< IPacket > > _pendingstd::shared_ptr< DispatchState > _state = std::make_shared<DispatchState>()uint64_t _generation = 0| Return | Name | Description |
|---|---|---|
void | enqueue | |
void | flushPending |
void enqueue(std::unique_ptr< IPacket > packet)void flushPending()