Kelas COutputQueue
[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 COutputQueue
mengimplementasikan antrean untuk mengirimkan sampel media.
Kelas ini memungkinkan pin output untuk mengirimkan sampel secara asinkron. Sampel ditempatkan pada antrean, dan utas pekerja mengirimkannya ke pin input. Antrean juga dapat menyimpan pesan kontrol yang menunjukkan segmen baru, pemberitahuan end-of-stream, atau operasi flush.
Untuk menggunakan kelas ini, buat objek COutputQueue untuk setiap pin output pada filter. Dalam metode konstruktor, tentukan pin input yang terhubung ke pin output tersebut. Dengan menggunakan kelas ini, pin output tidak memanggil metode langsung pada pin input. Sebaliknya, ini memanggil metode yang sesuai di , seperti yang ditunjukkan COutputQueue
dalam tabel berikut.
Metode Pin | Metode COutputQueue |
---|---|
IPin::BeginFlush | BeginFlush |
IPin::EndFlush | EndFlush |
IPin::EndOfStream | EOS |
IPin::NewSegment | NewSegment |
IMemInputPin::Receive | Receive |
IMemInputPin::ReceiveMultiple | ReceiveMultiple |
Secara opsional, Anda dapat mengonfigurasi COutputQueue
objek untuk mengirimkan sampel secara sinkron, tanpa utas pekerja. Objek juga dapat memutuskan pada waktu proses apakah akan menggunakan utas pekerja, berdasarkan karakteristik pin input. Untuk informasi selengkapnya, lihat COutputQueue::COutputQueue.
Variabel Anggota yang Dilindungi | Deskripsi |
---|---|
m_pPin | Arahkan ke antarmuka IPin pin input. |
m_pInputPin | Arahkan ke antarmuka IMemInputPin pin input. |
m_bBatchExact | Bendera yang menentukan apakah objek mengirimkan sampel dalam batch yang tepat. |
m_lBatchSize | Ukuran batch. |
m_List | Antrean sampel media. |
m_hSem | Tangani ke semaphore, yang digunakan oleh utas untuk menunggu sampel. |
m_evFlushComplete | Peristiwa yang memberi sinyal ketika operasi flush telah selesai. |
m_hThread | Tangani ke utas pekerja. |
m_ppSamples | Array sampel ukuran COutputQueue::m_lBatchSize. |
m_nBatched | Jumlah sampel yang saat ini di-batch dan menunggu pemrosesan. |
m_lWaiting | Bendera yang memiliki nilai bukan nol saat utas sedang menunggu sampel. |
m_bFlushing | Bendera yang menentukan apakah objek melakukan operasi flush. |
m_bTerminate | Bendera yang menentukan apakah utas harus dihentikan. |
m_bSendAnyway | Bendera untuk mengambil alih pemrosesan batch. |
m_hr | Nilai HRESULT yang menunjukkan apakah objek akan menerima sampel. |
m_hEventPop | Peristiwa yang diberi sinyal setiap kali objek menghapus sampel dari antrean. |
Metode yang Dilindungi | Deskripsi |
InitialThreadProc | Memanggil metode COutputQueue::ThreadProc saat utas dibuat. |
ThreadProc | Mengambil sampel dari antrean dan mengirimkannya ke pin input. |
Diantrekan | Menentukan apakah objek menggunakan utas pekerja untuk mengirimkan sampel. |
QueueSample | Mengantre sampel media atau pesan kontrol. |
IsSpecialSample | Menentukan apakah data yang diantrekan adalah pesan kontrol. |
FreeSamples | Membebaskan semua sampel yang tertunda. |
NotifyThread | Memberi tahu utas bahwa antrean berisi data. |
Metode Publik | Deskripsi |
COutputQueue | Metode konstruktor. |
~COutputQueue | Metode destruktor. |
BeginFlush | Memulai operasi flush. |
EndFlush | Mengakhiri operasi flush. |
EOS | Memberikan panggilan end-of-stream ke pin input. |
SendAnyway | Memberikan sampel yang tertunda. |
NewSegment | Memberikan segmen baru ke pin input. |
Receive | Mengirimkan sampel media ke pin input. |
ReceiveMultiple | Memberikan batch sampel media ke pin input. |
Mengatur ulang | Mengatur ulang objek sehingga dapat menerima lebih banyak data. |
IsIdle | Menentukan apakah objek sedang menunggu data. |
SetPopEvent | Menentukan peristiwa yang disinyalkan setiap kali objek menghapus sampel dari antrean. |
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Pustaka |
|