Bagikan melalui


IMemInputPin::Metode penerimaan (strmif.h)

[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 Receive menerima sampel media berikutnya di aliran.

Sintaks

HRESULT Receive(
  [in] IMediaSample *pSample
);

Parameter

[in] pSample

Arahkan ke antarmuka IMediaSample sampel.

Mengembalikan nilai

Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang diperlihatkan dalam tabel berikut ini.

Menampilkan kode Deskripsi
S_OK
Berhasil.
S_FALSE
Sampel ditolak.
E_POINTER
Argumen penunjuk NULL.
VFW_E_INVALIDMEDIATYPE
Tipe media tidak valid.
VFW_E_RUNTIME_ERROR
Terjadi kesalahan run-time.
VFW_E_WRONG_STATE
Pin dihentikan.

Keterangan

Metode ini sinkron dan mungkin memblokir. Pin melakukan salah satu hal berikut:

  • Menolak sampel.
  • Segera mengembalikan dan memproses sampel dalam utas pekerja.
  • Memproses sampel sebelum kembali.
Dalam kasus terakhir, metode mungkin memblokir tanpa batas waktu. Jika ini mungkin terjadi, metode IMemInputPin::ReceiveCanBlock mengembalikan S_OK.

Jika pin menggunakan utas pekerja untuk memproses sampel, pin menyimpan jumlah referensi pada sampel. Bagaimanapun, pin output tidak dapat langsung menggunakan kembali sampel ini. Ini harus memanggil metode IMemAllocator::GetBuffer untuk mendapatkan sampel baru.

Jika metode ini mengembalikan S_FALSE atau kode kesalahan, filter upstram harus berhenti mengirim sampel hingga grafik berhenti atau menyelesaikan operasi flush. Alasan umum untuk nilai pengembalian S_FALSE meliputi:

  • Pin hilir memerah; artinya, ia menerima panggilan BeginFlush dan belum menerima panggilan EndFlush .
  • Filter hilir mendeteksi akhir aliran. (Lihat Pemberitahuan Akhir Stream.)

Persyaratan

Persyaratan Nilai
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 IMemInputPin