Skip to content

ENG-3870 WebRTC Modernization Phase 1 - #98

Draft
felipeMoran-wowza wants to merge 32 commits into
masterfrom
feature/ENG-3870_WebRTC_modernization_phase_1
Draft

ENG-3870 WebRTC Modernization Phase 1#98
felipeMoran-wowza wants to merge 32 commits into
masterfrom
feature/ENG-3870_WebRTC_modernization_phase_1

Conversation

@felipeMoran-wowza

@felipeMoran-wowza felipeMoran-wowza commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Merges the Phase 1 modernization work into master. This phase brings four feature sets to the v2 React example, each reviewed in its own PR:

Simulcast (ENG-4112 — #72)
Opt-in simulcast publishing across both the WebSocket and WHIP signaling paths: the publisher emits rid-labeled encodings, each layer independently scaled and bitrate-capped (restrictions encoded in the SDP). If the engine rejects the simulcast offer per RFC 8853, the publisher transparently retries without simulcast and surfaces a banner, keeping the user's toggle preference. Includes a resolution badge on the video.

Configurable simulcast renditions (ENG-4126 — #81)
A Simulcast drawer on the publish page to configure up to 3 renditions (RID, resolution scale-down, max bitrate). Settings are applied to the offer's sendEncodings/SDP; scale-down can be changed mid-stream via setParameters. Single-rendition publishing is unchanged.

ICE restart (ENG-4106 — #83, ENG-4466, ENG-4469 — #87)
Automatic recovery across network changes: an oniceconnectionstatechange handler on the publish and play WebSocket flows calls restartIce() when the path fails (or stays disconnected past a grace period), plus a manual "Restart ICE" button on both settings forms. Renegotiation is signaled with a dedicated messageType: "ICE_RESTART" WebSocket message carrying the full offer SDP, with negotiationEstablished tracked to distinguish the initial offer from a restart.

Data channels (ENG-4585 / ENG-4475 — #90, #97)
Two independent data channels multiplexed over one peer connection, each with its own toggle on both pages and covering all four signaling paths (WebSocket + WHIP/WHEP):

Chat — full-duplex text channel with a shared panel on the Publish and Play pages.
Captions — one-way publisher → players channel; the player renders the lines as an overlay on the video.
On the player side, a negotiated bootstrap channel forces the SCTP section into the offer so WSE can open its mirrored channels.

rafaelAlonso-wowza and others added 30 commits June 16, 2026 12:04
…pport_for_configurable_simulcast_renditions_in_example_pages

ENG-4126 - Add support for configurable Simulcast renditions in example pages
…start

ENG-4106: Changes for implementing and testing ICE Restart
…or_ice_restart_message

ENG-4469: refactor ice restart message
…ta_channel_support_to_the_WebRTC_example_webpages

ENG-4585 Add data channel support to the WebRTC example webpages
…_Phase_1.1_-_Data_Channels

ENG-4475 WebRTC Phase 1.1-  Data channels
@felipeMoran-wowza felipeMoran-wowza self-assigned this Aug 12, 2026
@felipeMoran-wowza
felipeMoran-wowza marked this pull request as draft August 12, 2026 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants