Low-Level IdCT Processing Elements

Antarmuka DirectX VA mendukung berbagai cara menangani transformasi diskrit-kosinus terbalik (IDCT) tingkat rendah. Ada dua jenis operasi mendasar:

  • IDCT off-host: Meneruskan blok makro koefisien transformasi ke akselerator untuk IDCT eksternal, rekonstruksi gambar, dan kliping rekonstruksi.

  • IDCT berbasis host: Melakukan IDCT pada host dan meneruskan blok hasil domain spasial ke akselerator untuk rekonstruksi gambar eksternal dan kliping rekonstruksi.

Dalam kedua kasus, proses kuantisasi terbalik dasar, saturasi rentang pra-IDCT, kontrol ketidakcocokan MPEG-2 (jika perlu), dan offset intra-DC (jika perlu) dilakukan pada host. Dalam kedua kasus, rekonstruksi gambar akhir dan kliping rekonstruksi dilakukan pada akselerator.

Kuantisasi terbalik, saturasi pra-IDCT, kontrol ketidakcocokan, offset intra-DC, IDCT, rekonstruksi gambar, dan proses kliping rekonstruksi ditentukan dalam langkah-langkah berikut. Struktur DXVA_QmatrixData memuat data matriks kuantisasi terbalik untuk pendekodean gambar video terkompresi. (Nilai BPP, WT, dan HT harus diasumsikan sama dengan 8, kecuali ditentukan lain oleh struktur DXVA_PictureParameters .)

  1. Lakukan kuantisasi terbalik seperlunya (termasuk penerapan matriks pembobotan kuantisasi terbalik) untuk membuat sekumpulan nilai koefisien IDCT F"(u,v) dari indeks kuantisasi berkode entropi. Ini dilakukan oleh host.

  2. Jenuhkan setiap nilai koefisien yang direkonstruksi F"(u,v) dari blok koefisien transformasi untuk mendapatkan nilai F'(u,v) dalam rentang terbatas yang diizinkan seperti yang didefinisikan dalam rumus berikut. Ini dilakukan oleh host. Rumus untuk penghitungan saturasi pra-IDCT.

  3. Lakukan kontrol ketidakcocokan untuk MPEG-2. (Tahap pemrosesan ini hanya diperlukan untuk MPEG-2.) Kontrol ketidakcocokan dilakukan dengan menjumlahkan nilai jenuh dari semua koefisien dalam macroblock (ini setara dengan XORing bit yang paling tidak signifikan). Jika jumlahnya genap, 1 dikurangi dari nilai jenuh dari koefisien terakhir F'(WT-1,HT-1). Jika jumlahnya ganjil, nilai jenuh F'(WT-1,HT-1) digunakan apa adanya, tanpa perubahan. Nilai koefisien yang dibuat setelah kontrol saturasi dan ketidakcocokan disebut sebagai F(u,v) dalam dokumentasi ini. Ini dilakukan oleh host. MPEG-1 memiliki bentuk kontrol ketidakcocokan yang berbeda yang terdiri dari mengubah nilai dengan plus atau dikurangi 1 untuk setiap koefisien yang sebaliknya akan memiliki nilai genap setelah kuantisasi terbalik. H.263 tidak memerlukan kontrol ketidakcocokan yang dijelaskan di bagian ini. Bagaimanapun, kontrol ketidakcocokan adalah tanggung jawab host jika diperlukan. Rumus untuk penghitungan kontrol yang tidak cocok.

  4. Tambahkan offset intra-DC (jika perlu) ke semua blok intra sehingga semua blok intra mewakili perbedaan yang relatif terhadap nilai prediksi referensi spasial 2 (BPP-1). Offset seperti itu diperlukan untuk semua standar pengodean video yang direferensikan (H.261, H.263, MPEG-1, MPEG-2, dan MPEG-4), kecuali ketika HostResidDiff adalah 1 dan anggota bConfigIntraResidUnsigned dari struktur DXVA_ConfigPictureDecode adalah 1. Offset intra DC memiliki nilai (2(BPP-1)) * sqrt(WTHT) di domain transformasi. Nilai ini adalah 1024 dalam semua kasus kecuali MPEG-4, yang memungkinkan BPP lebih besar dari 8. Ini dilakukan oleh host.

  5. Lakukan transformasi kosinus diskrit terbalik (IDCT) pada host atau akselerator. IDCT ditentukan oleh rumus berikut, di mana: C(u) = 1 untuk u = 0, jika tidak C(u) = sqrt(2) C(v) = 1 untuk v = 0, jika tidak C(v) = sqrt(2) x dan y adalah koordinat spasial horizontal dan vertikal di domain piksel u dan v adalah koordinat frekuensi horizontal dan vertikal transformasi domain WT dan HT adalah lebar dan tinggi blok transformasi (umumnya keduanya adalah 8).

  6. Tambahkan informasi residual domain spasial ke nilai prediksi kompensasi gerakan untuk blok nonintra atau ke nilai referensi konstanta untuk blok intra untuk melakukan rekonstruksi gambar pada akselerator. Nilai referensi konstan untuk blok intra adalah 2(BPP-1) kecuali ketika hostResidDiff (bit 10 dari anggota wMBtypedari DXVA_MBctrl_P_HostResidDiff_1) struktur adalah 1 dan anggota bConfigIntraResidUnsigned dari struktur DXVA_ConfigPictureDecode adalah 1. Dalam kasus terakhir, konstantanya adalah nol.

  7. Klip rekonstruksi gambar ke rentang dari nol hingga (2BPP)-1 dan simpan nilai sampel gambar hasil akhir pada akselerator.