Bagikan melalui


Metode CBaseOutputPin.Deliver

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan 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 Audio/Video Capture 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 Deliver memberikan sampel media ke pin input yang terhubung.

Sintaks

virtual HRESULT Deliver(
   IMediaSample *pSample
);

Parameter

pSample

Arahkan ke antarmuka IMediaSample sampel.

Nilai kembali

Mengembalikan nilai HRESULT . Nilai yang mungkin menyertakan nilai yang tercantum dalam tabel berikut ini.

Menampilkan kode Deskripsi
S_OK
Berhasil.
VFW_E_NOT_CONNECTED
Pin tidak tersambung.

Keterangan

Metode ini memanggil metode IMemInputPin::Receive pada pin input. Terima dapat memblokir jika metode IMemInputPin::ReceiveCanBlock mengembalikan S_OK.

Rilis sampel setelah memanggil metode ini. Pin input mungkin menyimpan jumlah referensi pada sampel, jadi jangan gunakan kembali sampel. Selalu panggil metode CBaseOutputPin::GetDeliveryBuffer untuk mendapatkan sampel baru.

Tahan bagian penting filter sebelum memanggil metode ini. Jika tidak, pin mungkin terputus selama panggilan metode. Jika filter menggunakan utas pekerja untuk mengirimkan sampel, tahan bagian penting saat filter siap untuk mengirimkan sampel. Jika tidak, Anda dapat menahan bagian penting di metode IMemInputPin::Receive filter filter, tempat filter memproses sampel.

Utas pekerja dapat membuat potensi kebuntuan. Saat utas menahan bagian penting, alur mungkin menunggu perubahan status di filter. Pada saat yang sama, perubahan status mungkin menunggu utas selesai. Untuk mencegah hal ini, kode perubahan status harus memberi sinyal peristiwa yang mengakhiri utas, lalu menunggu utas selesai sinyal.

Persyaratan

Persyaratan Nilai
Header
Amfilter.h (termasuk Streams.h)
Pustaka
Strmbase.lib (build ritel);
Strmbasd.lib (build debug)

Lihat juga

Kelas CBaseOutputPin