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
>>>>>
>>>>> 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
>>>>>
>>>>> *Specification*
>>>>> 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
>>>>>
>>>>> *TAG review*
>>>>> Early TAG review request: 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
>>>>>
>>>>> *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) 
>>>>> 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)
>>>>>
>>>>> *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 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
>>>>>
>>>>> *Launch bug*
>>>>> 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
>>>>>
>>>>> *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
>>>>> Intent to Experiment: 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
>>>>> Intent to Extend Experiment 2: 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
>>>>>
>>>>>
>>>>> 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.

Reply via email to