XGW.Trunk.Frame (xgw v0.1.0)

Copy Markdown View Source

Multiplex header for inter-edge trunk UDP payloads.

What problem this solves

One trunk pipe carries RTP, RTCP, and opaque datachannel bytes. A single leading type byte keeps demux cheap without WebRTC/ICE on the SFU-to-SFU path.

RFCs

None directly; RTP/SRTP payloads inside follow RFC 3550 / RFC 3711.

Summary

Functions

Decodes a multiplex frame. Returns {:ok, kind, payload} or {:error, :bad_frame}.

Unpacks a datachannel frame body.

Encodes kind and payload as <<type, payload::binary>>.

Packs an opaque datachannel frame body: <<label_len::16, label::binary, data::binary>>.

Types

kind()

@type kind() :: :rtp | :rtcp | :dc

Functions

decode(arg1)

@spec decode(binary()) :: {:ok, kind(), binary()} | {:error, :bad_frame}

Decodes a multiplex frame. Returns {:ok, kind, payload} or {:error, :bad_frame}.

decode_dc(arg1)

@spec decode_dc(binary()) :: {:ok, binary(), binary()} | {:error, :bad_dc}

Unpacks a datachannel frame body.

encode(atom, payload)

@spec encode(kind(), binary()) :: binary()

Encodes kind and payload as <<type, payload::binary>>.

encode_dc(label, data)

@spec encode_dc(binary(), binary()) :: binary()

Packs an opaque datachannel frame body: <<label_len::16, label::binary, data::binary>>.