isConfigSupported: definition of "invalid"
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
issue で引用されている仕様文から始め、https://webrtc.internaut.com/wc/isup2/ のライブ例を Chromium と Safari で再現します。VideoEncoder.isConfigSupported と VideoDecoder.isConfigSupported がサポートされていない scalabilityMode 値をどのように扱うかを比較します。仕様と実装の不一致について解決方針が決定されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
The behavior of isConfigSupported API for unsupported configurations is different on Chromium and Safari.
The specification says (for Audio and Video encoders and decoders):
"If config is not a valid.... return a promise rejected with TypeError."
However, the definition of "invalid" appears to differ between implementations.
On Chromium, when an unsupported scalabilityMode value is provided, the promise resolves with supported set to "false", but on Safari, the promise is rejected.
Live example: https://webrtc.internaut.com/wc/isup2/
A snippet:
async function modeProperties(mode, enc, config) {
config.scalabilityMode = mode;
if (enc == 'true') {
// check whether the encoder supports the configuration
try {
const encoderSupport = await VideoEncoder.isConfigSupported(config);
if (encoderSupport.supported) {
addToEventLog('For encode ' + preferredCodec + ' ' + mode + ' is supported');
} else {
addToEventLog('For encode ' + preferredCodec + ' ' + mode + ' is NOT supported');
//addToEventLog('Config details:\n' + JSON.stringify(encoderSupport.config));
}
} catch (e) {
// Safari will end up here for unsupported scalabilityMode values, Chromium will not
addToEventLog('For encode ' + preferredCodec + ' ' + mode + ' is considered INVALID');
}
} else {
// check whether the decoder supports the configuration
try {
const decoderSupport = await VideoDecoder.isConfigSupported(config);
if (decoderSupport.supported) {
addToEventLog('For decode ' + preferredCodec + ' ' + mode + ' is supported');
} else {
addToEventLog('For decode ' + preferredCodec + ' ' + mode + ' is NOT supported');
}
} catch (e) {
// Safari will end up here for unsupported scalabilityMode values, Chromium will not
addToEventLog('For decode ' + preferredCodec + ' ' + mode + ' is considered INVALID');
}
}
}
- 主要言語
- HTML
- スター
- 1.3k
- フォーク
- 192
- 平均マージ
- 3時間 36分
- マージ済み PR(30日)
- 7
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
w3c/webcodecs のほかの issue
-
privacy-needs-resolution
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
メンテナーはふだん 1 日以内に返信
-
editorial
難易度 1/5 1時間未満 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
メンテナーはふだん 1 日以内に返信
-
TPAC2026
難易度 5/5 1週間以上 初心者へのやさしさ 8/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
microsoft/playwright#43327 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
microsoft/TypeScript#64758 ·
メンテナーはふだん 1 日以内に返信
-
Liveness marks block-included attesters live in the block's epoch instead of the attestation's epochオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 1 日以内に返信
-
p:3-mid pydanty:bug pydanty:is-working
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
pydantic/pydantic-ai#10153 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
status: needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
a2ui-project/a2ui#3158 ·
メンテナーはふだん 2 日以内に返信