Interoperability and compatibility risk
The property "playoutDelayHint" is added to RTCRtpReceiver. If it is not supported by the browser then the new field "playoutDelayHint" will be attached to RTCRtpReceiver object. The risk to break pre-existing javascript code is low.
Firefox: No public signals, however we have discussed it with them earlier (start of the discussion). Feature itself was deemed as potentially useful but not crucial that is why discussion was put on hold until WebRTC 1.0 spec is fully ready.
Edge: No public signals
Safari:No public signals
Web Developers:No signals
Is this feature tested?
Yes; it was tested during public origin trial run: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/Tgm4qiNepJc/NUEciMYzBwAJ
Tracking bug
Link to entry on the Chrome Platform Status dashboard
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/32984c04-9685-407b-859f-3c0f195cdec2%40chromium.org.
I think this is fairly low risk because of the style of the API, where latency varies over time already with network/device conditions, and the effect is on the user experience and not exposed to scripts. That being said, the more detail there is in the spec on what the effect at the network layer should be, the more consistent user experience will be, and the less reason anyone will have to use different hints for different browsers.That is to say this looks good, but two questions:Have you solicited feedback from Safari? +Youenn Fablet is probably the right person.
Do you intend to move https://henbos.github.io/webrtc-timing into the WICG? A mundane but real benefit of having it in the WICG (or a working group) is that it's easier for spec scraping tooling (like Reffy) to discover the spec's existence.
P.S. I've manually added this to https://bit.ly/blinkintents, it was missed because of a typo in the subject.
On Fri, Oct 4, 2019 at 11:37 AM 'Ruslan Burakov' via blink-dev <blin...@chromium.org> wrote:
kud...@webrtc.org, hb...@chromium.org, min...@chromium.org, jak...@google.com https://github.com/henbos/webrtc-timing/pull/4--https://henbos.github.io/webrtc-timing/#dom-rtcrtpreceiver-playoutdelayhintNative WebRTC provides methods to increase latency on the remote sources (audio or video). Increased latency opens rooms for additional optimizations and better audio, video quality. We are adding ability to control it from javascript by exposing new property "playoutDelayHint" on RTCRtpReceiver object which adds delay to the audio/video source playout in seconds. By default it is null which means no user preference (up to the browser to decide - current default behavior in browsers supporting WebRTC). Note: that in the origin trial experiment the property was called differently - "jitterBufferDelayHint".Interoperability and compatibility risk
The property "playoutDelayHint" is added to RTCRtpReceiver. If it is not supported by the browser then the new field "playoutDelayHint" will be attached to RTCRtpReceiver object. The risk to break pre-existing javascript code is low.
Firefox: No public signals, however we have discussed it with them earlier (start of the discussion). Feature itself was deemed as potentially useful but not crucial that is why discussion was put on hold until WebRTC 1.0 spec is fully ready.
Edge: No public signals
Safari:No public signals
Web Developers:No signals
Is this feature tested?
Yes; it was tested during public origin trial run: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/Tgm4qiNepJc/NUEciMYzBwAJ
Tracking bug
Link to entry on the Chrome Platform Status dashboard
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
I do not think this is high in the priority list of WebRTC features from a WebKit point of view.The use case seems fine. The fact that the API is at RTCRtpReceiver seems fine as well.There is an inherent weakness in defining it as a hint, it might trigger different behaviours according browsers and/or devices.
Native WebRTC provides methods to increase latency on the remote sources (audio or video). Increased latency opens rooms for additional optimizations and better audio, video quality. We are adding ability to control it from javascript by exposing new property "playoutDelayHint" on RTCRtpReceiver object which adds delay to the audio/video source playout in seconds. By default it is null which means no user preference (up to the browser to decide - current default behavior in browsers supporting WebRTC). Note: that in the origin trial experiment the property was called differently - "jitterBufferDelayHint".
Interoperability and compatibility risk
The property "playoutDelayHint" is added to RTCRtpReceiver. If it is not supported by the browser then the new field "playoutDelayHint" will be attached to RTCRtpReceiver object. The risk to break pre-existing javascript code is low.
Firefox: No public signals, however we have discussed it with them earlier (start of the discussion). Feature itself was deemed as potentially useful but not crucial that is why discussion was put on hold until WebRTC 1.0 spec is fully ready.
Edge: No public signals
Safari:No public signals
Web Developers:No signals
Is this feature tested?
Yes; it was tested during public origin trial run: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/Tgm4qiNepJc/NUEciMYzBwAJ
Tracking bug
Link to entry on the Chrome Platform Status dashboard
--
To unsubscribe from this group and stop receiving emails from it, send an email to blin...@chromium.org.
This is a minor addition to webrtc-pc (https://w3c.github.io/webrtc-pc/), which has gone through TAG review.I don't believe we should request a new TAG review every time a minor addition like an attribute is added to an interface in WebRTC?
As for explainer, while a document wasn't provided, I think the contents of this intent thread covers explaining it.
The reason why this was added in a separate repository than webrtc-pc is because that spec is close to Proposed Recommendation and new features are not added there.How to handle minor additions is discussed here: https://github.com/w3c/webrtc-pc/issues/2323
I intend to follow up with foolip@ on this issue.> Why are pushing for this then? What makes this important? Do we have partners that would like to adopt this? (If so, I'd state their support as a web developer signal)We have strong interest from WebRTC products. This has been discussed internally. We want to push it to improve quality for our users.We should make this "Web developer signal: Positive".
On Friday, October 4, 2019 at 11:37:34 AM UTC+2, Ruslan Burakov wrote:kud...@webrtc.org, hb...@chromium.org, min...@chromium.org, jak...@google.com https://github.com/henbos/webrtc-timing/pull/4https://henbos.github.io/webrtc-timing/#dom-rtcrtpreceiver-playoutdelayhintNative WebRTC provides methods to increase latency on the remote sources (audio or video). Increased latency opens rooms for additional optimizations and better audio, video quality. We are adding ability to control it from javascript by exposing new property "playoutDelayHint" on RTCRtpReceiver object which adds delay to the audio/video source playout in seconds. By default it is null which means no user preference (up to the browser to decide - current default behavior in browsers supporting WebRTC). Note: that in the origin trial experiment the property was called differently - "jitterBufferDelayHint".Interoperability and compatibility risk
The property "playoutDelayHint" is added to RTCRtpReceiver. If it is not supported by the browser then the new field "playoutDelayHint" will be attached to RTCRtpReceiver object. The risk to break pre-existing javascript code is low.
Firefox: No public signals, however we have discussed it with them earlier (start of the discussion). Feature itself was deemed as potentially useful but not crucial that is why discussion was put on hold until WebRTC 1.0 spec is fully ready.
Edge: No public signals
Safari:No public signals
Web Developers:No signals
Is this feature tested?
Yes; it was tested during public origin trial run: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/Tgm4qiNepJc/NUEciMYzBwAJ
Tracking bug
Link to entry on the Chrome Platform Status dashboard
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/38361776-bf47-4d7c-8fe0-c7ef142d7a07%40chromium.org.
This is a minor addition to webrtc-pc (https://w3c.github.io/webrtc-pc/), which has gone through TAG review.I don't believe we should request a new TAG review every time a minor addition like an attribute is added to an interface in WebRTC?As for explainer, while a document wasn't provided, I think the contents of this intent thread covers explaining it.The reason why this was added in a separate repository than webrtc-pc is because that spec is close to Proposed Recommendation and new features are not added there.How to handle minor additions is discussed here: https://github.com/w3c/webrtc-pc/issues/2323I intend to follow up with foolip@ on this issue.> Why are pushing for this then? What makes this important? Do we have partners that would like to adopt this? (If so, I'd state their support as a web developer signal)We have strong interest from WebRTC products. This has been discussed internally. We want to push it to improve quality for our users.
Sorry again, full results breakdowns are Google only.
There has been some confusion. We have successfully utilized this API in the two different experiments which correspond to two distinct use cases.
First is a min delay experiment. There we were adding small and unnoticeable amount of delay for both audio and video in order to improve audio quality. By default this value in WebRTC is 0 or "play audio/video as fast as possible". It did show improvements in audio:
go/hotlaneaudiojitterbuffermindelay
This API is needed as not every application on the web would benefit from additional delay. We can't bake it as a new default because it would potentially hurt user experience in highly interactive applications, for e.g. Google Stadia.
The other experiment/use case is when we increase delay by high value for muted users. They don't notice additional delay as they don't have means to interact quickly with the call because they are muted. However, as we buffer more audio/video in case of network issues, the audio experience improves. But this experiment is more complex and it is still ongoing. Initial results can be seen here:
go/passive-listener-initial-breakdown
How web compatible is it to outsource control of our jitter buffer length? As a non-dominant vendor, we sometimes see web sites not testing their site with every browser or platform, so giving this tuning control to someone who may never test its effect on our browser, isn't terribly appealing. When things stutter people blame the browser.
I go on to say: I'm not immune to its benefits, just making a point that it might take a while to work out the details, which might be better done in an extension spec?
My second concern is we don't appear to have worked out those details. I've objected to "hints" before. They lack normative steps one can write tests from. In its current form this is hardly saying more than: we're implementing this surface somehow. To be fair, I'm sympathetic to the difficulty of writing such tests (degradationPreference had the same problem, and a similar fate), but that doesn't outweigh my concerns.
Our response for how to best interpret this (let's be honest: Chrome-tuned) value from JavaScript, may sadly be to ignore it, or risk stutter.
Question for the Chrome team: how are you planning to remain compatible with yourself after a couple of years from e.g. games tuning your jitter buffer to the min for max realtime response? I worry we're painting ourselves in a corner.
If these are just hints, have you considered more declarative coarse-grained controls like e.g.: latency = "participant" | "audience" | "game" | "default" ? That might be a more web compatible approach.
My main concern with this proposal remains: It's essentially an API for JS to make browsers stutter.
How web compatible is it to outsource control of our jitter buffer length? As a non-dominant vendor, we sometimes see web sites not testing their site with every browser or platform, so giving this tuning control to someone who may never test its effect on our browser, isn't terribly appealing. When things stutter people blame the browser.
I go on to say: I'm not immune to its benefits, just making a point that it might take a while to work out the details, which might be better done in an extension spec?
My second concern is we don't appear to have worked out those details. I've objected to "hints" before. They lack normative steps one can write tests from. In its current form this is hardly saying more than: we're implementing this surface somehow. To be fair, I'm sympathetic to the difficulty of writing such tests (degradationPreference had the same problem, and a similar fate), but that doesn't outweigh my concerns.
Our response for how to best interpret this (let's be honest: Chrome-tuned) value from JavaScript, may sadly be to ignore it, or risk stutter.
Question for the Chrome team: how are you planning to remain compatible with yourself after a couple of years from e.g. games tuning your jitter buffer to the min for max realtime response? I worry we're painting ourselves in a corner.
If these are just hints, have you considered more declarative coarse-grained controls like e.g.: latency = "participant" | "audience" | "game" | "default" ? That might be a more web compatible approach.
Hi, I am developer from Yandex. We would be very interested in this API but I unfortunately I can't share our usecases due to NDA
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACj%3DBEhePGdQMA88hbYjAcEGH1hfEX8HCHKtNnvaM5DZF7Fixg%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACj%3DBEhePGdQMA88hbYjAcEGH1hfEX8HCHKtNnvaM5DZF7Fixg%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6664e711-35cd-43bf-9a9f-0233101db8d5%40chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACj%3DBEhePGdQMA88hbYjAcEGH1hfEX8HCHKtNnvaM5DZF7Fixg%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6664e711-35cd-43bf-9a9f-0233101db8d5%40chromium.org.
ah, so the playout delay hint (which remotely controls this property) turned out to be not the right solution? Maybe you can update the webrtc.org page?