Thank you for the review and approval, Alex!
Best,
Hongchan
On Tue, Feb 10, 2026 at 1:49 PM Alex Russell
<[email protected]> wrote:
Hey Hongchan,
This is helpful and explains why it should be different. LGTM1,
and thanks for your patience.
Best,
Alex
On Monday, February 9, 2026 at 11:50:28 AM UTC-8 Hongchan Choi wrote:
Hello Alex,
Perhaps my explanation on different paradigms between <audio>
(HTMLMediaElement) and Web Audio was not effective:
1. Pull Model: WebAudio uses a pull model. The system's audio
callback demands a buffer of data at a precise interval. If
the application fails to provide it in time, you get an
underrun (a literal gap in the output stream). This is a
real-time performance failure.
2. Push Model: The <audio> element follows a push model
(streaming). When data is missing, the element enters a
waiting state, pauses playback, and fires a waiting event
<https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/waiting_event>.
This is considered 'buffering,' which is an expected behavior
of network-based streaming, not necessarily a failure of the
audio engine itself.
3. Existing events: We already have ways to monitor <audio>
stalls via the waiting, stalled
<https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/stalled_event>,
and playing events to signal the streaming/networking problems.
The another important distinction is the developer's ability
to respond to it:
1. For WebAudio, an underrun is typically a CPU/scheduling
issue where the audio thread cannot keep up with the graph
load/complexity. For the <audio> element, 'stalled/watiing'
status are mostly network-related.
2. This API is very useful for WebAudio apps because it
provides the signal needed for load balancing. If a developer
sees underruns increasing, they can dynamically simplify their
DSP graph, reduce voices, or bypass expensive effects to
restore real-time stability.
3. In contrast, for the <audio> element, the browser
automatically handles the 'lack of audio frames' by pausing
and entering a waiting state. There is no 'internal logic' for
the developer to adjust other than waiting for the network
data to arrive.
Hopefully this answer your question!
Best,
Hongchan
On Monday, February 9, 2026 at 11:15:57 AM UTC-8 Alex Russell
wrote:
I'm a little confused about why we think playback contexts
like <audio> don't have similar issues when streaming.
E.g., I understand that <audio> can point at a source
which isn't fully loaded, which will lead to underruns and
skipping during playback. Shouldn't we cover that case
with a uniform API?
Best,
Alex
On Wednesday, February 4, 2026 at 10:22:39 AM UTC-8
Hongchan Choi wrote:
Thanks for your response, Yoav.
> Can you elaborate a bit more on any risks, if any?
- fhernqvist@ published this detailed self-review
<https://docs.google.com/document/d/1wGv_mr7Lgg2w-6PuKDrcScoa8IvYAOW3PMTFW85O3Gw/edit?tab=t.0>
in 2024.
- There was also a discussion about the covert
channeling
<https://github.com/WICG/audio-context-playout-stats?tab=readme-ov-file#cross-site-covert-channeling>,
but the mitigation was designed/implemented after the
privacy/security team's approval.
> Can you file for signals for both Gecko and WebKit?
https://www.chromium.org/blink/launching-features/wide-review/#standards-positions
Done:
Gekco:
https://github.com/mozilla/standards-positions/issues/1351
WebKit:
https://github.com/WebKit/standards-positions/issues/610
> Any feedback from the OT?
The current partner mentioned that "The metrics
collected from are continuously used for the
experimentation, we would not be able to verify the
quality without them."
Hopefully this answers your question!
Best,
Hongchan
On Tue, Feb 3, 2026 at 8:25 PM Yoav Weiss (@Shopify)
<[email protected]> wrote:
On Monday, February 2, 2026 at 9:38:43 PM UTC+1
Hongchan Choi wrote:
Thanks for reviewing the intent, Alex.
Regarding unified behavior with
RTCAudioSourceStats, I don't believe this API
serves the same goal. WebAudio’s stats are
centered specifically around audio stream
quality, so I am unsure about achieving
unified behavior across these different APIs.
As for getting similar stats from the <audio>
element or WebRTC contexts, both
HTMLAudioElement and WebRTC's audio systems
are "push-based." By design, they should not
experience audio sample dropouts or glitches
in the same way. The WebAudio (pull-based)
playback stats are specifically designed to
catch dropouts so developers can estimate the
user's audio quality and experience.
Hopefully this answers your question!
Best,
Hongchan
On Mon, Feb 2, 2026 at 12:14 PM Alex Russell
<[email protected]> wrote:
Hey Hongchan,
This looks extremely useful!
I'm a little surprised to see that the TAG
didn't ask about alignment with other APIs
in the space, e.g.:
https://developer.mozilla.org/en-US/docs/Web/API/RTCAudioSourceStats
<https://developer.mozilla.org/en-US/docs/Web/API/RTCAudioSourceStats>
Will we get unified behaviour here? Will
it be possible to get similar stats from
an <audio> element or WebRTC contexts, e.g.?
Best,
Alex
On Friday, January 30, 2026 at 7:27:33 AM
UTC-8 Chromestatus wrote:
*Contact emails*
[email protected],
[email protected], [email protected]
*Explainer*
https://github.com/WICG/web_audio_playout
<https://github.com/WICG/web_audio_playout>
*Specification*
https://webaudio.github.io/web-audio-api/#AudioPlaybackStats
<https://webaudio.github.io/web-audio-api/#AudioPlaybackStats>
*Summary*
This feature adds an
AudioContext.playbackStats attribute
which returns an AudioPlaybackStats
object. This object provides audio
playback statistics such as average
latency, minimum/maximum latency,
underrun duration, and underrun count.
This API allows web applications to
monitor audio playout quality and
detect glitches. Note: This feature
was previously tracked as
AudioContext.playoutStats. It has been
renamed to AudioContext.playbackStats
to align with the final Web Audio API
specification. The old name is
supported as a deprecated alias for
backward compatibility.
*Blink component*
Blink>WebAudio
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EWebAudio%22>
*Web Feature ID*
web-audio
<https://webstatus.dev/features/web-audio>
*Motivation*
There is currently no way to detect
whether WebAudio playout has glitches
(gaps in the played audio, which
typically happens due to
underperformance in the audio
pipeline). There is an existing way to
measure the instantaneous playout
latency using
AudioContext.outputLatency, but no
simple way to measure
average/minimum/maximum latency over
time. With this API, we want to
propose a way to be able to measure
the delay of that audio and the
glitchiness of the audio.
*Initial public proposal*
https://github.com/WICG/proposals/issues/142
<https://github.com/WICG/proposals/issues/142>
*TAG review*
Early TAG review request:
https://github.com/w3ctag/design-reviews/issues/939
<https://github.com/w3ctag/design-reviews/issues/939>
*TAG review status*
Issues addressed
*Origin Trial Name*
Playout Statistics API for WebAudio
*Chromium Trial Name*
AudioContextPlayoutStats
*Origin Trial documentation link*
https://github.com/WICG/web_audio_playout
<https://github.com/WICG/web_audio_playout>
*WebFeature UseCounter name*
kAudioContextPlayoutStats
*Risks*
*Interoperability and Compatibility*
/No information provided/
Can you elaborate a bit more on any risks, if any?
/Gecko/:
Positive
(https://github.com/WebAudio/web-audio-api/pull/2645
<https://github.com/WebAudio/web-audio-api/pull/2645>) The
spec PR was reviewed and approved by a
Mozilla engineer.
/WebKit/: No signal
Can you file for signals for both Gecko and
WebKit?
https://www.chromium.org/blink/launching-features/wide-review/#standards-positions
/Web developers/:
Positive
(https://github.com/WICG/proposals/issues/142#issuecomment-1981012486
<https://github.com/WICG/proposals/issues/142#issuecomment-1981012486>)
/Other signals/:
*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?
None.
*Debuggability*
Can be tested by creating an
AudioContext and evaluating
context.playoutStats in the console.
*Will this feature be supported on all
six Blink platforms (Windows, Mac,
Linux, ChromeOS, Android, and Android
WebView)?*
Yes
*Is this feature fully tested by
web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
Yes
https://wpt.fyi/results/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-playoutstats.html?label=experimental&label=master&aligned
<https://wpt.fyi/results/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-playoutstats.html?label=experimental&label=master&aligned>
These will be updated if the API shape
changes.
*Flag name on about://flags*
/No information provided/
*Finch feature name*
AudioContextPlayoutStats
*Rollout plan*
Will ship enabled for all users
*Requires code in //chrome?*
False
*Tracking bug*
https://g-issues.chromium.org/issues/475838360
<https://g-issues.chromium.org/issues/475838360>
*Launch bug*
https://launch.corp.google.com/launch/4308993
<https://launch.corp.google.com/launch/4308993>
*Availability expectation*
Feature is available only in Chromium
browsers for the foreseeable future.
*Adoption expectation*
Feature is used by specific partner(s)
to provide functionality within 12
months of launch in Chrome.
*Adoption plan*
Nothing specific planned.
*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?
None.
*Estimated milestones*
Shipping on desktop146 Origin trial
desktop first131 Origin trial desktop
last136 Origin trial extension 1 end
milestone145 Origin trial extension 2
end milestone142 Origin trial
extension 3 end milestone139 DevTrial
on desktop129 Shipping on Android146
Shipping on WebView146
Any feedback from the OT?
*Anticipated spec changes*
Open questions about a feature may be
a source of future web compat or
interop issues. Please list open
issues (e.g. links to known github
issues in the project for the feature
specification) whose resolution may
introduce web compat/interop risk
(e.g., changing to naming or structure
of the API in a
non-backward-compatible way).
None.
*Link to entry on the Chrome Platform
Status*
https://chromestatus.com/feature/5172818344148992?gate=5078819495215104
<https://chromestatus.com/feature/5172818344148992?gate=5078819495215104>
*Links to previous Intent discussions*
Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACazmWW4MYVa_iGjN%3DK4O9B1DE3rt4_2Vkqnq6sKswHFjn6BzQ%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACazmWW4MYVa_iGjN%3DK4O9B1DE3rt4_2Vkqnq6sKswHFjn6BzQ%40mail.gmail.com>
Intent to Experiment:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACazmWWV6S6Ba%3Dd%3DgvjhERm1OnPyBMRJx5fbkP%3Df9zb3k%3DrNDA%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACazmWWV6S6Ba%3Dd%3DgvjhERm1OnPyBMRJx5fbkP%3Df9zb3k%3DrNDA%40mail.gmail.com>
Intent to Extend Experiment 1:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/691455eb.2b0a0220.e30ce.7e1f.GAE%40google.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/691455eb.2b0a0220.e30ce.7e1f.GAE%40google.com>
Intent to Extend Experiment 2:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/686d135c.2b0a0220.3a1521.0081.GAE%40google.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/686d135c.2b0a0220.3a1521.0081.GAE%40google.com>
Intent to Extend Experiment 3:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACazmWVkWb8DJM_aCRGOFpskBs-7h%3DO_yggKc3YBUkiieEO-UA%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACazmWVkWb8DJM_aCRGOFpskBs-7h%3DO_yggKc3YBUkiieEO-UA%40mail.gmail.com>
This intent message was generated by
Chrome Platform Status
<https://chromestatus.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 [email protected].
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGJqXNs6LMOXKSrQAq6qX3hmrC6ojvkQDHH8QJ336ZUm31gBDw%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGJqXNs6LMOXKSrQAq6qX3hmrC6ojvkQDHH8QJ336ZUm31gBDw%40mail.gmail.com?utm_medium=email&utm_source=footer>.