Contact emails
[email protected], [email protected]

Specification
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-renderquantumsize


Design docs
No information provided
https://github.com/WebAudio/web-audio-api/blob/main/explainer/user-selectable-render-size.md


Summary
Adds an optional renderSizeHint to AudioContext and OfflineAudioContext. This 
allows developers to customize the WebAudio render quantum size by passing a 
specific integer, use the default of 128 frames by omitting the hint or passing 
"default", or request that the User-Agent select an optimal size by specifying 
"hardware".


Blink component
Blink>WebAudio


Web Feature ID
web-audio


Motivation
It is difficult and complex to write a web app when the audio processing block 
size does not match with the WebAudio render quantum size (128 sample-frames). 
Removing this restriction and making it customizable on AudioContext would 
enable easier development and more efficient audio processing.


Initial public proposal
No information provided


TAG review
No information provided


TAG review status
Issues addressed


Origin Trial Name
WebAudio Configurable Render Quantum


Goals for experimentation
Validate performance improvement gained by matching render quantum size to 
software buffer sizes when using a numeric renderSizeHint. Verify actual audio 
processing output is unchanged when using a numeric renderSizeHint. We have a 
primary partner for this Origin Trial, and we would like to see if the 
performance and ergonomics of the API satisfy this partner's need. This partner 
is not going to use the "hardware" hint, and we think that it is still valuable 
to conduct an Origin Trial to gather feedback on the rest of the API.


Chromium Trial Name
WebAudioConfigurableRenderQuantum


Origin Trial documentation link
https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-rendersizehint


WebFeature UseCounter name
kWebAudioRenderSizeHint


Risks




Interoperability and Compatibility
Low. The feature is already specified.

Gecko: No signal (https://github.com/mozilla/standards-positions/issues/1407) A 
Firefox developer wrote the specification change 
(https://github.com/WebAudio/web-audio-api/pull/2469).

WebKit: No signal (https://github.com/WebKit/standards-positions/issues/662)

Web developers: Positive 
(https://github.com/WebAudio/web-audio-api/issues/1503) Developers have 
requested a way to increase the render quantum size, and are looking forward to 
the feature being implemented.

Other signals:


Ergonomics
An identified use case of this feature is to match buffer sizes used by other 
Chromium audio APIs, in order to improve performance.


Activation
There is an ongoing privacy discussion about how to mitigate fingerprinting 
concerns around the "hardware" hint 
(https://github.com/WebAudio/web-audio-api/issues/2659). The "hardware" hint as 
implemented in Chromium currently will always return the default 128 render 
quantum size, which exposes no user information. This is allowed by the spec, 
which says "It is a hint that might not be honored."


Security
There is concern that a very low render quantum size could allow an 
AudioWorklet to create a high-resolution timer, but very high sample rates are 
already allowed and have a similar risk so the marginal change in security is 
probably low.


WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it 
has potentially high risk for Android WebView-based applications?
Low. The change is to ship a new API.



Debuggability
It may be worth exposing the render quantum size value in the DevTools WebAudio 
pane, similar to sample rate.


Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, 
ChromeOS, Android, and Android WebView)?
Yes
All supported platforms have mechanisms to implement this feature.


Is this feature fully tested by web-platform-tests?
Yes
https://wpt.fyi/results/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-rendersizehint.html
 
https://wpt.fyi/results/webaudio/the-audio-api/the-offlineaudiocontext-interface/offlineaudiocontext-rendersizehint.html


Flag name on about://flags
N/A (launch with --enable-features=WebAudioConfigurableRenderQuantum)


Finch feature name
WebAudioConfigurableRenderQuantum


Rollout plan
Will ship enabled for all users


Requires code in //chrome?
False


Tracking bug
https://crbug.com/40637820


Launch bug
https://launch.corp.google.com/launch/4416924


Measurement
UseCounters: WebAudioRenderSizeHint, WebAudioRenderQuantumSize


Availability expectation
We expect that Firefox will implement the feature independently at some point.


Adoption expectation
We expect that specific partners will use this functionality immediately upon 
its launch in Chrome.


Adoption plan
We are in communication with partners, and also in communication with Mozilla 
via the Audio Working Group.


Non-OSS dependencies

Does the feature depend on any code or APIs outside the Chromium open source 
repository and its open-source dependencies to function?
No.


Estimated milestones


Shipping on desktop 153

Origin trial desktop first 145

Origin trial desktop last 151

Origin trial extension 1 end milestone 151

Origin trial extension 2 end milestone 153

Origin trial extension 3 end milestone 152

DevTrial on desktop 145

Shipping on Android 153

Origin trial Android first 145

Origin trial Android last 151

Shipping on WebView 153

Origin trial WebView first 145

Origin trial WebView last 151




Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop 
issues. Please list open issues (eg links to known github issues in the project 
for the feature specification) whose resolution may introduce web 
compat/interop risk (eg, changing to naming or structure of the API in a 
non-backward-compatible way).
https://github.com/WebAudio/web-audio-api/issues/2663 
https://github.com/WebAudio/web-audio-api/issues/2664


Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5078190552907776?gate=5074255557165056


Links to previous Intent discussions
Intent to Prototype: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/688d3254.2b0a0220.361edb.0299.GAE%40google.com
Intent to Experiment: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BuAeqS%3DygCo2wPaf0Cfo%2B%2BdEoHGWx%2Byc4%2BfO84U%2B_5hQqOvYg%40mail.gmail.com
Intent to Extend Experiment 1: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69dd7ab5.050a0220.c8e20.0171.GAE%40google.com
Intent to Extend Experiment 2: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a5fe800.77f2aaf9.1be956.027f.GAE%40google.com
Intent to Extend Experiment 3: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a3319c8.3af95f39.17d45c.005e.GAE%40google.com



This intent message was generated by Chrome Platform Status.

-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a62356b.3e7ba578.2a5c5b.01f9.GAE%40google.com.

Reply via email to