Bagikan melalui


struktur DXVA_MBctrl_P_HostResidDiff_1 (dxva.h)

Struktur DXVA_MBctrl_P_HostResidDiff_1 dikirim sekali per makroblock oleh dekoder host ke akselerator untuk menentukan perintah kontrol macroblock 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 dari makroblock saat ini dalam urutan pemindaian raster. Untuk contoh alamat macroblock, lihat alamat macroblock.

wMBtype

Menentukan tipe blokir 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 blok makro. 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 Bit Yang Dipesan. Harus nol.
10 HostResidDiff
Menentukan apakah perbedaan sisa domain spasial blok yang didekode 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 ketika 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 sisa menggunakan struktur IDCT bidang seperti yang ditentukan dalam MPEG-2.
Harus 1 jika anggota bPicStructure DXVA_PictureParameters adalah 1 atau 2. Ketika 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 macroblock 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 ke atas).
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 bPic4MVallowed dari DXVA_PictureParameters 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 blokir 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 macroblock yang dilewati yang akan dihasilkan setelah macroblock saat ini. MBdataLocation adalah indeks ke dalam buffer data blok perbedaan sisa. Indeks ini menunjukkan lokasi data perbedaan sisa untuk blok blok makroblok saat ini, yang dinyatakan sebagai kelipatan 32 bit.

wPatternCode

Menunjukkan apakah data perbedaan sisa 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 raster-scan 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 sisa 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 dengan posisi enam bit (posisi bit bawah yang digunakan untuk format chroma 4:2:2 dan 4:4:4).

Jika anggota bConfigSpatialResidInterleaved dari DXVA_ConfigPictureDecode adalah 1, perbedaan residual berbasis host dikirim dalam bentuk chroma-interleaved yang cocok dengan format piksel YUV yang digunakan. Dalam hal ini, setiap Cb dan sepasang blok Cr yang sesuai secara spasial diperlakukan sebagai unit struktur perbedaan sisa tunggal. 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 sisa yang sesuai harus dikirim sebagai nol setiap kali pasangan ini mengharuskan pengiriman blok data perbedaan sisa untuk blok dengan bit wPatternCode sama dengan nol.

wPC_Overflow

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

Saat menggunakan pendekodean perbedaan sisa 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-blok yang memiliki bit (11-i) sama dengan 1) ditemukan dalam buffer pengkodean sisa 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 makroblock, 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 macroblock yang sama.

Konten perintah kontrol macroblock dengan nilai bukan nol untuk MBskipsFollowing setara (kecuali untuk nilai MBskipsFollowing) ke konten seri pertama dari 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 makroblock 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 adalah 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 diperlihatkan dalam tabel di Bagian Pertama Struktur Perintah Kontrol Macroblock.

Persyaratan

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

Lihat juga

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_MVvalue

DXVA_PictureParameters