Open wilaw opened 5 months ago
This is a great suggestion! It would really help if CMCD could be used to derive an accurate representation of what was going on for the user watching the media.
There are some aspects I believe need to be clarified. First, the described states actually happen at two layers:
The current suggestion is a bit of a mix between those two. The important buffer-level aspects (buffer length and buffer starvation) seem to be already handled by existing keys. With a focus on what the user perceived, I'd prefer transmitting information about the presentation layer.
There's a catch though: the time of sending those states may not correspond to the actual time at which they occurred on the client, because they are bound to the client making a request. This obviously does not apply to the transport mode where an independent JSON request is being sent. But it could lead to the receiving end getting a wrong representation of what actually happened at the client level.
This could be easily mitigated by requiring that, when a state transition is sent, the time of its change is also sent in a separate field (e.g., expressed as an absolute wall clock timestamp, or the ∆(current wall clock time, wall clock time of state change), to minimize the request footprint).
I would also suggest renaming/splitting up some states in line with the above considerations.
br
value has already changed (because, e.g., the buffer layer loads a higher-resolution content), but the presentation itself is still using the old rendition to avoid quality oscillations. Note that a switch may not be up/down one level, so we must explicitly send the br
value to which the switch corresponds.Edit:
I think this is a combination of playback and client status, and there are some states that are loosely related. I would indicate them separately. E.g., we have playback speed (1.0 -- normal, >1 ff, 0-1 slow motion, < 1, Innf -- skip, etc), and client states (switching, buffering, switching to different presentation such as interstitial, etc)
3 SwitchingUp player is raising its bitrate 4 SwitchingDown player is reducing the encoded bitrate
Are not these actually events and to me, they are not states?
Yeah, that's true... actually you could call all these "events" and infer state from them. (They're very similar to the HTML5 media element events.)
Please don't call them events, this will confuse the DASH folks b/c of DASH events
On Thu, Jun 13, 2024, 16:39 Werner Robitza @.***> wrote:
Yeah, that's true... actually you could call all these "events" and infer state from them. (They're very similar to the HTML5 media element events.)
— Reply to this email directly, view it on GitHub https://github.com/cta-wave/common-media-client-data/issues/120#issuecomment-2165871926, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGEYZMSN3O3PQSJS4CLHETZHGVK7AVCNFSM6AAAAABCAUPWHCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRVHA3TCOJSGY . You are receiving this because you commented.Message ID: @.***>
We should create a key to be able to track different states of playback. Candidate states might be
We might be able to repleace the SwitchingUp|Down with a single 'Switching state' and let the 'br' values describe the direction.