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

Stat for adaptation reason #160

Closed
henbos opened this issue Feb 6, 2017 · 13 comments
Closed

Stat for adaptation reason #160

henbos opened this issue Feb 6, 2017 · 13 comments
Assignees

Comments

@henbos
Copy link
Collaborator

henbos commented Feb 6, 2017

The resolution of a video track can adapt due to network or cpu limitations. It would be useful to have a stat to say if the framesWidth or framesHeight changed due to reasons of cpu, network or both.

This can be achieved with a bitmask or several booleans.

@henbos
Copy link
Collaborator Author

henbos commented Feb 6, 2017

@alvestrand Is frameWidth/frameHeight the pre- or post degradation resolution? Spec says "represents the width of the video frame for this track".

@alvestrand
Copy link
Contributor

Is there a bitmask WebIDL type?
I'd prefer to stay away from things like "1 means A, 2 means B, 4 means C", so I'd rather have booleans.

frameWidth / frameHeight should be the "native resolution" you get if you connect that track to a

@henbos
Copy link
Collaborator Author

henbos commented Feb 7, 2017

Should we add actual video quality resolution as well? You probably know the size of the element already, but when you're gathering stats you want to know the current quality, no?

@alvestrand
Copy link
Contributor

the

@henbos
Copy link
Collaborator Author

henbos commented Feb 14, 2017

+@vr000m What is preferred if we don't have a bitmask, a boolean member for each option (adaptionReasonCpu, adaptionReasonNetwork) or a sequence of strings or sequence of enum (adaptionReasons with "cpu" and "network")?

@henbos
Copy link
Collaborator Author

henbos commented Feb 14, 2017

Related: Chromium's non-spec compliant version of getStats currently has:

ssrc.googBandwidthLimitedResolution
ssrc.googCpuLimitedResolution

@henbos
Copy link
Collaborator Author

henbos commented Feb 15, 2017

What does CPU limited mean?

@vr000m
Copy link
Contributor

vr000m commented Feb 15, 2017

My question here is what does it mean to be Bandwidth and CPU limited?

And if I prefer to not change the Resolution in the degradation preference and it decreases, does this help me?

@icydragons
Copy link

There also was googViewLimitedResolution at some point, not sure what happened to it.

I agree with either booleans or a repeated enum field. Bitmap is likely the most concise, but it also is less readable or understandable. I could definitely see additional values being added to this either by chrome or by another webrtc implementation.

@alvestrand
Copy link
Contributor

Alternatives:

  1. sequence (enum) - "CPU", "Bandwidth", "other".
  2. Pick the one that's obvious - "None", "CPU", "Bandwidth", "other"

@alvestrand
Copy link
Contributor

Observation is "adaptation is happening".
Stat is "platform's specified reason(s) for the adaptation".
Question: Can there be different reasons for resolution adaptation and framerate adaptation? Probably not.
Don't overthink it - it's a hint, not a deep-level diagnostic.

@vr000m
Copy link
Contributor

vr000m commented Mar 14, 2017

no meaning to the order of events.

@henbos
Copy link
Collaborator Author

henbos commented Oct 20, 2017

To be continued at #256

@henbos henbos closed this as completed Oct 20, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants