struktur DXVA_MBctrl_P_HostResidDiff_1 (dxva.h)

Struktur DXVA_MBctrl_P_HostResidDiff_1 dikirim sekali per blok makro oleh dekoder host ke akselerator untuk menentukan perintah kontrol makroblock untuk sebagian besar kasus gambar nonintra saat menggunakan IDCT berbasis host.

Sintaks

typedef struct _DXVA_MBctrl_P_HostResidDiff_1 {
  WORD         wMBaddress;
  WORD         wMBtype;
  DWORD        dwMB_SNL;
  WORD         wPatternCode;
  WORD         wPC_Overflow;
  DWORD        dwReservedBits2;
  DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_HostResidDiff_1;

Anggota

wMBaddress

Menentukan alamat blok makro blok makro saat ini dalam urutan pemindaian raster. Untuk contoh alamat blok makro, lihat alamat blok makro.

wMBtype

Menentukan tipe blok makro yang sedang diproses. Bit berikut menentukan konten wMBtype.

Bit Deskripsi
15 hingga 12 MvertFieldSel_3 (bit 15, bit paling signifikan) melalui MvertFieldSel_0 (bit 12)
Menentukan pilihan bidang vertikal untuk vektor gerakan terkait yang dikirim nanti dalam perintah kontrol makroblock. Untuk gerakan berbasis bingkai dengan struktur gambar bingkai (misalnya, untuk H.261 dan H.263), bit ini semuanya harus nol. Penggunaan bit ini sama dengan yang ditentukan untuk bit yang sesuai di Bagian 6.3.17.2 dari MPEG-2.
11 Dicadangkan Bit. Harus nol.
10 HostResidDiff
Menentukan apakah blok yang didekodekan perbedaan residu domain spasial dikirim atau apakah koefisien transformasi dikirim untuk IDCT di luar host untuk blok makro saat ini.
Bendera HostResidDif selalu sama dengan 1 dalam struktur ini. Bendera ini harus nol jika bConfigResidDiffHost adalah nol. Bendera ini harus 1 jika bConfigResidDiffAccelerator adalah nol.
9 dan 8 MotionType
Menentukan tipe gerakan dalam gambar. Misalnya, untuk gerakan berbasis bingkai dengan struktur gambar bingkai (seperti pada H.261), bit 9 harus 1 dan bit 8 harus nol.
Penggunaan bit ini sesuai langsung dengan penggunaan bit frame_motion_type atau field_motion_type di Bagian 6.3.17.1 dan Tabel 6-17 dan 6-18 video MPEG-2 saat bit ini ada di MPEG-2. Penggunaan bit ini dijelaskan lebih lanjut di bagian Keterangan berikut.
7 dan 6 MBscanMethod
Variabel ini tidak memiliki arti dan bit ini harus diatur ke nol dalam struktur ini.
5 FieldResidual
Menunjukkan apakah blok perbedaan residu menggunakan struktur IDCT bidang seperti yang ditentukan dalam MPEG-2.
Harus 1 jika anggota bPicStructure DXVA_PictureParameters adalah 1 atau 2. Saat digunakan untuk MPEG-2, FieldResidual harus nol jika variabel frame_pred_frame_DCT dalam sintaks MPEG-2 adalah 1, dan harus sama dengan variabel dct_type dalam sintaks MPEG-2 jika dct_type ada untuk macroblock.
4 H261LoopFilter
Menentukan apakah filter perulangan H.261 (Bagian 3.2.3 dari H.261) aktif untuk prediksi blok makro saat ini. Filter perulangan H.261 adalah filter 1/4, 1/2, 1/4 yang dapat dipisahkan yang diterapkan baik secara horizontal maupun vertikal ke enam blok dalam blok makro H.261, kecuali pada tepi blok di mana salah satu ketukan akan jatuh di luar blok. Dalam kasus seperti itu, filter diubah menjadi memiliki koefisien 0, 1, 0. Presisi aritmatika penuh dipertahankan dengan pembulatan ke bilangan bulat 8-bit pada output proses filter 2-D (setengah bilangan bulat atau nilai yang lebih tinggi dibulatkan).
3 Motion4MV
Variabel yang menunjukkan bahwa gerakan maju menggunakan vektor gerakan yang berbeda untuk masing-masing dari empat blok luminans dalam blok makro, seperti yang digunakan dalam H.263 Annexes F dan J. Motion4MV harus nol jika MotionForward adalah nol atau jika anggota DXVA_PictureParameters bPic4MVallowed adalah nol.
2 MotionBackward
Digunakan dengan cara yang ditentukan untuk variabel macroblock_motion_backward yang sesuai di MPEG-2. Jika anggota bPicBackwardPrediction dari DXVA_PictureParameters adalah nol, MotionBackward harus nol. Penggunaan bit ini dijelaskan lebih lanjut di bagian Keterangan berikut.
1 MotionForward
Digunakan untuk variabel macroblock_motion_forward yang sesuai di MPEG-2. Penggunaan bit ini dijelaskan lebih lanjut di bagian Keterangan berikut.
0 IntraMacroblock
Menunjukkan bahwa blok makro dikodekan sebagai intra, dan tidak ada vektor gerakan yang digunakan untuk blok makro saat ini. Sesuai dengan macroblock_intrain MPEG-2. Penggunaan bit ini dijelaskan lebih lanjut di bagian Keterangan berikut.

dwMB_SNL

Menentukan jumlah blok makro yang dilewati yang akan dihasilkan setelah blok makro saat ini dan menunjukkan lokasi data perbedaan residu untuk blok blok makro saat ini. Anggota ini berisi dua variabel: MBskipsFollowing dalam 8 bit yang paling signifikan, dan MBdataLocation dalam 24 bit yang paling tidak signifikan. MBskipsFollowing menunjukkan jumlah blok makro yang dilewati yang akan dihasilkan setelah blok makro saat ini. MBdataLocation adalah indeks ke dalam buffer data blok perbedaan residu. Indeks ini menunjukkan lokasi data perbedaan residu untuk blok blok makro saat ini, yang dinyatakan sebagai kelipatan 32 bit.

wPatternCode

Menunjukkan apakah data perbedaan residu dikirim untuk setiap blok dalam blok makro saat ini.

Bit (11-i) dari wPatternCode (di mana bit nol adalah bit yang paling tidak signifikan) menunjukkan apakah data perbedaan sisa dikirim untuk blok i, di mana i adalah indeks blok dalam blok makro seperti yang ditentukan dalam angka MPEG-2 6-10, 6-11, dan 6-12 (urutan pemindaian raster untuk Y, diikuti oleh blok Cb 4:2:0 dalam urutan raster-scan, diikuti oleh blok Cr 4:2:0, diikuti oleh blok Cb 4:2:2, diikuti oleh blok Cr 4:2:2, diikuti oleh blok Cb 4:4:4, diikuti oleh blok Cr 4:4:4). Data untuk blok berkode (blok yang memiliki bit (11-i) sama dengan 1) ditemukan dalam buffer pengkodean residu dalam urutan pengindeksan yang sama (meningkatkan i). Untuk data 4:2:0 MPEG-2, nilai wPatternCode sesuai dengan menggeser nilai yang didekodekan dari CBP (pola blok berkode) ke kiri oleh posisi enam bit (posisi bit bawah yang digunakan untuk format kroma 4:2:2 dan 4:4:4).

Jika anggota DXVA_ConfigPictureDecode bConfigSpatialResidInterleaved adalah 1, perbedaan residual berbasis host dikirim dalam bentuk yang saling berhubungan dengan klorma yang cocok dengan format piksel YUV yang digunakan. Dalam hal ini, setiap Cb dan sepasang blok Cr yang sesuai secara spasial diperlakukan sebagai satu unit struktur perbedaan residual. Ini tidak mengubah nilai atau arti wPatternCode, tetapi menyiratkan bahwa kedua anggota dari setiap pasangan blok data Cb dan Cr dikirim setiap kali salah satu blok data ini memiliki bit yang sesuai yang diatur dalam wPatternCode. Jika bit dalam wPatternCode untuk blok data tertentu adalah nol, nilai data perbedaan residu yang sesuai harus dikirim sebagai nol setiap kali pasangan ini perlu mengirim blok data perbedaan residu untuk blok dengan bit wPatternCode sama dengan nol.

wPC_Overflow

Menentukan blok mana dari macroblock yang menggunakan data perbedaan residu luapan.

Saat menggunakan pendekodean perbedaan residual berbasis host dengan anggota bPicOverflowBlocksDXVA_PictureParameters sama dengan 1 dan IntraMacroblock sama dengan nol (metode luapan 8-8), wPC_Overflow berisi kode pola blok luapan. (Kode pola ditentukan dengan cara yang sama seperti untuk wPatternCode.) Data untuk blok luapan yang dikodekan (blok yang memiliki bit (11-i) sama dengan 1) ditemukan di buffer pengkodean residu dalam urutan pengindeksan yang sama (meningkatkan i).

dwReservedBits2

Bit cadangan yang digunakan untuk pengemasan dan penyelarasan. Harus nol.

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

Array yang berisi nilai vektor gerakan untuk macroblock, setiap vektor gerakan diwakili oleh struktur DXVA_MVvalue .

Keterangan

Setiap makroblock yang dilewati yang ditentukan oleh MBskipsFollowing harus dihasilkan secara matematis yang setara dengan penambahan nilai wMBaddress lalu mengulangi perintah kontrol makroblock yang sama.

Konten perintah kontrol macroblock dengan nilai bukan nol untuk MBskipsFollowing setara (kecuali untuk nilai MBskipsFollowing) ke konten seri pertama dari seri macroblock yang dilewati. Dengan demikian, setiap kali MBskipsFollowing bukan nol, anggota struktur dan variabel berikut semuanya harus sama dengan nol: Motion4MV, IntraMacroblock, wPatternCode, dan wPC_Overflow. Setiap macroblock yang dilewati berikutnya kemudian dihasilkan dengan cara yang sama seperti yang pertama, kecuali untuk menaikkan nilai wMBaddress.

MBdataLocation harus nol untuk blok makro pertama dalam buffer perintah kontrol makroblok. Untuk blok makro selain blok makro pertama dalam buffer perintah kontrol makroblok, MBdataLocation mungkin berisi nilai apa pun jika wPatternCode adalah nol. Ketika wPatternCode nol, dekode disarankan tetapi tidak diperlukan untuk mengatur nilai ini baik ke nol atau ke nilai yang sama seperti dalam perintah kontrol blok makro berikutnya.

Untuk informasi selengkapnya tentang bagaimana makroblock yang dilewati dihasilkan, lihat Menghasilkan Macroblock yang Dilewati.

Kombinasi IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSel yang valid, dan MVector ditampilkan dalam tabel di Bagian Pertama Struktur Perintah Kontrol Makroblock.

Persyaratan

Persyaratan Nilai
Header dxva.h (termasuk Dxva.h)

Lihat juga

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_MVvalue

DXVA_PictureParameters