ionorg / ion-sdk-js

ion javascript sdk
MIT License
102 stars 70 forks source link

Allow layer selection for publisher #175

Closed dreamerns closed 3 years ago

dreamerns commented 3 years ago

Related to: https://github.com/pion/ion-sfu/pull/477

Description

Reference issue

Fixes #...

tarrencev commented 3 years ago

Just to make sure i understand, is this so the sfu can tell the client which layers to send?

dreamerns commented 3 years ago

Just to make sure i understand, is this so the sfu can tell the client which layers to send?

This change allows the publisher to select which layer(s) should be enabled. Right now if I select FHD, I will send 3 layers all the time. If I want to change that, I'll have to renegotiate. With this change, the publisher can enable/disable the layer on the fly. An additional message is needed because there is no (easy) way for ion-sfu to detect that layer has been disabled. Once we send message of new layer selection, ion-sfu will check all the down tracks and update accordingly. New channel message activeLayer is for informational purposes only, so that subscribers are aware.

adwpc commented 3 years ago

This force subscriber to use one layer?

tarrencev commented 3 years ago

Just to make sure i understand, is this so the sfu can tell the client which layers to send?

This change allows the publisher to select which layer(s) should be enabled. Right now if I select FHD, I will send 3 layers all the time. If I want to change that, I'll have to renegotiate. With this change, the publisher can enable/disable the layer on the fly. An additional message is needed because there is no (easy) way for ion-sfu to detect that layer has been disabled. Once we send message of new layer selection, ion-sfu will check all the down tracks and update accordingly. New channel message activeLayer is for informational purposes only, so that subscribers are aware.

I think the SFU needs to do active track detection. Even without this change it is necessary since the browser can automatically toggle layers without user input. I think @OrlandoCo has plans to implement support for it at some point. My preference would be to wait for that since it avoids a lot of clientside/signaling complexity