Kelas CSource
[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.]
Kelas CSource adalah kelas dasar untuk menerapkan filter sumber. Filter yang berasal dari CSource berisi satu atau beberapa pin output yang berasal dari kelas CSourceStream . Setiap pin output membuat utas pekerja yang mendorong sampel media ke hilir.
Catatan
Kelas CSource dirancang untuk mendukung model pendorongan untuk aliran data. Kelas ini tidak disarankan untuk membuat filter pembaca file. Pembaca file harus mendukung model penarikan, melalui antarmuka IAsyncReader . Untuk informasi selengkapnya, lihat Aliran Data untuk Pengembang Filter.
Variabel Anggota yang Dilindungi | Deskripsi |
---|---|
m_iPins | Jumlah pin pada filter. |
m_paStreams | Array pin. |
m_cStateLock | Objek bagian penting yang melindungi status filter. |
Metode Publik | Deskripsi |
CSource | Metode konstruktor. |
~CSource | Metode destruktor. |
GetPinCount | Mengambil jumlah pin pada filter. |
GetPin | Mengambil pin. |
pStateLock | Mengambil penunjuk ke objek bagian penting filter. |
AddPin | Menambahkan pin output baru ke filter. |
RemovePin | Menghapus pin tertentu dari filter. |
FindPinNumber | Mengambil jumlah pin yang ditentukan pada filter. |
Metode IBaseFilter | Deskripsi |
FindPin | Mengambil pin dengan pengidentifikasi yang ditentukan. |
Keterangan
Untuk menerapkan pin output, lakukan hal berikut:
- Mendapatkan kelas dari CSourceStream.
- Ambil alih metode CSourceStream::GetMediaType dan mungkin metode CSourceStream::CheckMediaType , yang memvalidasi jenis media untuk pin.
- Terapkan metode CBaseOutputPin::D ecideBufferSize , yang mengembalikan persyaratan buffer pin.
- Terapkan metode CSourceStream::FillBuffer , yang mengisi buffer sampel media dengan data.
Untuk mengimplementasikan filter, lakukan hal berikut:
- Mendapatkan kelas dari CSource.
- Di konstruktor, buat satu atau beberapa pin output yang berasal dari CSourceStream. Pin secara otomatis menambahkan diri mereka ke filter dalam metode konstruktor mereka, dan menghapus diri mereka sendiri dalam metode destruktor mereka.
Untuk menyinkronkan status filter di antara beberapa utas, panggil metode CSource::p StateLock . Metode ini mengembalikan penunjuk ke bagian kritis status filter. Gunakan kelas CAutoLock untuk menahan bagian penting. Dari pin, Anda dapat mengakses pStateLock dari variabel anggota CBasePin::m_pFilter pin, sebagai berikut:
CAutoLock lock(m_pFilter->pStateLock());
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Pustaka |
|