Bagikan melalui


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

coutputqueue

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 COutputQueuedalam 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
Outputq.h (termasuk Streams.h)
Pustaka
Strmbase.lib (build ritel);
Strmbasd.lib (build debug)