ENG-3870 WebRTC Modernization Phase 1 - #98
Draft
felipeMoran-wowza wants to merge 32 commits into
Draft
Conversation
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.