Menghasilkan Macroblock yang Dilewati

Pembuatan makroblock yang dilewati di DirectX VA agak berbeda dari itu di Bagian Video MPEG-2 7.6.6. Dalam makroblock yang dilewati VA DirectX dihasilkan dalam perintah kontrol makroblok terpisah, daripada disimpulkan dari tipe makroblock nonskipped sebelumnya dan tipe gambar yang ditampilkan (misalnya, di MPEG-2, metode pembuatan makroblock yang dilewati tergantung pada apakah gambar tersebut gambar adalah gambar P atau gambar B.)

Kondisi berikut diperlukan saat menghasilkan dan menggunakan makroblock yang dilewati:

  • Makroblock yang dilewati tidak memiliki perbedaan residu.

  • Makroblock yang dilewati dapat dihasilkan dengan mengulangi operasi perintah kontrol macroblock dengan wMBaddress yang bertambah bertahap. (Setiap macroblock yang dilewati berikutnya dihasilkan dengan cara yang sama seperti yang pertama, kecuali untuk menaikkan nilai wMBaddress.)

  • Lompati blok makro dibatasi dari pembungkusan ke baris baru blok makro dalam gambar. (Perintah kontrol blok makro terpisah harus dikirim untuk menghasilkan blok makro pertama dari setiap baris blok makro.)

  • Konten perintah kontrol makroblock dengan nilai bukan nol untuk MBskipsFollowing setara (kecuali untuk nilai MBskipsFollowing) ke konten spesifikasi eksplisit dari seri makroblock pertama yang dilewati. Dengan demikian, setiap kali MBskipsFollowing bukan nol, anggota struktur dan variabel berikut semuanya harus sama dengan nol: Motion4MV, IntraMacroblock,wPatternCode, danwPC_Overflow.

Karena tiga kondisi pertama sebelumnya, akselerator dapat menerapkan kompensasi gerakan (ketika Motion4MV adalah nol) dengan menerapkan vektor gerakan yang ditentukan ke persegi panjang lebar yang sama dengan ekspresi berikut dalam komponen luminance, dan ke persegi panjang yang ditentukan serupa dalam komponen krominasi. Metode kompensasi gerakan area persegi panjang ini dapat dilakukan oleh akselerator daripada dengan menggunakan pengulangan MBskipsFollowing+1 dari operasi kontrol macroblock yang sama.

(bMacroblockWidthMinus1+1) X (MBskipsFollowing+1)

Anggota bMacroblockWidthMinus1 terkandung dalam DXVA_PictureParameters. Variabel MBskipsFollowing berada di anggota wMBtype dari setiap struktur kontrol macroblock.

Melewatkan Macroblocks di H.263 (Annex F)

Pembuatan makroblock yang dilewati di H.263 dengan mode prediksi tingkat lanjut aktif (Annex F), mengharuskan mewakili beberapa makroblock yang dilewati sebagai makroblok yang tidak diselipkan dalam perintah kontrol makroblok DirectX VA. Ini dilakukan untuk menghasilkan efek OBMC dalam blok makro ini.

Menghasilkan Macroblock yang Dilewati dalam Contoh MPEG-2

Contoh berikut menunjukkan bagaimana perintah kontrol macroblock digunakan saat makroblock yang dilewati dihasilkan. Untuk tujuan demonstrasi, asumsikan bahwa dalam bitstream MPEG-2 tujuh macroblock digunakan dengan cara berikut.

Nomor Blok Makro Deskripsi

0

Dikodekan dengan perbedaan residu

1

Dilewati

2

Dikodekan dengan perbedaan residu

3

Dilewati

4

Dilewati

5

Dilewati

6

Dikodekan dengan perbedaan residu

Ketujuh blok makro ini akan memerlukan pembuatan (setidaknya) dari lima perintah kontrol makroblok Va DirectX yang diperlihatkan dalam tabel berikut. Variabel MBskipsFollowing menunjukkan jumlah macroblock yang dilewati. Anggota wMBaddress menunjukkan alamat macroblock. MBskipsFollowing dan wMBaddress terkandung dalam struktur DXVA_MBctrl_P_OffHostIDCT_1, dan DXVA_MBctrl_P_HostResidDiff_1 . (Variabel MBskipsFollowing didefinisikan dalam anggota struktur dwMB_SNL .)

Perintah Macroblock Nilai Anggota

Pertama

wMBaddress = 0

MBskipsFollowing = 0

Detik

wMBaddress = 1

MBskipsFollowing = 0

Ketiga

wMBaddress = 2

MBskipsFollowing = 0

Keempat

wMBaddress = 3

MBskipsFollowing = 2

Kelima

wMBaddress = 6

MBskipsFollowing = 0