Bagikan melalui


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
S_OK
Berhasil.
VFW_E_NOT_COMMITTED
Alokator dinonaktifkan.
VFW_E_TIMEOUT
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

Lihat juga

Kode Kesalahan dan Keberhasilan

Antarmuka IMemAllocator