Metode CSourceStream.DoBufferProcessingLoop

[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 DoBufferProcessingLoop menghasilkan data media dan mengirimkannya ke pin input hilir.

Sintaks

virtual HRESULT DoBufferProcessingLoop();

Parameter

Metode ini tidak memiliki parameter.

Nilai kembali

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

Menampilkan kode Deskripsi
S_FALSE
Utas menerima permintaan berhenti.
S_OK
Aliran berakhir, atau filter hilir tidak menerima sampel.

Keterangan

Metode ini mengimplementasikan perulangan utama yang memproses data dan mengirimkannya ke hilir. Setiap kali melalui perulangan, metode mengambil sampel media kosong dari alokator. Ini meneruskan sampel ke metode CSourceStream::FillBuffer . Metode FillBuffer , yang harus diterapkan kelas turunan, menghasilkan data media dan menempatkannya di buffer sampel.

Perulangan berakhir ketika salah satu hal berikut ini terjadi:

  • Metode IMemInputPin::Receive pin input menolak sampel.
  • Metode FillBuffer mengembalikan S_FALSE, menunjukkan akhir aliran, atau mengembalikan kode kesalahan.
  • Utas menerima permintaan CSourceStream::Stop .

Metode ini DoBufferProcessingLoop menangani pemberitahuan akhir aliran. Jika terjadi kesalahan, kesalahan akan mengirimkan peristiwa EC_ERRORABORT ke manajer grafik filter.

Persyaratan

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

Lihat juga

Kelas CSourceStream