struktur DXVA_MBctrl_P_OffHostIDCT_1 (dxva.h)

Struktur DXVA_MBctrl_P_OffHostIDCT_1 dikirim sekali per makroblock oleh dekoder host ke akselerator untuk menentukan perintah kontrol macroblock untuk sebagian besar gambar nonintra menggunakan IDCT di luar host.

Sintaks

typedef struct _DXVA_MBctrl_P_OffHostIDCT_1 {
  WORD         wMBaddress;
  WORD         wMBtype;
  DWORD        dwMB_SNL;
  WORD         wPatternCode;
  BYTE         bNumCoef[DXVA_NumBlocksPerMB_420];
  DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_OffHostIDCT_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. 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 ini harus nol jika bConfigResidDiffHost adalah nol. Bendera ini harus 1 jika bConfigResidDiffAccelerator adalah nol. Bendera ini selalu sama dengan nol dalam DXVA_MBctrl_P_OffHostIDCT_1.
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 MPEG-2 ketika bit ini ada di MPEG-2. Penggunaan bit ini dijelaskan lebih lanjut di bagian Keterangan berikut.
7 dan 6 MBscanMethod
Menentukan metode pemindaian yang akan digunakan.
Ini harus sama dengan bPicScanMethod jika bPicScanFixed adalah 1.
Jika bConfigHostInverseScan nol, MBscanMethod harus menjadi salah satu nilai berikut:
  • Bit 6 adalah nol dan bit 7 adalah nol untuk pemindaian zigzag (MPEG-2 Gambar 7-2).
  • Bit 6 adalah 1 dan bit 7 adalah nol untuk pemindaian vertikal alternatif.
  • Bit 6 adalah nol dan bit 7 adalah 1 untuk pemindaian alternatif-horizontal.
Jika bConfigHostInverseScan adalah 1, MBscanMethod harus sama dengan nilai berikut:
  • Bit 6 adalah 1 dan bit 7 adalah 1 untuk pemindaian arbitrer dengan alamat koefisien absolut.
Baik bPicScanMethod dan bPicScanFixed adalah anggota DXVA_PictureParameters . bConfigHostInverseScan adalah anggota DXVA_ConfigPictureDecode.
5 FieldResidual
Menunjukkan apakah blok perbedaan sisa menggunakan struktur IDCT bidang seperti yang ditentukan dalam MPEG-2.
Bendera ini harus 1 jika anggota bPicStructure dari 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
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 di 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
Menunjukkan bahwa gerakan maju menggunakan vektor gerakan yang berbeda untuk masing-masing dari empat blok luminans dalam macroblock, 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 sebagaimana ditentukan untuk macroblock_motion_backwardparameter 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 sebagaimana ditentukan untuk 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 dan MBdataLocation yang paling signifikan dalam 24 bit yang paling signifikan. MBskipsFollowing menunjukkan jumlah macroblock yang dilewati yang akan dihasilkan setelah macroblock saat ini. MBdataLocation adalah indeks ke dalam buffer data blok perbedaan sisa IDCT. 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.

Bit (11-i) wPatternCode (di mana i adalah indeks blok dalam macroblock dan bit 0 mewakili bit yang paling tidak signifikan) menunjukkan apakah data perbedaan sisa dikirim untuk blok i (Lihat Decoding Gambar Berorientasi Macroblock untuk informasi selengkapnya). Nilai 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 sisa dalam urutan pengindeksan yang sama (meningkatkan i). Untuk data 4:2:0 MPEG-2, nilai wPatternCode sesuai dengan menggeser nilai CBP yang didekodekan ke kiri oleh enam posisi bit (posisi bit bawah yang digunakan untuk format kroma 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 pasangan blok Cr yang sesuai secara spasial diperlakukan sebagai satu unit struktur data perbedaan residu. 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 memerlukan pengiriman blok data perbedaan residu untuk blok dengan bit wPatternCode sama dengan nol.

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 makroblock umum 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 buffer 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.

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

Array yang berisi nilai vektor gerakan untuk makroblock, masing-masing diwakili menggunakan 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. Setiap perintah kontrol makroblock dengan nilai bukan nol untuk MBskipsFollowing menentukan bagaimana prediksi kompensasi gerakan akan dilakukan agar setiap macroblock dilewati, dan setara (kecuali untuk nilai MBskipsFollowing) ke spesifikasi nonskip eksplisit dari generasi pertama dari rangkaian macroblock yang dilewati. Dengan demikian, setiap kali MBskipsFollowing bukan nol, semua nilai berikut harus sama dengan nol: Motion4MV, IntraMacroblock, dan bNumCoef.

MBdataLocation adalah indeks ke dalam buffer data blok perbedaan sisa IDCT, yang menunjukkan lokasi data perbedaan residu untuk blok blok makroblok saat ini, yang dinyatakan sebagai kelipatan 32 bit. Harus nol untuk blok makro pertama dalam buffer perintah kontrol makroblok. MBdataLocation dapat 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_HostResidDiff_1

DXVA_MVvalue

DXVA_PictureParameters

DXVA_TCoefSingle