Kelas CPullPin

[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.]

hierarki kelas cpullpin

Kelas ini CPullPin menyediakan dukungan untuk pin input yang menarik data melalui antarmuka IAsyncReader . Gunakan kelas ini jika Anda menerapkan filter yang menggunakan model penarikan untuk meminta data dari filter upstream. Untuk informasi selengkapnya, lihat Aliran Data di Grafik Filter dan Model Penarikan.

Kelas ini tidak berasal dari CBasePin atau mengimplementasikan antarmuka IPin , dan beberapa nama metode berbenturan dengan IPin, sehingga paling baik digunakan sebagai objek pembantu di dalam pin Anda. Untuk menggunakan kelas ini, lakukan hal berikut:

  1. Dapatkan kelas pembantu dari CPullPin, dan dapatkan kelas pin input dari CBasePin. Nyatakan instans CPullPin objek sebagai variabel anggota kelas pin.
  2. Ambil alih metode CBasePin::CheckConnect untuk memanggil CPullPin::Connect. Metode ini meminta pin lain untuk IAsyncReader.
  3. Ambil alih metode CBasePin::BreakConnect untuk memanggil CPullPin::D isconnect.
  4. Ambil alih metode CBasePin::Active untuk memanggil CPullPin::Active. Metode ini memulai utas pekerja yang menarik sampel dari filter upstram. Saat pin tersambung, Anda dapat menentukan apakah Anda ingin utas pekerja membuat permintaan baca asinkron atau sinkron.
  5. Ambil alih metode CBasePin::Inactive untuk memanggil CPullPin::Inactive. Metode ini mematikan utas pekerja.
  6. Terapkan metode CPullPin::Receive virtual murni untuk memproses sampel masuk dan mengirimkannya ke hilir.
  7. Untuk mengatur posisi berhenti dan mulai, atau untuk mencari aliran, panggil metode CPullPin::Seek . Metode ini menjeda utas pekerja dan menghapus grafik filter.
  8. Terapkan metode CPullPin virtual murni::EndOfStream, CPullPin::BeginFlush, dan CPullPin::EndFlush , seperti yang dijelaskan dalam keterangan untuk metode tersebut.
  9. Terapkan metode CPullPin::OnError virtual murni untuk menangani kesalahan streaming.
Variabel Anggota Publik Deskripsi
m_pAlloc Arahkan ke antarmuka IMemAllocator dari alokator memori.
Metode Publik Deskripsi
Aktif Membuat utas pekerja yang menarik data dari pin output.
Rata Bawah Memotong nilai ke batas perataan yang ditentukan.
AlignUp Membulatkan nilai hingga batas perataan tertentu.
Menghubungkan Menyelesaikan koneksi ke pin output.
CPullPin Metode konstruktor.
~CPullPin Metode destruktor. Virtual.
DecideAllocator Menegosiasikan alokator dengan pin output. Virtual.
Putuskan sambungan Paruh koneksi dengan pin output.
Durasi Mengambil durasi aliran.
GetReader Mengembalikan penunjuk ke antarmuka IAsyncReader pin output.
Tidak aktif Mematikan utas pekerja yang menarik data dari pin output.
Seek Mengatur posisi mulai dan berhenti aliran.
Metode Virtual Murni Deskripsi
BeginFlush Menginformasikan filter pemilik untuk membersihkan filter hilir.
EndFlush Menginformasikan filter pemilik untuk mengakhiri operasi flush.
EndOfStream Dipanggil setelah objek mengirimkan sampel terakhir.
OnError Dipanggil jika terjadi kesalahan selama streaming.
Receive Dipanggil ketika objek menerima sampel media dari pin output.

Persyaratan

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