Metode ISampleGrabber::GetCurrentBuffer

[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.]

Catatan

[Tidak digunakan lagi. API ini bisa dihapus dari rilis Windows mendatang.]

 

Metode GetCurrentBuffer mengambil salinan buffer yang terkait dengan sampel terbaru.

Sintaks

HRESULT GetCurrentBuffer(
  [in, out] long *pBufferSize,
  [out]     long *pBuffer
);

Parameter

pBufferSize [masuk, keluar]

Penunjuk ke ukuran buffer. Jika pBufferADALAH NULL, parameter ini menerima ukuran buffer yang diperlukan, dalam byte. Jika pBuffer bukan NULL, atur parameter ini sama dengan ukuran buffer, dalam byte. Pada output, parameter menerima jumlah byte yang disalin ke dalam buffer. Nilai ini mungkin lebih kecil dari ukuran buffer.

pBuffer [keluar]

Penunjuk ke array byte ukuran pBufferSize, atau NULL. Jika parameter ini bukan NULL, buffer saat ini disalin ke dalam array. Jika parameter ini NULL, parameter pBufferSize menerima ukuran buffer yang diperlukan.

Mengembalikan nilai

Mengembalikan salah satu nilai berikut.

Menampilkan kode Deskripsi
E_INVALIDARG
Sampel tidak di-buffer. Panggil ISampleGrabber::SetBufferSamples.
E_OUTOFMEMORY
Buffer yang ditentukan tidak cukup besar.
E_POINTER
Argumen pointer NULL.
S_OK
Berhasil.
VFW_E_NOT_CONNECTED
Filter tidak tersambung.
VFW_E_WRONG_STATE
Filter belum menerima sampel apa pun. Untuk mengirimkan sampel, jalankan atau jeda grafik.

 

Keterangan

Untuk mengaktifkan buffering, panggil ISampleGrabber::SetBufferSamples dengan nilai TRUE.

Panggil metode ini dua kali. Pada panggilan pertama, atur pBuffer ke NULL. Ukuran buffer dikembalikan dalam pBufferSize. Kemudian alokasikan array dan panggil metode lagi. Pada panggilan kedua, teruskan ukuran array di pBufferSize, dan teruskan alamat array di pBuffer. Jika array tidak cukup besar, metode akan mengembalikan E_OUTOFMEMORY.

Parameter pBuffer diketik sebagai penunjuk panjang , tetapi konten buffer bergantung pada format data. Panggil ISampleGrabber::GetConnectedMediaType untuk mendapatkan jenis media format.

Jangan panggil metode ini saat grafik filter sedang berjalan. Saat grafik filter berjalan, filter Sample Grabber menimpa konten buffer setiap kali menerima sampel baru. Cara terbaik untuk menggunakan metode ini adalah dengan menggunakan "mode satu bidikan", yang menghentikan grafik setelah menerima sampel pertama. Untuk mengatur mode satu bidikan, panggil ISampleGrabber::SetOneShot.

Filter tidak menyangga sampel pra-pendaftaran, atau sampel di mana anggota dwStreamId dari struktur AM_SAMPLE2_PROPERTIES adalah apa pun selain AM_STREAM_MEDIA.

Catatan

File header Qedit.h tidak kompatibel dengan header Direct3D yang lebih baru dari versi 7.

 

Catatan

Untuk mendapatkan Qedit.h, unduh Microsoft Windows SDK Update untuk Windows Vista dan .NET Framework 3.0. Qedit.h tidak tersedia di Microsoft Windows SDK untuk Windows 7 dan .NET Framework 3.5 Service Pack 1.

 

Persyaratan

Persyaratan Nilai
Header
Qedit.h
Pustaka
Strmiids.lib

Lihat juga

Menggunakan Sampel Grabber

Antarmuka ISampleGrabber