Intent to Implement and Ship: OpusEncoderConfig `signal` and `application` parameters

504 views
Skip to first unread message

Thomas Guilbert

unread,
Mar 26, 2024, 6:29:53 PMMar 26
to blink-dev

Contact emails

tgui...@chromium.org

Explainer

None

Specification

https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-signal

Summary

`OpusEncoderConfig.signal` and `OpusEncoderConfig.application` were recently added to the WebCodecs spec [1]. Both parameters are mapped directly to implementation specific encoder knobs. These allow web authors to provide hints as to what type of data is being encoded, and in which context the data is being used. `signal` can be one of {"auto", "music", "voice"}. It configures the encoder for the best performance in encoding the specified type of data. `application` can be one of {"voip", "audio", "lowdelay"}. It configures the encoder to favor speech intelligibility, faithful reproduction of the original input, or minimal latency. [1] : https://github.com/w3c/webcodecs/pull/777



Blink component

Blink>Media>WebCodecs

TAG review

None

TAG review status

Not applicable

Risks



Interoperability and Compatibility

None



Gecko: Positive (https://github.com/w3c/webcodecs/pull/777) Spec change approved by Mozilla representative. For an almost identical feature, Mozilla said the "request for standards position" was not warranted, as they were active spec participants: https://github.com/mozilla/standards-positions/issues/837#issuecomment-1614666364

WebKit: No signal. Review from WebKit was requested on the spec change.

Web developers: No signals

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



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?

Yes

Existing WPTs will be modified to cover this feature: https://wpt.fyi/results/webcodecs/audio-encoder-config.https.any.html



Flag name on chrome://flags

None

Finch feature name

None

Non-finch justification

Simple parameter changes.



Requires code in //chrome?

False

Estimated milestones

Shipping on desktop125
Shipping on Android125


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/5165257615212544

This intent message was generated by Chrome Platform Status and edited by hand afterwards.

Yoav Weiss (@Shopify)

unread,
Mar 27, 2024, 11:25:08 AMMar 27
to blink-dev, Thomas Guilbert
Hey! Can you flip on the various reviews (privacy, enterprise, etc) in the chromestatus entry?

Thomas Guilbert

unread,
Mar 27, 2024, 5:41:13 PMMar 27
to Yoav Weiss (@Shopify), blink-dev
I've flipped all the reviews and will update this thread when they are all completed.

Thanks!

Yoav Weiss (@Shopify)

unread,
Mar 28, 2024, 3:43:58 AMMar 28
to Thomas Guilbert, blink-dev
Thanks!

On Wed, Mar 27, 2024 at 10:41 PM Thomas Guilbert <tgui...@chromium.org> wrote:
I've flipped all the reviews and will update this thread when they are all completed.

Thanks!

On Wed, Mar 27, 2024 at 8:25 AM Yoav Weiss (@Shopify) <yoav...@chromium.org> wrote:
Hey! Can you flip on the various reviews (privacy, enterprise, etc) in the chromestatus entry?

On Tuesday, March 26, 2024 at 11:29:53 PM UTC+1 Thomas Guilbert wrote:

Contact emails

tgui...@chromium.org

Explainer

None

Specification

https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-signal

Summary

`OpusEncoderConfig.signal` and `OpusEncoderConfig.application` were recently added to the WebCodecs spec [1]. Both parameters are mapped directly to implementation specific encoder knobs. These allow web authors to provide hints as to what type of data is being encoded, and in which context the data is being used. `signal` can be one of {"auto", "music", "voice"}. It configures the encoder for the best performance in encoding the specified type of data. `application` can be one of {"voip", "audio", "lowdelay"}. It configures the encoder to favor speech intelligibility, faithful reproduction of the original input, or minimal latency. [1] : https://github.com/w3c/webcodecs/pull/777



Blink component

Blink>Media>WebCodecs

TAG review

None


Why not?
 



TAG review status

Not applicable

Risks



Interoperability and Compatibility

None



Gecko: Positive (https://github.com/w3c/webcodecs/pull/777) Spec change approved by Mozilla representative. For an almost identical feature, Mozilla said the "request for standards position" was not warranted, as they were active spec participants: https://github.com/mozilla/standards-positions/issues/837#issuecomment-1614666364

WebKit: No signal. Review from WebKit was requested on the spec change.


Can you ask for official positions? https://bit.ly/blink-signals

Daniel Bratell

unread,
Apr 3, 2024, 12:10:30 PMApr 3
to Yoav Weiss (@Shopify), Thomas Guilbert, blink-dev

This may be a bit of a tangent, but we had a discussion about AV1-only encoder configuration a while back[1][2]. In the end they elected to have a top level dictionary where some encoding configuration ended up. I wonder if there is anything to learn from that process and their choices or if you consider that orthogonal to this.

/Daniel

[1] AV1: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADxkKiLH6ViLccGxHZzbCG_ChtSxiG59XoeYMPRqeW1Wk410rg%40mail.gmail.com

[2] ContentHint: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY9K9_YmJRFn%3DQBKb0GsETsSFex0DPprMRRpWUWgcvAtbA%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/CAOmohSKLbhC60_zVAt46RVhhSGxMfRcnSkdqfcevytScrXuTmg%40mail.gmail.com.

Thomas Guilbert

unread,
Apr 3, 2024, 2:50:38 PMApr 3
to Daniel Bratell, Yoav Weiss (@Shopify), blink-dev
I agree that this would have been a viable solution, and this was considered and discussed with the spec editors too [1]. These Opus flags were originally supposed to be contentHint, but ultimately it would have only ever been useful for Opus, so it was decided to keep it in the Opus config.

[1] : https://github.com/w3c/webcodecs/pull/759#issuecomment-1928349508

Thomas Guilbert

unread,
Apr 4, 2024, 2:30:19 PMApr 4
to Daniel Bratell, Yoav Weiss (@Shopify), blink-dev
The last launch gate approval came in today.

Thanks!

Mike Taylor

unread,
Apr 8, 2024, 11:35:35 AMApr 8
to Thomas Guilbert, Daniel Bratell, Yoav Weiss (@Shopify), blink-dev

Daniel Bratell

unread,
Apr 10, 2024, 11:51:54 AMApr 10
to Mike Taylor, Thomas Guilbert, Yoav Weiss (@Shopify), blink-dev

LGTM2

/Daniel

Alex Russell

unread,
Apr 10, 2024, 11:59:50 AMApr 10
to blink-dev, Daniel Bratell, Yoav Weiss, blink-dev, Mike Taylor, tgui...@google.com
LGTM3

LGTM2

/Daniel

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
--
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.
Reply all
Reply to author
Forward
0 new messages