struktur DXVA_MBctrl_I_HostResidDiff_1 (dxva.h)
Struktur DXVA_MBctrl_I_HostResidDiff_1 dikirim sekali per makroblock oleh dekoder host ke akselerator untuk menentukan perintah kontrol macroblock untuk gambar intra.
Sintaks
typedef struct _DXVA_MBctrl_I_HostResidDiff_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
WORD wPC_Overflow;
DWORD dwReservedBits2;
} DXVA_MBctrl_I_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 mendefinisikan pemrosesan blok makro.
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. Bit dalam bit MvertFieldSel_0, MvertFieldSel_1, MvertFieldSel_2, dan MvertFieldSel_3 sesuai dengan bit motion_vertical_field_select[r][s] 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. HostResidDiff selalu sama dengan 1 dalam struktur ini. Bendera ini harus nol jika bConfigResidDiffHost adalah nol. Bendera ini harus 1 jika bConfigResidDiffAccelerator adalah nol. Anggota bConfigResidDiffHost dan bConfigResidDiffAccelerator terkandung dalam struktur DXVA_ConfigPictureDecode . |
9 dan 8 | MotionType Harus nol. |
7 dan 6 | MBscanMethod Bit ini tidak memiliki arti dan harus diatur ke nol. |
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. Saat digunakan untuk MPEG-2, FieldResidual harus nol jika bendera frame_pred_frame_DCT dalam sintaks MPEG-2 adalah 1, dan harus sama dengan variabel dct_type sintaks MPEG-2 jika dct_type ada untuk macroblock. |
4 | H261LoopFilter Harus nol. |
3 | Motion4MV Harus nol. |
2 | MotionBackward Harus nol. |
1 | MotionForward Harus nol. |
0 | IntraMacroblock Harus 1. |
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 makroblok 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. Dalam gambar intra, data perbedaan sisa dikirim untuk setiap blok dalam blok makro. Bit dalam wPatternCode yang merujuk ke semua blok blok makro saat ini harus 1 dalam struktur 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 (11i) sama dengan 1) ditemukan di 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 struktur 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
Harus nol.
dwReservedBits2
Bit cadangan yang digunakan untuk pengemasan dan penyelarasan. Harus nol.
Keterangan
Blok makro yang dilewati tidak digunakan oleh gambar intra, sehingga variabel MBskipsFollowing harus nol. Variabel MBdataLocation harus nol untuk blok makro pertama dalam buffer perintah kontrol makroblok. Untuk informasi selengkapnya tentang bagaimana makroblock yang dilewati dihasilkan, lihat Menghasilkan Macroblock yang Dilewati.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | dxva.h (termasuk Dxva.h) |