IMemAllocator::GetBuffer 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 GetBuffer mengambil sampel media yang berisi buffer kosong.
Sintaks
HRESULT GetBuffer(
[out] IMediaSample **ppBuffer,
[in] REFERENCE_TIME *pStartTime,
[in] REFERENCE_TIME *pEndTime,
[in] DWORD dwFlags
);
Parameter
[out] ppBuffer
Menerima penunjuk ke antarmuka IMediaSample buffer. Pemanggil harus merilis antarmuka.
[in] pStartTime
Arahkan ke waktu mulai sampel, atau NULL.
[in] pEndTime
Arahkan ke waktu akhir sampel, atau NULL.
[in] dwFlags
Kombinasi bitwise nol atau lebih dari bendera berikut:
Bendera | Deskripsi |
---|---|
AM_GBF_NOTASYNCPOINT | Sampel ini bukan titik sinkronisasi. Perubahan format dinamis tidak diperbolehkan pada sampel ini. Ketika dipanggil pada Overlay Mixer atau VMR, bendera ini menyiratkan bahwa buffer yang dikembalikan akan berisi gambar yang identik dengan gambar terakhir yang dikirimkan. |
AM_GBF_PREVFRAMESKIPPED | Sampel ini adalah yang pertama setelah penghentian. (Hanya perender video yang menggunakan bendera ini.) |
AM_GBF_NOWAIT | Jangan menunggu buffer tersedia. |
AM_GBF_NODDSURFACELOCK | Digunakan dengan Filter Perender Pencampur Video 7 untuk meminta permukaan DirectDraw yang tidak terkunci. Untuk informasi selengkapnya, lihat Bekerja dengan Target Render Direct3D. |
Nilai kembali
Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang diperlihatkan dalam tabel berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil. |
|
Alokator dinonaktifkan. |
|
Waktu habis. |
Keterangan
Secara default, metode ini memblokir hingga sampel gratis tersedia atau alokator dinonaktifkan. Jika penelepon menentukan bendera AM_GBF_NOWAIT dan tidak ada sampel yang tersedia, alokator dapat segera kembali dengan nilai pengembalian VFW_E_TIMEOUT. Namun, alokator tidak diperlukan untuk mendukung bendera ini.
Sampel yang dikembalikan dalam ppBuffer memiliki penunjuk buffer yang valid. Pemanggil bertanggung jawab untuk mengatur properti lain pada sampel, seperti stempel waktu, waktu media, atau properti titik sinkronisasi. (Untuk informasi selengkapnya, lihat IMediaSample.)
Parameter pStartTime dan pEndTime tidak diterapkan ke sampel. Alokator mungkin menggunakan nilai-nilai ini untuk menentukan buffer mana yang diambilnya. Misalnya, filter Video Renderer menggunakan nilai-nilai ini untuk menyinkronkan peralihan antara permukaan DirectDraw. Untuk mengatur stempel waktu pada sampel, panggil metode IMediaSample::SetTime .
Anda harus memanggil metode IMemAllocator::Commit sebelum memanggil metode ini. Metode ini gagal setelah metode IMemAllocator::D ecommit dipanggil.
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | strmif.h (termasuk Dshow.h) |
Pustaka | Strmiids.lib |