Format Video YUV 10-bit dan 16-bit

Topik ini menjelaskan format YUV 10 dan 16-bit yang direkomendasikan untuk menangkap, memproses, dan menampilkan video dalam sistem operasi Microsoft Windows.

Topik ini berisi bagian berikut:

Gambaran Umum

Format ini menggunakan representasi titik tetap untuk saluran luma dan saluran chroma (C'b dan C'r). Nilai sampel adalah nilai 8-bit yang diskalakan, menggunakan faktor penskalaan 2^(n − 8), di mana n adalah 10 atau 16, sesuai bagian 7,7-7,8 dan 7,11-7,12 dari SMPTE 274M. Konversi presisi dapat dilakukan menggunakan pergeseran bit sederhana. Misalnya, jika titik putih format 8-bit adalah 235, format 10-bit yang sesuai memiliki titik putih pada 940 (235 × 4).

Representasi 16-bit yang dijelaskan di sini menggunakan nilai WORD little-endian untuk setiap saluran. Format 10-bit juga menggunakan 16 bit untuk setiap saluran, dengan 6 bit terendah diatur ke nol, seperti yang ditunjukkan dalam diagram berikut.

diagram memperlihatkan representasi 10-bit

Karena representasi 10-bit dan 16-bit dari format YUV yang sama memiliki tata letak memori yang sama, dimungkinkan untuk melemparkan representasi 10-bit ke representasi 16 tanpa kehilangan presisi. Dimungkinkan juga untuk mentransmisikan representasi 16-bit ke representasi 10-bit. (Format Y416 dan Y410 adalah pengecualian untuk aturan umum ini, namun, karena mereka tidak berbagi tata letak memori yang sama.)

Ketika perangkat keras grafis membaca permukaan yang berisi representasi 10-bit, perangkat keras harus mengabaikan urutan rendah 6 bit dari setiap saluran. Namun, jika permukaan berisi data 16-bit yang valid, permukaan harus diidentifikasi sebagai permukaan 16-bit.

Dalam format yang berisi alfa, piksel yang sepenuhnya transparan memiliki nilai alfa nol, dan piksel yang benar-benar buram memiliki nilai alfa (2^n) – 1, di mana n adalah jumlah bit alfa. Alpha diasumsikan sebagai nilai linier yang diterapkan ke setiap komponen setelah komponen dikonversi menjadi bentuk linier yang dinormalisasi.

Untuk gambar dalam memori video, driver grafis memilih perataan memori permukaan. Permukaan harus diselaraskan DWORD . Artinya, garis individu dalam permukaan dijamin dimulai pada batas 32-bit, meskipun penyelarasannya bisa lebih besar dari 32 bit. Asal (0,0) selalu sudut kiri atas permukaan.

Untuk keperluan dokumentasi ini, istilah U setara dengan Cb, dan istilah V setara dengan Cr.

Kode FOURCC Untuk YUV 10-Bit dan 16-Bit

Kode FOURCC untuk format yang dijelaskan di sini menggunakan konvensi berikut:

  • Jika formatnya planar, karakter pertama dalam kode FOURCC adalah 'P'. Jika format dikemas, karakter pertama adalah 'Y'.

  • Karakter kedua dalam kode FOURCC ditentukan oleh pengambilan sampel kroma, seperti yang ditunjukkan dalam tabel berikut.

    Pengambilan sampel Chroma Huruf kode FOURCC
    4:4:4 '4'
    4:2:2 '2'
    4:2:1 '1'
    4:2:0 '0'

     

  • Dua karakter terakhir dalam FOURCC menunjukkan jumlah bit per saluran, baik '16' untuk 16 bit atau '10' untuk 10 bit.

Dengan menggunakan skema ini, kode FOURCC berikut telah ditentukan. Tidak ada format 4:2:1 untuk YUV 10-bit atau 16-bit yang telah ditentukan saat ini.

FOURCC Deskripsi
P016 Planar, 4:2:0, 16-bit.
P010 Planar, 4:2:0, 10-bit.
P216 Planar, 4:2:2, 16-bit.
P210 Planar, 4:2:2, 10-bit.
Y216 Dikemas, 4:2:2, 16-bit.
Y210 Dikemas, 4:2:2, 10-bit.
Y416 Dikemas, 4:4:4, 16-bit
Y410 Dikemas, 4:4:4, 10-bit.

 

GUID subjenis juga telah ditentukan dari FOURCC ini; lihat GUID Subjenis Video.

Definisi Permukaan

Bagian ini menjelaskan tata letak memori dari setiap format. Dalam deskripsi yang mengikuti, istilah WORD mengacu pada nilai 16-bit little-endian, dan istilah DWORD mengacu pada nilai 32-bit little-endian.

Format 4:2:0

Dua format 4:2:0 ditentukan, dengan kode FOURCC P016 dan P010. Mereka memiliki tata letak memori yang sama, tetapi P016 menggunakan 16 bit per saluran dan P010 menggunakan 10 bit per saluran.

P016 dan P010

Dalam kedua format ini, semua sampel Y muncul terlebih dahulu dalam memori sebagai array WORDs dengan jumlah baris yang merata. Langkah permukaan bisa lebih besar dari lebar bidang Y. Array ini segera diikuti oleh array WORDs yang berisi sampel V dan Anda yang saling terkait, seperti yang ditunjukkan dalam diagram berikut.

diagram memperlihatkan tata letak piksel p016 dan p010

Jika gabungan array U-V ditujukan sebagai array DWORD, kata yang paling tidak signifikan (LSW) berisi nilai U dan kata paling signifikan (MSW) berisi nilai V. Langkah dari gabungan bidang U-V sama dengan langkah bidang Y. Bidang U-V memiliki setengah garis sebanyak bidang Y.

Kedua format ini adalah format piksel planar 4:2:0 pilihan untuk representasi YUV presisi yang lebih tinggi. Mereka diharapkan menjadi persyaratan jangka menengah untuk akselerator DirectX Video Acceleration (DXVA) yang mendukung video 10-bit atau 16-bit 4:2:0.

Format 4:2:2

Empat format 4:2:2 ditentukan, dua planar dan dua dikemas. Mereka memiliki kode FOURCC berikut:

  • P216
  • P210
  • Y216
  • Y210

P216 dan P210

Dalam kedua format planar ini, semua sampel Y muncul terlebih dahulu dalam memori sebagai array WORDs dengan jumlah baris yang genap. Langkah permukaan bisa lebih besar dari lebar bidang Y. Array ini segera diikuti oleh array WORDs yang berisi sampel V dan Anda yang saling terkait, seperti yang ditunjukkan dalam diagram berikut.

diagram memperlihatkan tata letak piksel p216 dan p210

Jika array U-V gabungan ditujukan sebagai array DWORDs, LSW berisi nilai U dan MSW berisi nilai V. Langkah dari gabungan bidang U-V sama dengan langkah bidang Y. Bidang U-V memiliki jumlah garis yang sama dengan bidang Y.

Kedua format ini adalah format piksel planar 4:2:2 pilihan untuk representasi YUV presisi yang lebih tinggi. Mereka diharapkan menjadi persyaratan jangka menengah untuk akselerator DirectX Video Acceleration (DXVA) yang mendukung video 10-bit atau 16-bit 4:2:2.

Y216 dan Y210

Dalam dua format yang dikemas ini, setiap pasang piksel disimpan sebagai array empat WORD, seperti yang ditunjukkan dalam ilustrasi berikut.

diagram memperlihatkan tata letak piksel y216 dan y210.

WORD pertama dalam array berisi sampel Y pertama dalam pasangan, WORD kedua berisi sampel U, WORD ketiga berisi sampel Y kedua, dan WORD keempat berisi sampel V.

Y210 identik dengan Y216 kecuali bahwa setiap sampel hanya berisi 10 bit data yang signifikan. 6 bit yang paling tidak signifikan diatur ke nol, seperti yang dijelaskan sebelumnya.

Format 4:4:4

Dua format 4:4:4 ditentukan, dengan kode FOURCC Y410 dan Y416. Keduanya adalah format yang dikemas.

Y410

Format ini adalah representasi 10-bit yang dikemas yang mencakup 2 bit alfa. Setiap piksel dikodekan sebagai DWORD tunggal dengan tata letak memori yang diperlihatkan dalam diagram berikut.

diagram memperlihatkan tata letak piksel y410.

Bit 0-9 berisi sampel U, bit 10-19 berisi sampel Y, bit 20-29 berisi sampel V, dan bit 30-31 berisi nilai alfa. Untuk menunjukkan bahwa piksel sepenuhnya buram, aplikasi harus mengatur dua bit alfa sama dengan 0x03.

Y416

Format ini adalah representasi 16-bit yang dikemas yang mencakup 16 bit alfa. Setiap piksel dikodekan sebagai sepasang DWORD, seperti yang ditunjukkan dalam ilustrasi berikut.

diagram memperlihatkan tata letak piksel y416.

Bit 0-15 berisi sampel U, bit 16-31 berisi sampel Y, bit 32-47 berisi sampel V, dan bit 48-63 berisi nilai alfa.

Untuk menunjukkan bahwa piksel sepenuhnya buram, aplikasi harus mengatur dua byte alfa sama dengan 0xFFFF. Format ini dimaksudkan terutama sebagai format perantara selama pemrosesan gambar untuk menghindari akumulasi kesalahan.

Format YUV pilihan

Tabel berikut mencantumkan format YUV pilihan, termasuk format 8-bit.

Format Pengambilan sampel chroma Dikemas atau planar Bit per saluran
AYUV 4:4:4 Packed 8
Y410 4:4:4 Packed 10
Y416 4:4:4 Packed 16
AI44 4:4:4 Packed Di-palettisasi
YUY2 4:2:2 Packed 8
Y210 4:2:2 Packed 10
Y216 4:2:2 Packed 16
P210 4:2:2 Planar 10
P216 4:2:2 Planar 16
NV12 4:2:0 Planar 8
P010 4:2:0 Planar 10
P016 4:2:0 Planar 16
NV11 4:1:1 Planar 8

 

Disarankan agar jika objek mendukung kedalaman bit tertentu dan skema pengambilan sampel klorma, objek harus mendukung format YUV yang sesuai yang tercantum dalam tabel ini. (Objek mungkin mendukung format tambahan yang tidak tercantum di sini.)

Format YUV 8-Bit yang Direkomendasikan untuk Penyajian Video

GUID Subjenis Video

Tipe Media Video