Metode CBaseAllocator.GetBuffer
[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 mengambil GetBuffer
sampel media yang berisi buffer. Metode ini mengimplementasikan metode IMemAllocator::GetBuffer .
Sintaks
HRESULT GetBuffer(
IMediaSample **ppBuffer,
REFERENCE_TIME *pStartTime,
REFERENCE_TIME *pEndTime,
DWORD dwFlags
);
Parameter
-
ppBuffer
-
Menerima penunjuk ke antarmuka IMediaSample buffer. Pemanggil harus merilis antarmuka.
-
pStartTime
-
Arahkan ke waktu mulai sampel.
-
pEndTime
-
Penunjuk ke waktu akhir sampel.
-
dwFlags
-
Kombinasi bitwise dari nol atau lebih bendera. Kelas dasar mendukung bendera berikut.
Nilai Makna - AM_GBF_NOWAIT
Jangan menunggu buffer tersedia.
Nilai kembali
Mengembalikan salah satu nilai HRESULT berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil. |
|
Alokator tidak diterapkan. |
|
Waktu habis. |
Keterangan
Kecuali pemanggil menentukan bendera AM_GBF_NOWAIT di dwFlags, metode ini memblokir hingga sampel berikutnya tersedia.
Sampel media yang diambil memiliki penunjuk yang valid ke buffer yang dialokasikan. Pemanggil bertanggung jawab untuk mengatur properti lain pada sampel, seperti stempel waktu, waktu media, atau properti titik sinkronisasi. Untuk informasi selengkapnya, lihat IMediaSample.
Di kelas dasar, parameter pStartTime dan pEndTime diabaikan. Kelas turunan dapat menggunakan nilai-nilai ini. Misalnya, alokator untuk filter Video Renderer menggunakan nilai-nilai ini untuk menyinkronkan peralihan antara permukaan DirectDraw.
Jika metode perlu menunggu sampel, metode ini menambah jumlah objek tunggu (CBaseAllocator::m_lCount) dan memanggil fungsi WaitForSingleObject pada semaphore (CBaseAllocator::m_hSem). Ketika sampel tersedia, sampel memanggil metode CBaseAllocator::ReleaseBuffer pada alokator, yang meningkatkan jumlah semaphore dengan m_lCount (sehingga melepaskan utas tunggu) dan mengatur m_lCount kembali ke nol.
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Pustaka |
|