Perintah Kontrol Macroblock

Pembuatan setiap makroblock yang didekode selama pendekodean gambar terkompresi diatur oleh struktur perintah kontrol makroblock. Ada empat struktur perintah kontrol makroblok yang ditentukan dalam file header dxva.h :

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

Struktur yang secara eksplisit didefinisikan dalam dxva.h adalah kasus khusus dari desain generik yang digunakan untuk perintah kontrol macroblock di DirectX VA. Untuk deskripsi desain generik ini, lihat Bentuk Generik Struktur Perintah Kontrol Makroblok.

Pemilihan struktur perintah kontrol makroblok mana yang akan digunakan didasarkan pada jenis gambar yang akan didekodekan dan tentang bagaimana gambar akan didekodekan. Anggota struktur dan bendera berikut menentukan jenis gambar, opsi pendekodean, dan mana dari empat struktur kontrol makroblok DirectX VA yang akan digunakan:

  • bPicIntra, bChromaFormat, bPicOBMC, bPicBinPB, bPic4MVallowed dan bMV_RPS anggota struktur DXVA_PictureParameters.

  • Anggota bConfigResidDiffHost dari struktur DXVA_ConfigPictureDecode .

  • Bendera HostResidDiff (bit 10 di anggota wMBtype dari setiap struktur kontrol macroblock).

Nilai untuk anggota struktur dan bendera ini diperlihatkan di bagian berikut.

DXVA_MBctrl_I_HostResidDiff_1

Struktur DXVA_MBctrl_I_HostResidDiff_1 digunakan untuk gambar intra dengan pendekodean perbedaan sisa berbasis host. Anggota struktur dan bendera berikut harus sama dengan nilai yang ditunjukkan:

  • bPicIntra harus sama dengan 1 (gambar intra).

  • bChromaFormat harus sama dengan 1 (pengambilan sampel 4:2:0).

  • HostResidDiff harus sama dengan 1 (IDCT berbasis host).

  • bConfigResidDiffHost harus sama dengan 1 (pendekodean perbedaan residual berbasis host).

DXVA_MBctrl_I_OffHostIDCT_1

Struktur DXVA_MBctrl_I_OffHostIDCT_1 digunakan untuk gambar intra dengan pengambilan sampel 4:2:0 dengan pendekodean perbedaan sisa off-host. Anggota struktur dan bendera berikut harus sama dengan nilai yang ditunjukkan:

  • bPicIntra harus sama dengan 1 (gambar intra).

  • bChromaFormat harus sama dengan 1 (pengambilan sampel 4:2:0).

  • HostResidDiff harus sama dengan nol (IDCT di luar host).

  • bConfigResidDiffHost harus sama dengan nol (pendekodean perbedaan residu di luar host).

DXVA_MBctrl_P_HostResidDiff_1

Struktur DXVA_MBctrl_P_HostResidDiff_1 digunakan untuk gambar P dan B dengan pendekodean perbedaan sisa berbasis host. Proses kontrol blok makro berikut tidak digunakan: OBMC, penggunaan empat vektor gerakan per macroblock untuk bagian B dari gambar PB, dan penggunaan pemilihan gambar referensi vektor gerakan.

Anggota struktur dan bendera berikut harus sama dengan nilai yang ditunjukkan:

  • bPicIntra harus sama dengan nol (pendekodean untuk gambar P dan gambar B atau vektor gerakan penyembunyian dalam gambar saya).

  • bChromaFormat harus sama dengan 1 (pengambilan sampel 4:2:0).

  • HostResidDiff harus sama dengan 1 (IDCT berbasis host).

  • bPicOBMC harus sama dengan nol (OBMC tidak digunakan).

  • bMV_RPS harus sama dengan nol (pemilihan gambar referensi vektor gerakan tidak digunakan).

  • Setidaknya salah satu bPicBinPB (gambar B dalam kompensasi gerakan bingkai PB tidak digunakan) dan bPic4MVallowed (empat vektor gerakan referensi maju per blok makro tidak digunakan) harus sama dengan nol.

  • bConfigResidDiffHost harus sama dengan 1 (pendekodean perbedaan residual berbasis host).

DXVA_MBctrl_P_OffHostIDCT_1

Struktur DXVA_MBctrl_P_OffHostIDCT_1 digunakan untuk gambar P dan B dengan pengambilan sampel 4:2:0 dengan pendekodean perbedaan sisa off-host. Proses kontrol blok makro berikut tidak digunakan: OBMC, penggunaan empat vektor gerakan per macroblock untuk bagian B dari gambar PB, dan penggunaan pemilihan gambar referensi vektor gerakan.

Anggota struktur dan bendera berikut harus sama dengan nilai yang ditunjukkan:

  • bPicIntra anggota struktur DXVA_PictureParameters harus sama dengan nol (pendekodean untuk gambar P dan B atau vektor gerakan penyembunyian dalam gambar saya).

  • bChromaFormat harus sama dengan 1 (pengambilan sampel 4:2:0).

  • HostResidDiff harus sama dengan nol (IDCT di luar host).

  • bPicOBMC harus sama dengan nol (OBMC tidak digunakan).

  • bMV_RPS harus sama dengan nol (pemilihan gambar referensi vektor gerakan tidak digunakan).

  • Setidaknya salah satu bPicBinPB (gambar B dalam kompensasi gerakan bingkai PB tidak digunakan) dan bPic4MVallowed (empat vektor gerakan referensi maju per blok makro tidak digunakan) harus sama dengan nol.

  • bConfigResidDiffHost harus sama dengan nol (pendekodean perbedaan residu di luar host).