Bagikan melalui


IVMRSurfaceAllocator::AllocateSurface method (strmif.h)

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine , dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Metode ini AllocateSurface mengalokasikan permukaan DirectDraw.

Sintaks

HRESULT AllocateSurface(
  [in]  DWORD_PTR            dwUserID,
  [in]  VMRALLOCATIONINFO    *lpAllocInfo,
  [in]  DWORD                *lpdwActualBuffers,
  [out] LPDIRECTDRAWSURFACE7 *lplpSurface
);

Parameter

[in] dwUserID

Cookie DWORD_PTR yang ditentukan aplikasi yang secara unik mengidentifikasi instans VMR ini untuk digunakan dalam skenario ketika satu instans penyaji alokator digunakan dengan beberapa instans VMR.

[in] lpAllocInfo

Menentukan struktur VMRALLOCATIONINFO . Lihat Keterangan.

[in] lpdwActualBuffers

[out] Pada input, parameter ini digunakan untuk meminta jumlah buffer yang diinginkan. Pada output, ia menerima jumlah buffer aktual yang dibuat.

[out] lplpSurface

Alamat pointer yang menerima permukaan Direct3D.

Nilai kembali

Jika metode berhasil, metode akan mengembalikan S_OK. Jika gagal, kode kesalahan akan dikembalikan.

Menampilkan kode Deskripsi
E_POINTER
Salah satu pointer tidak valid.
E_INVALIDARG
Dalam dwFlags, AMAP_3D_TARGET dikombinasikan dengan AMAP_FORCE_SYSMEM atau AMAP_ALLOW_SYSMEM.
E_FAIL
Satu atau beberapa anggota struktur BITMAPINFOHEADER yang ditentukan oleh lpAllocInfo-lpHdr> salah.

Keterangan

Sebelum memanggil AllocateSurface secara eksplisit, aplikasi klien harus memanggil IVMRSurfaceAllocator::FreeSurface untuk memastikan bahwa buffer depan permukaan decoding DirectDraw ADALAH NULL. Jika bukan NULL pada saat aplikasi memanggil AllocateSurface, versi debug quartz.dll akan menyebabkan pernyataan.

Saat menerapkan metode ini dalam alokator-presenter kustom, Anda harus memeriksa nilai lpAllocInfo-lpHdr-biBitCount>>. Jika biBitCount adalah nol, maka Anda harus mengaturnya ke kedalaman piksel untuk tampilan saat ini. Jika BiBitCount dibiarkan nol, alokasi permukaan akan gagal dan VMR baru (default) akan dibuat.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP dengan SP1 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header strmif.h (termasuk Dshow.h)
Pustaka Strmiids.lib

Lihat juga

Kode Kesalahan dan Keberhasilan

Antarmuka IVMRSurfaceAllocator

Menggunakan Video Mixing Renderer