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 이슈를 사용하는 것이 권장됩니다. 또는 미디어 워킹 그룹의 메일링 리스트인 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 유형

[[type]]의 값은 FLAC을 포함하는 EncodedAudioChunk에 대해 항상 "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]

이 명세서의 예제는 “예를 들어”라는 표현으로 시작하거나 규범적 텍스트와 구분되도록 class="example"을 사용하여 다음과 같이 표시합니다.

이것은 정보 제공용 예제의 한 예입니다.

정보 제공용 참고 사항은 “참고”라는 단어로 시작하며 규범적 텍스트와 구분되도록 class="note"를 사용하여 다음과 같이 표시합니다.

참고: 이것은 정보 제공용 참고 사항입니다.

색인

이 명세서에서 정의한 용어

참조를 통해 정의된 용어

참고 문헌

규범적 참고 문헌

[RFC2119]
S. Bradner. RFC에서 요구사항 수준을 나타내기 위한 핵심 단어. 1997년 3월. 현행 모범 사례. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBCODECS]
Paul Adenot; Eugene Zemtsov. WebCodecs. 2026년 10월 7일. 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;
};