4:2:0 비디오 픽셀 형식

압축된 4:2:0 비디오를 디코딩하려면 다음 압축되지 않은 픽셀 형식 중 하나를 사용합니다.

픽셀 형식 설명
YUY2 4:2:2 비디오 픽셀 형식에 설명된 대로 두 줄의 출력 Cb 및 Cr 샘플이 각각 4:2:0 Cb 및 Cr 샘플의 실제 줄에 대해 생성된다는 점을 제외하고. 각 출력 줄 쌍의 두 번째 줄은 일반적으로 첫 번째 줄의 중복 또는 다음 쌍의 첫 번째 줄의 샘플과 쌍의 첫 번째 줄에 있는 샘플을 평균하여 생성됩니다.
UYVY 4:2:2 비디오 픽셀 형식에 설명된 대로 두 줄의 출력 Cb 및 Cr 샘플이 각각 4:2:0 Cb 및 Cr 샘플의 실제 줄에 대해 생성된다는 점을 제외하고. 각 출력 줄 쌍의 두 번째 줄은 일반적으로 첫 번째 줄의 중복 또는 다음 쌍의 첫 번째 줄의 샘플과 쌍의 첫 번째 줄에 있는 샘플을 평균하여 생성됩니다.
YV12 모든 Y 샘플은 먼저 메모리에서 부호 없는 문자(아마도 메모리 맞춤에 대한 더 큰 보폭이 있는) 배열로 발견되며, 그 다음에는 모든 Cr 샘플(Y 줄의 절반, 줄의 절반 수)이 바로 뒤에 와야 비슷한 방식으로 모든 Cb 샘플이 바로 그 뒤를 따릅니다.
IYUV Cb 및 Cr 평면의 순서를 교환하는 경우를 제외하고 YV12와 동일합니다.
NV12 모든 Y 샘플이 짝수의 선이 있는 부호 없는 문자의 배열로 메모리에서 먼저 발견되는 형식입니다(메모리 맞춤에 대한 보폭이 클 수 있음). 그 다음에는 인터리브된 Cb 및 Cr 샘플을 포함하는 부호 없는 문자 배열이 바로 뒤에 옵니다. 이러한 샘플이 little-endian WORD 형식으로 처리되는 경우 Cb는 가장 중요한 비트에 있고 Cr은 Y 샘플과 동일한 총 보폭을 가진 가장 중요한 비트에 있습니다. NV12는 기본 설정 4:2:0 픽셀 형식입니다.
NV21 NV12와 동일하며, Cb 및 Cr 샘플이 교환되어 서명되지 않은 문자의 크로마 배열 다음에 각 샘플에 대해 Cb가 뒤따릅니다(예: little-endian WORD 형식으로 주소가 지정되면 Cr은 가장 중요한 비트에 있고 Cb는 가장 중요한 비트에 있음).
IMC1 Cb 및 Cr 평면의 보폭이 Y 평면의 보폭과 동일하다는 점을 제외하고 YV12와 동일합니다. 또한 Cb 및 Cr 평면은 16줄의 배수인 메모리 경계에 있어야 합니다. 다음 코드 예제에서는 Cb 및 Cr 평면에 대한 계산을 보여 줍니다.
BYTE* pCr = pY + (((Height + 15) & ~15) * Stride);
BYTE* pCb = pY + (((((Height * 3) / 2) + 15) & ~15) * Stride);
앞의 예제에서 pY는 메모리 배열의 시작을 가리키는 바이트 포인터이며 Height는 16의 배수여야 합니다.
IMC2 Cb 및 Cr 선이 반 보폭 경계에서 인터리브된다는 점을 제외하고 IMC1과 동일합니다. 즉, 크로미니언스 영역의 각 전체 보폭 선은 Cr 줄로 시작하고 다음 반 보폭 경계에서 시작되는 Cb 줄로 시작합니다. (이 형식은 IMC1보다 주소 공간 효율적인 형식으로, 색소 주소 공간을 절반으로 줄여 총 주소 공간을 25% 줄이기 때문입니다.) NV12와 관련하여 선택적으로 선호되는 형식이지만 NV12가 더 많이 사용되는 것으로 보입니다.
IMC3 Cb 및 Cr 교환을 제외하고 IMC1과 동일합니다.
IMC4 Cb 및 Cr 교환을 제외하고 IMC2와 동일합니다.

이러한 형식에 대한 자세한 내용은 Microsoft Media Foundation 설명서의 비디오 렌더링에 권장되는 8비트 YUV 형식 을 참조하세요.