다음을 통해 공유


10비트 및 16비트 YUV 비디오 형식

이 항목에서는 Microsoft Windows 운영 체제에서 비디오를 캡처, 처리 및 표시하는 데 권장되는 10비트 및 16비트 YUV 형식에 대해 설명합니다.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

개요

이러한 형식은 루마 채널과 크로마(C'b 및 C'r) 채널 모두에 대해 고정 소수점 표현을 사용합니다. 샘플 값은 SMPTE 274M의 섹션 7.7-7.8 및 7.11-7.12에 따라 n이 10 또는 16인 2^(n - 8)의 배율 인수를 사용하여 8비트 값의 크기를 조정합니다. 정밀도 변환은 간단한 비트 시프트를 사용하여 수행할 수 있습니다. 예를 들어 8비트 형식의 흰색 점이 235인 경우 해당 10비트 형식의 흰색 점은 940(235 × 4)입니다.

여기에 설명된 16비트 표현은 각 채널에 대해 little-endian WORD 값을 사용합니다. 또한 10비트 형식은 다음 다이어그램과 같이 각 채널에 대해 16비트, 가장 낮은 6비트도 0으로 설정됩니다.

10비트 표현을 보여 주는 다이어그램

동일한 YUV 형식의 10비트 및 16비트 표현은 동일한 메모리 레이아웃을 가지므로 정밀도 손실 없이 10비트 표현을 16 표현으로 캐스팅할 수 있습니다. 16비트 표현을 10비트 표현으로 캐스팅할 수도 있습니다. (Y416 및 Y410 형식은 동일한 메모리 레이아웃을 공유하지 않기 때문에 이 일반 규칙의 예외입니다.)

그래픽 하드웨어가 10비트 표현이 포함된 표면을 읽는 경우 각 채널의 낮은 순서 6비트만 무시해야 합니다. 그러나 표면에 유효한 16비트 데이터가 포함된 경우 16비트 표면으로 식별되어야 합니다.

알파를 포함하는 형식에서 완전히 투명한 픽셀의 알파 값은 0이고, 완전히 불투명한 픽셀의 알파 값은 (2^n) – 1이며 여기서 n은 알파 비트의 수입니다. 알파는 구성 요소가 정규화된 선형 형식으로 변환된 후 각 구성 요소에 적용되는 선형 값으로 간주됩니다.

비디오 메모리의 이미지에 대해 그래픽 드라이버는 표면의 메모리 맞춤을 선택합니다. 표면은 DWORD 에 맞춰야 합니다. 즉, 맞춤이 32비트보다 클 수 있지만 표면 내의 개별 선은 32비트 경계에서 시작되도록 보장됩니다. 원점(0,0)은 항상 표면의 왼쪽 위 모서리입니다.

이 설명서의 목적을 위해 U 라는 용어는 Cb와 동일하며 V 라는 용어는 Cr과 동일합니다.

10비트 및 16비트 YUV에 대한 FOURCC 코드

여기에 설명된 형식에 대한 FOURCC 코드는 다음 규칙을 사용합니다.

  • 형식이 평면인 경우 FOURCC 코드의 첫 번째 문자는 'P'입니다. 형식이 압축되면 첫 번째 문자는 'Y'입니다.

  • FOURCC 코드의 두 번째 문자는 다음 표와 같이 크로마 샘플링에 의해 결정됩니다.

    크로마 샘플링 FOURCC 코드 문자
    4:4:4 '4'
    4:2:2 '2'
    4:2:1 '1'
    4:2:0 '0'

     

  • FOURCC의 마지막 두 문자는 채널당 비트 수를 나타냅니다. 16비트의 경우 '16', 10비트의 경우 '10'입니다.

이 체계를 사용하여 다음 FOURCC 코드가 정의되었습니다. 현재 10비트 또는 16비트 YUV에 대한 4:2:1 형식은 정의되지 않았습니다.

Fourcc Description
P016 평면, 4:2:0, 16비트.
P010 평면, 4:2:0, 10비트.
P216 평면, 4:2:2, 16비트.
P210 평면, 4:2:2, 10비트.
Y216 압축됨, 4:2:2, 16비트.
Y210 압축됨, 4:2:2, 10비트.
Y416 압축됨, 4:4:4, 16비트
Y410 압축, 4:4:4, 10비트.

 

하위 형식 GUID도 이러한 FOURC에서 정의되었습니다. 비디오 하위 형식 GUID를 참조하세요.

Surface 정의

이 섹션에서는 각 형식의 메모리 레이아웃에 대해 설명합니다. 다음 설명에서 WORD 라는 용어는 little-endian 16비트 값을 참조하고 DWORD 라는 용어는 little-endian 32비트 값을 나타냅니다.

4:2:0 형식

FOURCC 코드 P016 및 P010을 사용하여 두 개의 4:2:0 형식이 정의됩니다. 동일한 메모리 레이아웃을 공유하지만 P016은 채널당 16비트, P010은 채널당 10비트 사용

P016 및 P010

이러한 두 형식에서 모든 Y 샘플은 짝수 줄이 있는 WORD의 배열로 메모리에서 먼저 나타납니다. 표면 보폭은 Y 평면의 너비보다 클 수 있습니다. 이 배열은 다음 다이어그램과 같이 인터리브된 사용자 및 V 샘플을 포함하는 WORD의 배열 바로 뒤에 옵니다.

p016 및 p010 픽셀 레이아웃을 보여 주는 다이어그램

결합된 U-V 배열이 DWORD의 배열로 처리되는 경우 LSW(가장 중요한 단어)에는 U 값이 포함되고 MSW(가장 중요한 단어)에는 V 값이 포함됩니다. 결합된 U-V 평면의 보폭은 Y 평면의 보폭과 같습니다. U-V 평면에는 Y 평면의 절반 정도의 선이 있습니다.

이러한 두 형식은 높은 정밀도 YUV 표현을 위해 기본 설정 4:2:0 평면 픽셀 형식입니다. 10비트 또는 16비트 4:2:0 비디오를 지원하는 DXVA(DirectX Video Acceleration) 가속기에 대한 중기 요구 사항이 될 것으로 예상됩니다.

4:2:2 형식

네 개의 4:2:2 형식이 정의되고, 2개의 평면과 2개의 패킹이 정의됩니다. 다음과 같은 FOURCC 코드가 있습니다.

  • P216
  • P210
  • Y216
  • Y210

P216 및 P210

이러한 두 평면 형식에서 모든 Y 샘플은 짝수 줄이 있는 WORD의 배열로 메모리에서 먼저 나타납니다. 표면 보폭은 Y 평면의 너비보다 클 수 있습니다. 이 배열은 다음 다이어그램과 같이 인터리브된 사용자 및 V 샘플을 포함하는 WORD의 배열 바로 뒤에 옵니다.

p216 및 p210 픽셀 레이아웃을 보여 주는 다이어그램

결합된 U-V 배열이 DWORD의 배열로 처리되는 경우 LSW에는 U 값이 포함되고 MSW에는 V 값이 포함됩니다. 결합된 U-V 평면의 보폭은 Y 평면의 보폭과 같습니다. U-V 평면에는 Y 평면과 동일한 수의 선이 있습니다.

이러한 두 형식은 더 높은 정밀도 YUV 표현을 위해 기본 설정되는 4:2:2 평면 픽셀 형식입니다. 10비트 또는 16비트 4:2:2 비디오를 지원하는 DXVA(DirectX Video Acceleration) 가속기에 대한 중간 기간 요구 사항이 될 것으로 예상됩니다.

Y216 및 Y210

이러한 두 개의 압축된 형식에서 각 픽셀 쌍은 다음 그림과 같이 4개의 WORDs 배열로 저장됩니다.

y216 및 y210 픽셀 레이아웃을 보여 주는 다이어그램

배열의 첫 번째 WORD 에는 쌍의 첫 번째 Y 샘플이 포함되고, 두 번째 WORD 에는 U 샘플이 포함되고, 세 번째 WORD 에는 두 번째 Y 샘플이 포함되고, 네 번째 WORD 에는 V 샘플이 포함됩니다.

Y210은 각 샘플에 중요한 데이터가 10비트만 포함되어 있다는 점을 제외하고 Y216과 동일합니다. 가장 중요한 6비트 는 앞에서 설명한 대로 0으로 설정됩니다.

4:4:4 형식

FOURCC 코드 Y410 및 Y416을 사용하여 두 개의 4:4:4 형식이 정의됩니다. 둘 다 압축된 형식입니다.

Y410

이 형식은 2비트 알파를 포함하는 압축된 10비트 표현입니다. 각 픽셀은 다음 다이어그램에 표시된 메모리 레이아웃을 사용하여 단일 DWORD 로 인코딩됩니다.

y410 픽셀 레이아웃을 보여 주는 다이어그램

비트 0-9에는 U 샘플이 포함되고, 비트 10-19에는 Y 샘플이 포함되고, 비트 20-29에는 V 샘플이 포함되고, 비트 30-31에는 알파 값이 포함됩니다. 픽셀이 완전히 불투명함을 나타내려면 애플리케이션에서 두 알파 비트를 0x03 같게 설정해야 합니다.

Y416

이 형식은 16비트 알파를 포함하는 압축된 16비트 표현입니다. 각 픽셀은 다음 그림과 같이 DWORD의 쌍으로 인코딩됩니다.

y416 픽셀 레이아웃을 보여 주는 다이어그램

비트 0-15는 U 샘플을 포함하고, 비트 16-31은 Y 샘플을 포함하고, 비트 32-47은 V 샘플을 포함하고, 비트 48-63은 알파 값을 포함합니다.

픽셀이 완전히 불투명함을 나타내려면 애플리케이션에서 두 알파 바이트를 0xFFFF 같게 설정해야 합니다. 이 형식은 주로 오류 누적을 방지하기 위해 이미지 처리 중에 중간 형식으로 작성되었습니다.

기본 설정 YUV 형식

다음 표에서는 8비트 형식을 포함하여 기본 설정 YUV 형식을 나열합니다.

서식 크로마 샘플링 포장 또는 평면 채널당 비트 수
AYUV 4:4:4 점심 8
Y410 4:4:4 점심 10
Y416 4:4:4 점심 16
AI44 4:4:4 점심 팔레티드 ()
YUY2 4:2:2 점심 8
Y210 4:2:2 점심 10
Y216 4:2:2 점심 16
P210 4:2:2 평면 10
P216 4:2:2 평면 16
NV12 4:2:0 평면 8
P010 4:2:0 평면 10
P016 4:2:0 평면 16
NV11 4:1:1 평면 8

 

개체가 지정된 비트 깊이 및 크로마 샘플링 체계를 지원하는 경우 이 표에 나열된 해당 YUV 형식을 지원하는 것이 좋습니다. 개체는 여기에 나열되지 않은 추가 형식을 지원할 수 있습니다.

비디오 렌더링에 권장되는 8비트 YUV 형식

비디오 하위 유형 GUID

비디오 미디어 유형