HEVC (H.265) WebCodecs 등록

W3C 그룹 초안 노트,

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2025/DNOTE-webcodecs-hevc-codec-registration-20250514/
최신 공개 버전:
https://www.w3.org/TR/webcodecs-hevc-codec-registration/
편집자 초안:
https://w3c.github.io/webcodecs/hevc_codec_registration.html
이전 버전:
이력:
https://www.w3.org/standards/history/webcodecs-hevc-codec-registration/
피드백:
GitHub
편집자:
Paul Adenot (Mozilla)
Eugene Zemtsov (Google LLC)
전 편집자:
Bernard Aboba (Microsoft Corporation)
Chris Cunningham (Google Inc.)
참여:
Git 저장소.
이슈 제출.
버전 이력:
https://github.com/w3c/webcodecs/commits

초록

이 등록은 [webcodecs-codec-registry]에 입력됩니다. 이는 HEVC (H.265)에 대해 (1) 완전히 한정된 코덱 문자열, (2) 코덱별 EncodedVideoChunk [[internal data]] 바이트, (3) VideoDecoderConfig.description 바이트, (4) EncodedVideoChunk [[type]]의 값, 그리고 (5) VideoEncoderConfig에 대한 코덱별 확장을 설명합니다

이 등록은 코덱 형식이 지식재산권 주장에 의해 제한되는지 여부에 관한 어떠한 정보도 포함하려는 것이 아닙니다. 구현자와 저자는 특정 코덱 형식을 구현하거나 사용하려는 경우 이 문제에 관해 적절한 법률 자문을 구하는 것이 권고됩니다. WebCodecs 구현자는 HEVC / H.265 코덱을 지원할 필요가 없습니다.

이 등록은 비규범적입니다.

이 문서의 상태

이 섹션은 이 문서가 공개된 시점의 상태를 설명합니다. 현재 W3C 공개 문서 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인 https://www.w3.org/TR/에서 찾을 수 있습니다.

이 명세에 대한 피드백과 의견을 환영합니다. 이 명세에 관한 논의에는 GitHub Issues를 사용하는 것이 좋습니다. 또는 Media Working Group의 메일링 리스트인 public-media-wg@w3.org (아카이브)로 의견을 보낼 수 있습니다. 이 초안은 아직 워킹 그룹에서 논의해야 할 일부 보류 중인 이슈를 강조 표시합니다. 이러한 이슈가 유효한지 여부를 포함하여 그 결과에 관해서는 아직 어떠한 결정도 내려지지 않았습니다.

이 문서는 Media Working GroupNote track을 사용하여 Group Draft Note로 공개했습니다.

Group Draft Note는 W3C나 그 회원의 승인을 받은 것이 아닙니다.

이 문서는 초안 문서이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 부적절합니다.

W3C 특허 정책은 이 문서에 대해 어떠한 라이선스 요구사항이나 약속도 부과하지 않습니다.

이 문서는 2023년 11월 03일 W3C Process Document의 지배를 받습니다.

1. 완전히 한정된 코덱 문자열

코덱 문자열은 접두사 "hev1." 또는 "hvc1."로 시작하며, [iso14496-15]의 섹션 E.3에 설명된 점으로 구분된 네 개의 필드로 된 접미사를 가집니다.

2. EncodedVideoChunk 데이터

EncodedVideoChunk [[internal data]][ITU-T-REC-H.265] 섹션 7.4.2.4에 정의된 액세스 유닛일 것으로 기대됩니다.

참고: 액세스 유닛은 정확히 하나의 기본 계층 코딩 픽처를 포함합니다.

비트스트림이 hevc 형식인 경우, [[internal data]][iso14496-15] 섹션 8.3.2에 정의된 정규 형식인 것으로 간주됩니다.

비트스트림이 annexb 형식인 경우, [[internal data]][ITU-T-REC-H.265] 부속서 B에 정의된 Annex B 형식인 것으로 간주됩니다.

참고: [[internal data]]는 본질적으로 바이트 정렬되어 있으므로, 구현은 바이트 정렬을 복구할 필요가 없습니다.

3. VideoDecoderConfig 설명

description이 존재하는 경우, 이는 [iso14496-15], 섹션 8.3.3.1에 정의된 HEVCDecoderConfigurationRecord로 간주되며, 비트스트림은 hevc 형식인 것으로 간주됩니다.

참고: 이 형식은 일반적으로 .MP4 파일에서 사용되며, 플레이어는 보통 미디어 데이터에 임의 접근할 수 있습니다.

description이 존재하지 않는 경우, 비트스트림은 annexb 형식인 것으로 간주됩니다.

참고: "annexb" 형식은 [ITU-T-REC-H.265], 부속서 B에서 더 자세히 설명됩니다. 이 형식은 라이브 스트리밍 애플리케이션에서 흔히 사용되며, VPS, SPS 및 PPS 데이터를 주기적으로 포함하면 사용자가 스트림의 중간부터 쉽게 시작할 수 있습니다.

4. EncodedVideoChunk 타입

EncodedVideoChunk[[type]]key이고, 비트스트림이 hevc 형식이면, 해당 EncodedVideoChunk는 순간 디코딩 갱신(IDR), 클린 랜덤 액세스(CRA) 또는 브로큰 링크 액세스(BLA) 픽처인 기본 계층 기본 코딩 픽처를 포함할 것으로 기대됩니다.

참고: 비트스트림이 hevc 형식인 경우, 디코딩에 필요한 파라미터 세트는 VideoDecoderConfig.description에 포함됩니다.

EncodedVideoChunk[[type]]key이고, 비트스트림이 annexb 형식이면, 해당 EncodedVideoChunk는 순간 디코딩 갱신(IDR), 클린 랜덤 액세스(CRA) 또는 브로큰 링크 액세스(BLA) 픽처인 기본 계층 코딩 픽처와, EncodedVideoChunk 내의 모든 비디오 데이터 NAL 유닛을 디코드하는 데 필요한 모든 파라미터 세트를 둘 다 포함할 것으로 기대됩니다.

5. VideoEncoderConfig 확장

partial dictionary VideoEncoderConfig {
  HevcEncoderConfig hevc;
};

hevc, 타입은 HevcEncoderConfig
HEVC (H.265) 코덱에 대한 코덱별 구성 옵션을 포함합니다.

5.1. HevcEncoderConfig

dictionary HevcEncoderConfig {
  HevcBitstreamFormat format = "hevc";
};

format, 타입은 HevcBitstreamFormat, 기본값은 "hevc"
출력 EncodedVideoChunk의 형식을 구성합니다. HevcBitstreamFormat을 참조하십시오.

5.2. HevcBitstreamFormat

enum HevcBitstreamFormat {
  "annexb",
  "hevc",
};

HevcBitstreamFormat은 HEVC 파라미터 세트의 위치와 비트스트림을 패키징하는 메커니즘을 결정합니다.

annexb
파라미터 세트는 비트스트림 전체에 주기적으로 포함됩니다.

참고: 이 형식은 [ITU-T-REC-H.265], 부속서 B에서 더 자세히 설명됩니다. 이 형식은 라이브 스트리밍 애플리케이션에서 흔히 사용되며, 파라미터 세트 데이터를 주기적으로 포함하면 사용자가 스트림의 중간부터 쉽게 시작할 수 있습니다.

hevc
파라미터 세트는 비트스트림에 포함되지 않고 대신 [[output callback]]을 통해 EncodedVideoChunkMetadata.decoderConfigdescription으로 방출됩니다.

참고: 이 형식은 [iso14496-15], 섹션 8.3에서 더 자세히 설명됩니다. 이 형식은 일반적으로 .MP4 파일에서 사용되며, 플레이어는 보통 미디어 데이터에 임의 접근할 수 있습니다.

6. VideoEncoderEncodeOptions 확장

partial dictionary VideoEncoderEncodeOptions {
  VideoEncoderEncodeOptionsForHevc hevc;
};

hevc, 타입은 VideoEncoderEncodeOptionsForHevc
[ITU-T-REC-H.265] 코덱에 대한 코덱별 인코딩 옵션을 포함합니다.

6.1. VideoEncoderEncodeOptionsForHevc

dictionary VideoEncoderEncodeOptionsForHevc {
  unsigned short? quantizer;
};

quantizer, 타입은 unsigned short, nullable
프레임별 quantizer 값을 설정합니다. [ITU-T-REC-H.265]에서 quantizer 임곗값은 0에서 51까지 달라질 수 있습니다.

7. 개인정보 보호 고려사항

개인정보 보호 고려사항 섹션을 [WEBCODECS]에서 참조하십시오.

8. 보안 고려사항

보안 고려사항 섹션을 [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"을 사용해 규범적 텍스트와 구분됩니다. 다음과 같습니다:

Note, 이는 참고용 노트입니다.

색인

이 명세에서 정의하는 용어

참조에 의해 정의되는 용어

참조

규범적 참조

[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBCODECS]
Paul Adenot; Eugene Zemtsov. WebCodecs. 2025년 4월 17일. WD. URL: https://www.w3.org/TR/webcodecs/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL Standard. Living Standard. URL: https://webidl.spec.whatwg.org/

참고 참조

[ISO14496-15]
ISO/IEC 14496-15:2024 Information technology — Coding of audio-visual objects — Part 15: Carriage of network abstraction layer (NAL) unit structured video in the ISO base media file format. 2024년 10월. URL: https://www.iso.org/standard/89118.html
[ITU-T-REC-H.265]
H.265 : High efficiency video coding. 2021년 8월. URL: https://www.itu.int/rec/T-REC-H.265
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Bernard Aboba. WebCodecs Codec Registry. 2024년 9월 9일. DRY. URL: https://www.w3.org/TR/webcodecs-codec-registry/

IDL 색인

partial dictionary VideoEncoderConfig {
  HevcEncoderConfig hevc;
};


dictionary HevcEncoderConfig {
  HevcBitstreamFormat format = "hevc";
};


enum HevcBitstreamFormat {
  "annexb",
  "hevc",
};


partial dictionary VideoEncoderEncodeOptions {
  VideoEncoderEncodeOptionsForHevc hevc;
};


dictionary VideoEncoderEncodeOptionsForHevc {
  unsigned short? quantizer;
};