Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Experimental support for the video-layers-allocation extension #3504

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

lminiero
Copy link
Member

This PR adds experimental support for the rtp-hdrext/video-layers-allocation00 RTP extension:
https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/video-layers-allocation00/

As explained in the documentation above, this extension, when negotiated, provides info associated with a simulcast/SVC topology, including the number of available spatial and temporal layers, info on the target bitrates, and the associated resolutions. To keep things simple, when we negotiate this extension we only extract the number of spatial and temporal layers, and then make it available to plugins as part of the extensions structure.

For a POC integration, I added support to this extension to the EchoTest plugin, which always tries to negotiate it. When it finds VLA info associated to an incoming packet, it enriches the existing simulcast/SVC events with that info too (total_spatial_layers, total_temporal_layers), that the EchoTest demo then uses to dynamically show/hide the associated buttons in the demo page.

Should this prove to work nicely, we can add the same functionality to the VideoRoom plugin as well, where I can definitely see this information being useful to interested subscribers (dynamically or as part of the info the plugin advertises about publishers). In the future, we can consider parsing and advertising bitrates/resolutions too, but that would be considerably more work: just notifying about existing layers is already a useful piece of information with very little overhead.

@lminiero lminiero added the multistream Related to Janus 1.x label Jan 10, 2025
@lminiero lminiero marked this pull request as ready for review January 10, 2025 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
multistream Related to Janus 1.x
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant