FLAC の WebCodecs 登録

W3C グループノート草案,

この文書の詳細情報
この版:
https://www.w3.org/TR/2026/DNOTE-webcodecs-flac-codec-registration-20261016/
最新の公開版:
https://www.w3.org/TR/webcodecs-flac-codec-registration/
編集者草案:
https://w3c.github.io/webcodecs/flac_codec_registration.html
過去の版:
履歴:
https://www.w3.org/standards/history/webcodecs-flac-codec-registration/
フィードバック:
GitHub
編集者:
Paul Adenot (Mozilla)
Eugene Zemtsov (Google LLC)
元編集者:
Bernard Aboba (Microsoft Corporation)
Chris Cunningham (Google LLC)
参加:
Git リポジトリ。
問題を報告する。
版の履歴:
https://github.com/w3c/webcodecs/commits

概要

本登録は、[webcodecs-codec-registry] に登録される。 FLAC について、(1) 完全修飾された コーデック文字列、 (2) コーデック固有の EncodedAudioChunk [[internal data]] バイト列、(3) AudioDecoderConfig.description バイト列、 (4) EncodedAudioChunk [[type]] の値、 および (5) AudioEncoderConfig に対するコーデック固有の拡張について説明する。

本登録には、 コーデック形式が知的財産権の主張の対象となっているかどうかに関する情報を含める意図はない。実装者および 作成者は、特定のコーデック形式を 実装または使用する場合、この問題について適切な法律専門家に相談することが推奨される。 WebCodecs の実装者は FLAC コーデックをサポートする必要はない。

本登録は非規範的である。

この文書の状態

この節では、公開時点におけるこの文書の状態を説明する。現在の W3C 刊行物の一覧と、この 技術報告書の最新版は、W3C 標準および草案の索引で確認できる。

本仕様へのフィードバックやコメントを歓迎する。 本仕様に関する議論には GitHub Issues の利用が推奨される。 また、メディアワーキンググループのメーリングリストである public-media-wg@w3.org (アーカイブ) にコメントを送信することもできる。 この草案では、ワーキンググループで今後議論する必要がある未解決の問題の一部を示している。 これらの問題の妥当性を含め、その結論についてはまだ何も決定されていない。

この文書は、メディアワーキンググループによって、 ノート トラックを通じてグループノート草案として公開された。

グループノート草案は、 W3C およびその会員によって承認されたものではない。

この文書は草案であり、いつでも更新、置換、または他の文書によって廃止される可能性がある。 この文書を進行中の作業以外のものとして引用することは適切ではない。

W3C 特許ポリシーは、この文書に対していかなるライセンス 要件や確約も課さない。

この文書には、2025年8月18日付 W3C プロセス文書が適用される。

1. 完全修飾されたコーデック文字列

コーデック文字列は "flac" である。

2. EncodedAudioChunk のデータ

EncodedAudioChunk [[internal data]] の内容は、 [FLAC] に記載されている "FRAME" であることが想定される。

3. AudioDecoderConfig の説明

description は必須であり、次の内容でなければならない。

sampleRate および numberOfChannels メンバーは、デコーダーが description から取得した値によって上書きされる。

注記: これは、FLAC ビットストリームの冒頭部分に相当し、音声 フレームより前に位置する。

4. EncodedAudioChunk の型

FLAC を含む EncodedAudioChunk の [[type]] は常に "key" である。

注記: 初期化が成功した後は、どの FLAC パケットもいつでもエラーなくデコードできるが、 期待される音声出力が得られるとは限らない。

5. AudioEncoderConfig の拡張

partial dictionary AudioEncoderConfig {
  FlacEncoderConfig flac;
};


flac、型は FlacEncoderConfig
FLAC コーデックに固有の設定オプションを含む。

5.1. FlacEncoderConfig

dictionary FlacEncoderConfig {
  [EnforceRange] unsigned long blockSize = 0;
  [EnforceRange] unsigned long compressLevel = 5;
};


FlacEncoderConfig が有効かどうかを確認するには、次の手順を実行する。

  1. blockSize が有効なブロックサイズではない場合、 その有効性は [FLAC] の第5.1節で説明されているが、false を返す。

  2. compressLevel が指定されており、その値が 0 (最速、圧縮率が最も低い) から 8 (最も遅く、圧縮率が最も高い) までの範囲 (両端を含む) にない場合、false を返す。

  3. true を返す。

blockSize、型は unsigned long、既定値は 0
出力される EncodedAudioChunk の各フレームで使用するサンプル数を設定する。

注記: エンコーダーに既定で ブロックサイズを推定させるには 0 を使用する。

compressLevel、 型は unsigned long、既定値は 5
エンコード時に使用する圧縮レベルを設定する。

6. プライバシーに関する考慮事項

[WEBCODECS] の プライバシー に関する考慮事項の節を参照すること。

7. セキュリティに関する考慮事項

[WEBCODECS] の セキュリティ に関する考慮事項の節を参照すること。

適合性

文書の 表記規則

適合要件は、 説明的な記述と RFC 2119 の用語を組み合わせて表される。 キーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、 「MAY」および「OPTIONAL」は、 この文書の規範的な部分において、 RFC 2119 に記載されている意味で解釈しなければならない。 ただし、可読性のため、 本仕様ではこれらの語がすべて大文字で記載されるわけではない。

本仕様のすべての本文は規範的である。 ただし、明示的に非規範的と記された節、例、注記を除く。[RFC2119]

本仕様の例は「for example」という語で導入されるか、 規範的な本文とは区別して、 class="example" が指定され、 次のように表示される。

これは参考情報としての例の一例である。

参考情報としての注記は「Note」という語で始まり、 規範的な本文とは区別して、 class="note" が指定され、 次のように表示される。

注記、これは参考情報としての注記である。

索引

本仕様で定義される 用語

参照によって定義される 用語

参考文献

規範的な参考文献

[RFC2119]
S. Bradner. RFC で 要求レベルを示すために使用するキーワード. 1997年3月. 現行の最良の慣行. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBCODECS]
Paul Adenot; Eugene Zemtsov. WebCodecs. 7 2026年10月. WD. URL: https://www.w3.org/TR/webcodecs/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 標準. 現行 標準. URL: https://webidl.spec.whatwg.org/

非規範的な参考文献

[FLAC]
自由な可逆音声 コーデック. URL: https://datatracker.ietf.org/doc/draft-ietf-cellar-flac
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Eugene Zemtsov. WebCodecs コーデック レジストリ. 2026年9月24日. DRY. URL: https://www.w3.org/TR/webcodecs-codec-registry/

IDL 索引

partial dictionary AudioEncoderConfig {
  FlacEncoderConfig flac;
};


dictionary FlacEncoderConfig {
  [EnforceRange] unsigned long blockSize = 0;
  [EnforceRange] unsigned long compressLevel = 5;
};