← Back to QuicFeed

WebRTC WHIP vs QuicFeed

Protocol comparison for live contribution — based on RFC 9725 (WHIP), RFC 8825 (WebRTC), and QuicFeed v2 test results

WebRTC WHIP (WebRTC-HTTP Ingestion Protocol) is increasingly used for live ingest — OBS ships WHIP output, Cloudflare Stream accepts WHIP ingest — but its architecture targets a fundamentally different problem than QuicFeed's contribution/backhaul design.

1. Congestion Control — LiveCC vs GCC

The most important protocol difference. GCC (Google Congestion Control) is a delay-based hybrid controller designed for interactive video calls. LiveCC is a loss-only controller designed for stable contribution feeds.

WebRTC (GCC)QuicFeed (LiveCC)
Algorithm classDelay + loss hybridLoss-only
Jitter responseInterprets delay variation as congestion; reduces rateIgnores jitter entirely — only reacts to actual packet loss
Loss responseProportional rate reduction0.85x multiplicative decrease (gentler than Cubic 0.7x)
Bandwidth estimationDynamic — REMB/Transport-CC feedbackStatic --max-bitrate + BDP floor + RX buffer feedback
CWND floorNone — can drive bitrate to near-zerotarget_rate * smoothed_rtt — never drops below target
Steady-state stabilityOscillates — delay-based probing causes rate swingsStable — holds target rate unless actual loss occurs

Why this matters for contribution: GCC would back off under the same jitter that caused Cubic to collapse in v1 testing. QuicFeed v2 Phase 4 (50ms delay + 20ms jitter): LiveCC held 5.2 Mbps and delivered 353 files, while Cubic collapsed to 1.3 Mbps / 117 files. GCC interprets inter-arrival jitter as congestion and would similarly reduce sending rate.

2. Transport Layer — QUIC Streams vs RTP/RTCP

WebRTCQuicFeed
TransportRTP/RTCP over DTLS-SRTP over UDPQUIC (RFC 9000) over UDP
Framing1200-byte RTP packetsComplete CMAF segments per QUIC stream
ReliabilityPartial — NACK + FEC; some packets may be permanently lostFull — QUIC guarantees per-stream reliable delivery
HoL blockingPartial — BUNDLE shares one DTLS associationNone — independent QUIC streams
Flow controlPeriodic RTCP receiver reportsQUIC per-stream + connection-level (per-packet ACKs)

3. Application Layer — CMAF vs RTP NAL Units

WebRTCQuicFeed
Media unitIndividual NAL units (frames)Complete CMAF segments (1s) or LL-HLS parts
ContainerRaw codec payloads in RTPISO BMFF (fMP4) with full metadata
Codec supportLimited to codecs with RTP packetization specsAny codec ISO BMFF supports (including H.265/HEVC)
DownstreamRequires remuxing for HLS/DASH deliveryCDN-native — CMAF segments are directly HLS/DASH-compatible
Stream typingSDP media descriptionsWire format v2 StreamType byte

4. Signaling & Connection Setup

WebRTC (WHIP)QuicFeed
SignalingHTTP POST of SDP offer/answerDirect QUIC connection + worker auth API
ICE gatheringRequired — 100ms-2s for STUN/TURN candidatesNot needed — TX connects directly to known RX
Total setup500ms-3s (ICE + DTLS)1-RTT (first connect) or 0-RTT (resumption)
ReconnectionFull ICE + DTLS re-negotiation0-RTT — data on first packet

5. Latency Characteristics

WebRTCQuicFeed
Theoretical floor~50-200ms (frame-level)~33ms per part (fragment-level with LL-HLS/L3D-DASH)
Media unitIndividual NAL units (~33ms at 30fps)Individual CMAF fragments (~33ms at cdur=0.0333)
Delivery modelRTP packets as encodedEach segment = 1 QUIC stream; QUIC delivers bytes reliably and in order, so the RX writes individual fragments as LL-HLS parts as they arrive within the stream
Jitter bufferAdaptive — dynamic buffer depthTSBPD — fixed latency via --latency
Late arrivalsAdaptive playout; may skip framesAbsolute delay floor--max-transfer-time kills slow streams via STOP_SENDING; --latency drops files past playout deadline (TLPKTDROP)
Glass-to-glass200ms-1s typical (interactive)Sub-second with LL-HLS parts (contribution)

QuicFeed's latency floor is not segment-bounded. Each 1s segment is its own QUIC stream, but QUIC delivers bytes reliably and in order within each stream. With 30 fragments per segment (IDR on the first fragment), the RX can parse and write each ~33ms fragment as an LL-HLS part file (part-v-000003-0002.m4s) as soon as it arrives, updating the playlist immediately. An LL-HLS or L3D-DASH player can begin fetching parts as they appear — it does not wait for a full segment. This puts QuicFeed's per-fragment latency floor in the same range as WebRTC's per-frame delivery, while retaining full QUIC reliability and CDN-native CMAF output.

6. Encryption — TLS 1.3 vs DTLS-SRTP

WebRTCQuicFeed
Media encryptionSRTP (AES-128/256-CM)TLS 1.3 built into QUIC
What's encryptedRTP payload only — headers are visibleNearly everything — only connection ID visible
Header protectionNone — RTP headers in the clearQUIC header protection — even packet numbers encrypted
Key rotationSRTP re-keying via DTLS renegotiationTLS 1.3 key update (seamless)

7. Loss Recovery

WebRTCQuicFeed
Primary mechanismNACK + Flexible FEC (5-20% bandwidth overhead)QUIC ACK-based retransmission (per-stream)
Delivery guaranteePartial — some packets may be permanently lostFull — every segment delivered or killed early
FEC overhead5-20% of bandwidth0% — no FEC needed

v2 Phase 4: 62,357 lost packets triggered retransmission, but all 353 files were delivered intact with zero errors. LiveCC's 0.85x backoff kept enough bandwidth for retransmits.

8. Connection Resilience

WebRTCQuicFeed
Connection identityICE candidate pair (IP:port)QUIC Connection ID (independent of IP/port)
Network migrationICE restart — media interruptionTransparent — same connection continues on new path
Migration latency500ms-3sNear-zero
ReconnectionFull setup (WHIP POST + ICE + DTLS)0-RTT — cached session ticket

9. NAT Traversal

WebRTCQuicFeed
NAT traversalFull — ICE + STUN + TURNNone needed — TX connects outbound to known RX
InfrastructureSTUN + TURN servers requiredNone — direct connection
Deployment modelWorks between any two endpointsRX must have a reachable address

This is WebRTC's clearest advantage. For contribution/backhaul, NAT traversal is unnecessary — the RX is always a known server with a reachable address.

10. Codec & Container Flexibility

WebRTCQuicFeed
Video codecsH.264, VP8, VP9, AV1 (each needs RTP packetization spec)Any codec ISO BMFF supports — including H.265/HEVC
Audio codecsOpus (mandatory), G.711, limited AACAAC, Opus, AC-3, E-AC-3
H.265/HEVCLimited — no standardized RTP packetization in most stacksNatively supported
Container metadataNone — raw codec payloadsFull ISO BMFF metadata

H.265/HEVC delivers equivalent quality at ~40% lower bitrate than H.264. QuicFeed carries HEVC natively in ISO BMFF with no protocol-level changes needed.

11. Use Case Fit

QuicFeed and WHIP are designed for fundamentally different problems:

QuicFeed: Contribution/Backhaul

WHIP/WebRTC: Interactive Ingest

12. Feature Comparison Scorecard

Feature AreaAdvantageReasoning
Congestion controlQuicFeedLiveCC loss-only + BDP floor vs GCC delay-based oscillation
Transport reliabilityQuicFeedFull per-stream reliability vs partial NACK+FEC
HoL blockingQuicFeedIndependent QUIC streams vs BUNDLE sharing one DTLS
Connection setupQuicFeed1-RTT / 0-RTT vs ICE+DTLS (500ms-3s)
EncryptionQuicFeedFull header protection vs exposed RTP headers
Connection migrationQuicFeedTransparent via CIDs vs ICE restart
CDN compatibilityQuicFeedCMAF segments are HLS/DASH-native
Codec flexibilityQuicFeedISO BMFF carries any codec including HEVC
Loss recoveryQuicFeed0% FEC overhead vs 5-20%
Absolute delay floorQuicFeed--max-transfer-time + --latency enforce an absolute delay floor — no segment stalls the pipeline beyond the deadline
Receiver healthQuicFeedRX buffer feedback via QUIC datagrams 1/sec
Minimum latencyComparableWebRTC: frame-level ~33ms. QuicFeed: fragment-level ~33ms — RX writes parts as fragments arrive within each QUIC stream
NAT traversalWebRTCICE/STUN/TURN vs requires reachable RX
Dynamic bandwidthWebRTCGCC adapts to unknown capacity

QuicFeed advantages: 11 areas. Comparable: 1 area (minimum latency). WebRTC advantages: 2 areas (NAT traversal, dynamic bandwidth estimation).

Bottom Line

For contribution/backhaul — known sender, known receiver, known bitrate, impaired but sufficient network — QuicFeed's design is better aligned. QUIC's reliable ordered delivery within each stream lets the RX write ~33ms LL-HLS parts as fragments arrive, achieving per-fragment latency comparable to WebRTC's per-frame delivery — while retaining full QUIC reliability, CDN-native CMAF output, and LiveCC throughput stability under jitter. 0-RTT and connection migration minimize disruption.

For interactive ingest — unknown endpoints, unknown bandwidth, NAT traversal required — WHIP/WebRTC is the right tool.

The protocols are complementary, not competing. A production pipeline might use WHIP for browser-based ingest to a cloud media server, then QuicFeed for contribution backhaul from that server to the CDN origin.


← Back to QuicFeed