struktur DXVA_BlendCombination (dxva.h)
Struktur DXVA_BlendCombination dikirim oleh dekoder host ke akselerator untuk menentukan bagaimana gambar campuran dibuat dari gambar sumber dan gambar grafis dengan informasi alfa-blending yang menyertainya.
Sintaks
typedef struct _DXVA_BlendCombination {
WORD wPictureSourceIndex;
WORD wBlendedDestinationIndex;
RECT PictureSourceRect16thPel;
RECT PictureDestinationRect;
RECT GraphicSourceRect;
RECT GraphicDestinationRect;
WORD wBlendDelay;
BYTE bBlendOn;
BYTE bWholePlaneAlpha;
DXVA_AYUVsample2 OutsideYUVcolor;
} DXVA_BlendCombination, *LPDXVA_BlendCombination;
Anggota
wPictureSourceIndex
Menentukan indeks permukaan yang tidak dikompresi, seperti yang didefinisikan oleh konten DWORD yang ditunjukkan oleh anggota lpInputDataDD_BEGINMOCOMPFRAMEDATA dalam panggilan sebelumnya ke DdMoCompBeginFrame, dari gambar yang akan digabungkan dengan grafik. Nilai ini 0xFFFF jika penpaduan alfa perangkat keras back-end sedang digunakan (ketika anggota bConfigBlendTypedari DXVA_ConfigAlphaCombine adalah 1).
wBlendedDestinationIndex
Menentukan indeks permukaan yang tidak dikompresi, seperti yang didefinisikan oleh konten DWORD yang ditujukkan oleh anggota lpInputData dari DD_BEGINMOCOMPFRAMEDATA dalam panggilan sebelumnya ke DdMoCompBeginFrame, dari gambar gabungan yang akan dibuat. Nilai ini 0xFFFF jika penpaduan alfa perangkat keras back-end sedang digunakan (ketika anggota bConfigBlendType dari DXVA_ConfigAlphaCombine adalah 1).
Nilai ini tidak boleh sama dengan wPictureSourceIndex kecuali penpaduan alfa perangkat keras back-end sedang digunakan.
PictureSourceRect16thPel
Menentukan area gambar sumber yang akan digabungkan dengan gambar grafis sebagai struktur RECT . Dimensi ditentukan dalam satuan jarak seperenam belas antara nilai sampel komponen luminance. (Dengan kata lain, anggota dalam struktur RECT adalah representasi titik tetap yang memiliki 28 bit sebelum titik biner dan 4 bit setelah titik biner.) Akurasi sampel satu-enam belas ini memungkinkan PictureSourceRect16thPel berisi akurasi yang sama dengan variabel pan-scan frame_centre_horizontal_offset dan frame_centre_vertical_offset dalam video MPEG-2.
Jika anggota bConfigPictureResizing dari DXVA_ConfigAlphaCombine adalah nol, semua dimensi di PictureSourceRect16thPel harus berupa kelipatan bilangan bulat 16.
PictureDestinationRect
Menentukan area gambar tujuan sebagai struktur RECT. Ini akan berisi area yang ditentukan untuk gambar sumber oleh PictureSourceRect16thPel.
Jika anggota bConfigPictureResizingdari DXVA_ConfigAlphaCombine adalah nol, area yang ditentukan oleh PictureDestinationRect harus memiliki lebar dan tinggi yang sama dengan area yang ditentukan oleh PictureSourceRect16thPel. Jika PictureDestinationRect berbeda ukurannya dari PictureSourceRect16thPel, metode pengambilan sampel ulang yang akan diterapkan tidak ditentukan, tetapi harus memiliki kualitas yang setidaknya setara dengan pengambilan sampel ulang bilinear.
GraphicSourceRect
Menentukan area gambar grafik sumber sebagai struktur RECT . Area ini dikombinasikan dengan bagian gambar sumber yang ditentukan oleh PictureSourceRect16thPel untuk membuat gambar alpha-blended.
GraphicDestinationRect
Menentukan area gambar grafik tujuan sebagai struktur RECT .
Jika anggota bConfigGraphicResizing dari DXVA_ConfigAlphaCombine adalah nol, gambar tujuan harus memiliki lebar dan tinggi yang sama dengan area yang ditentukan oleh GraphicSourceRect. Jika GraphicDestinationRect berbeda ukurannya dari GraphicSourceRect, metode pengambilan sampel ulang yang akan diterapkan ke gambar grafik tidak ditentukan. Namun, metode pengambilan sampel ulang yang digunakan harus memiliki kualitas yang setidaknya setara dengan pengambilan sampel ulang bilinear permukaan AYUV yang mewakili informasi perpaduan.
wBlendDelay
Menentukan jumlah milidetik penundaan sebelum kombinasi penpaduan mulai berlaku. Jika penjalinan perangkat keras back-end sedang digunakan (misalnya, jika anggota bConfigBlendTypedari DXVA_ConfigAlphaCombine adalah 1), wBlendDelay berisi jumlah milidetik penundaan sebelum kombinasi blending mulai berlaku. Jika blending front-end sedang digunakan, anggota ini tidak memiliki arti dan harus nol.
bBlendOn
Menentukan kapan operasi kombinasi penpaduan dimulai dan berhenti. Jika pensimpulan perangkat keras back-end sedang digunakan, penpaduan diterapkan dari waktu yang ditentukan dalam operasi kombinasi blending (dengan bBlendOn sama dengan 1) hingga waktu eksekusi kombinasi blending baru (dengan bBlendOn sama dengan 1), atau sampai blending dinonaktifkan oleh operasi kombinasi blending (dengan bBlendOn sama dengan nol). Jika blending perangkat keras back-end sedang digunakan dan bBlendOn adalah nol, satu-satunya nilai lain dalam buffer kombinasi alpha-blend yang memiliki arti adalah wBlendDelay. Jika blending front-end sedang digunakan, anggota ini tidak memiliki arti dan harus nol .
bWholePlaneAlpha
Berisi pengali opasitas untuk saluran alfa gambar grafis. Nilai nol menunjukkan bahwa gambar grafis transparan (sehingga konten grafik tidak berpengaruh pada gambar campuran yang dihasilkan). Nilai 255 menunjukkan bahwa gambar grafis menggunakan opasitas sampel lengkapnya. Jika bWholePlaneAlpha tidak sama dengan nol, campuran yang ditentukan adalah mengalikan keburaman setiap lokasi dalam konten grafis dengan (bWholePlaneAlpha+1)/256. Untuk nilai nol bWholePlaneAlpha, campuran yang digunakan adalah opasitas yang ditentukan dalam gambar grafis tanpa perubahan. Ini harus sama dengan 255 jika anggota bConfigWholePlaneAlphadari DXVA_ConfigAlphaCombine adalah nol.
OutsideYUVcolor
Menunjukkan apakah area di luar PictureDestinationRect menggunakan warna konstan untuk penpaduan. Jika demikian, anggota ini menentukan konstanta warna tersebut. Anggota OutsideYUVcolor didefinisikan sebagai struktur DXVA_AYUVsample2 . Lihat bagian Keterangan untuk informasi lebih lanjut.
Keterangan
Jika gambar sumber dan tujuan tidak dalam format 4:4:4, setiap sampel kedua dari informasi pencambahan grafis (misalnya, yang pertama, ketiga, atau kelima) diterapkan ke informasi kroniminasi sumber subsampel dalam arah vertikal atau horizontal sesuai kebutuhan untuk menghasilkan hasil campuran.
Bagian berikut menunjukkan pembatasan yang ditempatkan di anggota kiri, kanan, atas, dan bawah struktur RECT.
Pembatasan Struktur RECT untuk PictureSourceRect16thPel
Pembatasan berikut berlaku untuk dimensi RECTPictureSourceRect16thPel:- kiri dan atas harus lebih besar dari atau sama dengan nol.
- kanan dan bawah harus lebih besar dari atau sama dengan kiri dan atas, masing-masing.
- Jika kanan sama dengan kiri atau atas sama dengan bawah, semua anggota RECT harus memiliki nilai nol yang menunjukkan bahwa gambar sumber tidak digunakan. Kasus ini hanya diperbolehkan jika anggota bConfigOnlyUsePicDestRectAreadari DXVA_ConfigAlphaCombine adalah nol.
- kanan dan bawah tidak boleh melebihi 16 kali lebar dan tinggi yang dialokasikan, masing-masing, dari permukaan gambar sumber yang tidak dikompresi.
- kiri = 0
- atas = 0
- kanan = 16 X horizontal_size
- bawah = 16 X vertical_size
Pembatasan Struktur RECT untuk PictureDestinationRect
Pembatasan berikut berlaku untuk dimensi RECT untuk PictureDestinationRect:- kiri dan atas harus lebih besar dari atau sama dengan nol.
- kanan dan bawah harus lebih besar dari atau sama dengan kiri dan atas, masing-masing.
- Jika kanan sama dengan kiri atau atas sama dengan bawah (hanya diperbolehkan jika anggota bConfigOnlyUsePicDestRectAreadari DXVA_ConfigAlphaCombine adalah nol), semua anggota RECT harus memiliki nilai nol dan PictureSourceRect16thPel juga harus menentukan semua nilai yang memiliki nilai nol.
- Jika anggota bConfigBlendType dari DXVA_ConfigAlphaCombine adalah nol, kanan dan bawah tidak boleh melebihi lebar dan tinggi yang dialokasikan, masing-masing, dari permukaan gambar tujuan yang tidak dikompresi.
- Jika anggota bConfigBlendType dari DXVA_ConfigAlphaCombine adalah 1, kanan dan bawah tidak boleh melebihi lebar dan tinggi yang dialokasikan, masing-masing, dari permukaan grafis sumber.
Pembatasan Struktur RECT untuk GraphicSourceRect
Jika pemuatan data alpha-blend menggunakan anggota bConfigDataTypedari DXVA_ConfigAlphaLoad dengan nilai 2, pembatasan berikut berlaku untuk dimensi RECTgraphicSourceRect:- atas dan kiri harus nol.
- hak harus sama dengan koordinat X Akhir dikurangi koordinat Mulai X dari DVD sebelumnya SET_DAREA DCCMD, ditambah 1, untuk menyesuaikan interpretasi persegi panjang yang berbeda seperti yang dijelaskan dalam catatan berikut di bagian Pembatasan Struktur RECT untuk GraphicDestinationRect .
- bawah harus sama dengan koordinat End Y dikurangi koordinat Start Y dari DVD sebelumnya SET_DAREA DCCMD, ditambah 1, untuk menyesuaikan interpretasi persegi panjang yang berbeda.
- kiri dan atas harus lebih besar dari atau sama dengan nol.
- kanan dan bawah harus lebih besar dari atau sama dengan kiri dan atas, masing-masing.
- Jika kanan sama dengan kiri atau atas sama dengan bawah, semua anggota RECT harus memiliki nilai nol, menunjukkan tidak ada penggunaan gambar grafis.
- kanan dan bawah tidak boleh melebihi lebar dan tinggi yang dialokasikan, masing-masing, dari gambar sumber grafis. Lebar dan tinggi yang dialokasikan masing-masing didefinisikan sebagai 720 dan 576 sampel, ketika anggota bConfigDataType DXVA_ConfigAlphaLoad sama dengan 2.
Pembatasan Struktur RECT untuk GraphicDestinationRect
Pembatasan berikut berlaku untuk dimensi RECT dari GraphicDestinationRect:- kiri dan atas harus lebih besar dari atau sama dengan nol, kecuali persyaratan ini bertentangan dengan kebutuhan untuk mengimbangi grafik dengan delapan sampel. Ini adalah kasus dalam skenario berikut:
- Pemuatan data alpha-blend menggunakan anggota bConfigDataTypedari DXVA_ConfigAlphaCombine dengan nilai 2 dan anggota bConfigGraphicResizing DXVA_ConfigAlphaCombine dengan nilai nol.
- Operasi diatur untuk DVD 704-Wide Non-Pan-Scan (lihat Dvd 704-Wide Non-Pan-Scan Example).
- Operasi diatur untuk DVD 352-wide (lihat Dvd 352-Wide Example).
- kanan dan bawah harus lebih besar dari atau sama dengan kiri dan atas, masing-masing. Jika kanan sama dengan kiri atau atas sama dengan bawah, maka semua anggota struktur RECT ini harus memiliki nilai nol dan GraphicSourceRect juga harus menentukan bahwa semua anggotanya memiliki nilai nol.
- Jika anggota bConfigBlendTypedari DXVA_ConfigAlphaCombine sama dengan nol, kanan dan bawah tidak boleh melebihi lebar dan tinggi yang dialokasikan, masing-masing, dari permukaan gambar tujuan yang tidak dikompresi.
- Jika anggota bConfigBlendType dari DXVA_ConfigAlphaCombine sama dengan 1, kanan dan bawah tidak boleh melebihi lebar dan tinggi yang dialokasikan, masing-masing, dari gambar grafis sumber.
- atas harus sama dengan koordinat Mulai Y dari DVD sebelumnya SET_DAREA DCCMD.
- kiri harus sama dengan koordinat Mulai X dari DVD sebelumnya terakhir SET_DAREA DCCMD atau ke nilai tersebut dikurangi 8. Untuk informasi selengkapnya, lihat Contoh Dvd 704-Wide Non-Pan-Scan dan Contoh Dvd 352-Wide.
- kanan harus sama dengan nilai kiri, ditambah koordinat X Akhir dikurangi koordinat Mulai X dari DVD sebelumnya SET_DAREA DCCMD, ditambah 1, untuk menyesuaikan interpretasi persegi panjang yang berbeda yang dijelaskan dalam catatan berikut.
- bawah harus sama dengan nilai atas ditambah koordinat Akhir Y dikurangi koordinat Start Y dari DVD sebelumnya SET_DAREA DCCMD, ditambah 1, untuk menyesuaikan interpretasi persegi panjang yang berbeda yang dijelaskan dalam catatan berikut.
Mengatur Nilai OutsideYUVcolor
Nilai untuk struktur OutsideYUVcolor adalah sebagai berikut:- Nilai OutsideYUVcolor.bSampleAlpha8 harus 255 jika area di luar PictureDestinationRect dihasilkan sebagai warna konstan untuk digunakan untuk penpaduan.
- Nilai OutsideYUVcolor.bSampleAlpha8 harus nol jika salah satu dari dua kasus berikut berlaku:
- Area di luar PictureDestinationRect tidak terpengaruh oleh campuran.
- Area di luar PictureDestinationRect tidak dapat digunakan (seperti yang ditunjukkan oleh anggota bConfigStayInPicDestRectAreaDXVA_ConfigAlphaCombine memiliki nilai 1).
Nilai OutsideYUVcolor.bSampleAlpha8 harus nol jika anggota bConfigStayInPicDestRectArea dari struktur DXVA_ConfigAlphaCombine sama dengan 1.
Jika OutsideYUVcolor.bSampleAlpha8 adalah nol, satu-satunya area permukaan tujuan yang dipengaruhi oleh campuran adalah bagian dalam PictureDestinationRect.
Jika OutsideYUVcolor.bSampleAlpha8 adalah 255, area mana pun dari permukaan tujuan yang berada di luar PictureDestinationRect tetapi dalam GraphicDestinationRect, dihasilkan dengan memadukan grafik dengan warna yang ditentukan dalam anggota nonalpha OutsideYUVcolor. Dalam hal ini, seluruh area yang dialokasikan dari permukaan tujuan yang berada di luar PictureDestinationRect dan GraphicDestinationRect diatur ke warna yang ditentukan dalam anggota nonalpha OutsideYUVcolor. Jika anggota bConfigBlendType dari struktur DXVA_ConfigAlphaCombine adalah 1, anggota OutsideYUVcolor diatur untuk menunjukkan perpaduan dengan hitam dengan menentukan bSampleAlpha8 = 255, bY_Value = 16, dan bCbValue = bCrValue = 128.
Ketika anggota bConfigBlendType dari struktur DXVA_ConfigAlphaCombine adalah 1 (campuran perangkat keras back-end), operasi penpaduan mungkin sedikit berbeda dari yang dijelaskan dalam referensi ini. Beberapa parameter pengubahan ukuran yang digunakan untuk memetakan gambar video dari gambar sumber ke ukuran gambar tujuan dapat diterapkan dengan cara yang dimodifikasi untuk memetakan gambar grafik ke lokasi yang tepat relatif terhadap gambar sumber. Namun, hasil campuran akan setara dengan hasil campuran yang diperoleh oleh perintah kombinasi alpha-blend dalam referensi ini.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | dxva.h (termasuk Dxva.h) |