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
Stats for adaptation reason, for realsies #256
Comments
In goog: At some point there was: |
However, there are a couple of questions:
For bitrate there can be a number of reasons:
For frame-size vs frame-rate changes, there could be several reasons as well:
To me these two are orthogonal. |
Proposal: unsigned long adaptationChanges; sequence(string) adaptationReason; |
Problem: the target bitrate changes all the time. |
What we want to solve: Why are we not seeing the optimal resolution? |
Bitrate is always changing, and you're always bitrate limited. That is, as long as you get the expected resolution and framerate you're NOT bandwidth limited, even though bandwidth can affect the quality of the frames. How about?
|
With "record" being suggested in another bug, what about: ... outgoing RTP stream ... We could also attach to "track", but in the case of simulcast, things could be different for each RTP stream depending on, among other things, priority. |
Assuming you're not sending lossless vIdeo, it's always going to adjust quality based on whatever bitrate it has available (constantly changing). In that sense it is always "bandwidth limited". Despite quality being important, in terms of "is there adaptation going on", the QP would be meaningless unless you define thresholds, but this might be opening a can of worms. We thought that if there is need for adaptation, and it's only changing QP but not resolution and/or framerate there would be a bug in the WebRTC implementation. As such, we only need to care about resolution and/or framerate. If you have crappy quality, you probably also have crappy resolution/framerate. |
Another important difference between QP and resolution/framerate, I would think, is that resolution/framerate is something you set with constraints/settings, and the other is the end result of other things. |
I made an initial PR, excluding change counters for now. Is a change counter only valuable for flip flopping between limited and not limited? I'm hesitant towards increasing the counter up if it changes between "bandwidth" and "cpu" (or "other") in case it walks the line or going back and forth, imagining it is a little limited by both. How fast the counter increases would depend on how aggressive the implementation is. Hopefully, a counter that only goes up when it goes from no limitation to limitation is more stable and useful. |
Merging all of these issues into one: #144, #160.
Alternatives:
googStats are a bunch of booleans that can be turned into a bitmask, and googAdaptationChanges counters.
The text was updated successfully, but these errors were encountered: