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

outbound-rtp.limited #650

Open
henbos opened this issue Jul 22, 2022 · 7 comments
Open

outbound-rtp.limited #650

henbos opened this issue Jul 22, 2022 · 7 comments

Comments

@henbos
Copy link
Collaborator

henbos commented Jul 22, 2022

In #597, we decided to expose whether or not the RTP stream is configured to be sent.
However due to qualityLimitationReasons even a stream that is configured to send could be prevented from sending. Should we add an outbound-rtp.limited that can be true if it is prevented from sending even though active is also true?

@henbos
Copy link
Collaborator Author

henbos commented Jul 22, 2022

@fippo

@henbos
Copy link
Collaborator Author

henbos commented Jul 26, 2022

Feel free to create a PR fippo

@alvestrand
Copy link
Contributor

Is there a difference between "prevented to be sent" and "target bitrate = 0"?
I'm not sure we have all the moving pieces, but if we already have a per-stream targetBitrate and a per-stream qualityLimitationReason, we should have all the pieces present already to let the state be detected.

@henbos
Copy link
Collaborator Author

henbos commented Aug 1, 2022

targetBitrate = 0 may work depending on the implementation - hoping there's no implementation that defaults this to 0 during ramp up time even though it is sending, I don't know what Chromium does.

limited has the benefit of being explicit and feature detectable, but we could make targetBitrate definition more explicit about this.

qualityLimitationReason does not say whether or not you are sending, only whether or not a limitation is occurring (e.g. could simply reduce resolution or frame rate without affecting sending). And while it may be possible do report something smart per-stream there, the implementation today reports the same QLR value for all outbound-rtps.

@fippo
Copy link
Contributor

fippo commented Aug 1, 2022

I wonder whether it is easier to just expose the opposite of limited -- sending without restrictions.

You might be limited for at least two reasons, bandwidth and cpu and then you might want to know why you are limited.
You might further be limiting the number of temporal layers (which has an effect on the expected framerate) -- does this count as a limitation or not?

(lets wait with a PR until we have a POC implementation)

@henbos
Copy link
Collaborator Author

henbos commented Aug 1, 2022

Anything that not only degrades but TURNS OFF an outbound RTP, despite it being "active = true", is in my opinion a limitation and what we want to measure. The only other case I can think of where sending might not be happening despite not being limited is if the transport is disconnected and all encoding is disabled on a transport-wide level or packets dropped later in the stack

@henbos
Copy link
Collaborator Author

henbos commented Aug 1, 2022

SVC layers is something different than outbound-rtp streams, turning off SVC layers does not turn off the outbound-rtp (and if you want that, see #559) unless perhaps if all layers are turned off in which case you could say that the RTP stream is also off

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants