struktur DXVA_MBctrl_I_OffHostIDCT_1 (dxva.h)
Struktur DXVA_MBctrl_I_OffHostIDCT_1 dikirim sekali per blok makro oleh dekoder host ke akselerator untuk menentukan perintah kontrol makroblock untuk gambar intra 4:2:0 saat menggunakan IDCT di luar host.
Sintaks
typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
BYTE bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_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 pemrosesan blok makro.
Bit | Deskripsi |
---|---|
15 hingga 12 | MvertFieldSel_3 (bit 15, bit paling signifikan) melalui MvertFieldSel_0 (bit 12) Harus nol. |
11 | Bit Yang Dicadangkan 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 HostResidDiff selalu sama dengan nol 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 Ini tidak berlaku untuk gambar intra. Kedua bit harus nol. |
7 dan 6 | MBscanMethod Menentukan metode pemindaian perintah kontrol macroblock. Ini harus sama dengan bPicScanMethod jika bPicScanFixed adalah 1. Jika bConfigHostInverseScan nol, MBscanMethod adalah salah satu nilai berikut:
|
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 bendera frame_pred_frame_DCT dalam sintaks MPEG-2 adalah 1, dan harus sama dengan elemen 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
wPatternCode
Menunjukkan apakah data perbedaan residu dikirim untuk setiap blok dalam blok makro. Dalam gambar intra, data perbedaan residu dikirim untuk setiap blok dalam blok makro. Bit dalam wPatternCode yang merujuk ke semua blok blok makro saat ini harus 1 dalam DXVA_MBctrl_I_OffHostIDCT_1.
Bit (11-i) dari wPatternCode (di mana bit 0 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 4:2:0 blok Cb dalam urutan pemindaian raster, 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 CBP yang didekodekan (pola blok berkode) ke kiri oleh posisi enam bit (posisi bit-bawah yang digunakan untuk format kroma 4:2:2 dan 4:4:4).
bNumCoef[DXVA_NumBlocksPerMB_420]
Setiap nilai dalam array bNumCoef menunjukkan jumlah koefisien dalam buffer data perbedaan residu untuk setiap blok i macroblock.
Subskrip array i adalah indeks blok dalam blok makro seperti yang ditentukan dalam video MPEG-2 Gambar 6-10, 6-11, dan 6-12 (urutan pemindaian raster untuk Y, diikuti oleh Cb, diikuti oleh Cr).
Anggota ini hanya digunakan ketika bendera HostResidDiff (bit 10 dalam wMBtype) adalah nol, dan bChromaFormat adalah 1 (4:2:0). Jika digunakan dalam format 4:2:2 atau 4:4:4, itu akan meningkatkan ukuran perintah kontrol makroblok khas melewati batas perataan memori penting. Akibatnya, bit TCoefEOB dalam struktur DXVA_TCoefSingle digunakan untuk menentukan jumlah koefisien di setiap blok dalam kasus non-4:2:0.
Tujuan bNumCoef adalah untuk menunjukkan kuantitas data yang ada untuk setiap blok dalam penyangga data perbedaan residu, yang dinyatakan sebagai jumlah koefisien yang ada. Ketika anggota bConfig4GroupedCoefs dari struktur DXVA_ConfigPictureDecode adalah 1, bNumCoef mungkin berisi jumlah koefisien aktual yang dikirim untuk blok atau nilai yang dibulatkan menjadi kelipatan empat. Data untuk koefisien ini ditemukan dalam buffer perbedaan residu dalam urutan yang sama.
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) |