Kelas CBaseStreamControl
[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.]
Kelas ini mengimplementasikan antarmuka IAMStreamControl untuk pin input dan output. Ini memberikan kontrol atas memulai dan menghentikan pin individu pada filter. Pin yang mendukung IAMStreamControl harus mewarisi dari kelas dasar ini. Berikut ini adalah deklarasi umum untuk pin input:
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
Pastikan untuk mengganti NonDelegatingQueryInteface untuk mengekspos IAMStreamControl. Untuk informasi selengkapnya, lihat Cara Menerapkan IUnknown.
Metode Publik | Deskripsi |
---|---|
CBaseStreamControl | Metode konstruktor. |
~CBaseStreamControl | Metode destruktor. |
CheckStreamState | Menentukan apakah sampel media harus dikirimkan atau dibuang. |
Pembilasan | Memberi tahu kelas dasar bahwa pin telah dimulai atau berhenti dibersihkan. |
NotifyFilterState | Memberi tahu pin saat status filter berubah. |
SetFilterGraph | Menentukan sink peristiwa untuk peristiwa kontrol aliran. |
SetSyncSource | Memberi tahu kelas dasar jam referensi saat ini. |
Metode IAMStreamControl | Deskripsi |
GetInfo | Mengambil informasi tentang pengaturan kontrol aliran saat ini, termasuk waktu mulai dan berhenti. |
StartAt | Menginformasikan pin kapan harus mulai mengirimkan data. |
StopAt | Menginformasikan pin kapan harus berhenti mengirimkan data. |
Keterangan
Kelas ini memerlukan pin dan filter pemilik untuk memberi tahu kelas ketika berbagai peristiwa terjadi, seperti filter yang bergabung dengan grafik atau menerima jam referensi baru. Anda harus memanggil metode kelas berikut:
- Dalam metode IMediaFilter::SetSyncSource filter, panggil metode CBaseStreamControl::SetSyncSource . Metode ini memberi tahu kelas jam referensi saat ini.
- Dalam metode CBaseFilter::JoinFilterGraph filter, panggil metode CBaseStreamControl::SetFilterGraph . Metode ini memberi kelas penunjuk ke Filter Graph Manager, sehingga kelas dapat mengirim peristiwa kontrol aliran yang tepat.
- Setiap kali filter berubah status (untuk menjalankan, menjeda, atau berhenti), panggil metode CBaseStreamControl::NotifyFilterState .
- Dalam metode IPin::BeginFlush dan IPin::EndFlush pin, panggil metode CBaseStreamControl::Flushing .
Kelas CBaseStreamControl
menggunakan jam referensi grafik filter untuk menentukan sampel mana yang harus dikirimkan filter, dan mana yang harus dibuang. Dalam metode IMemInputPin::Receive pin Anda, panggil metode CBaseStreamControl::CheckStreamState dengan pointer ke sampel media masuk. Jika metode mengembalikan nilai STREAM_FLOWING, kirim sampel ke hilir. Jika tidak, buang saja.
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Pustaka |
|