Classe COutputQueue

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

coutputqueue

La COutputQueue classe implementa una coda per distribuire esempi multimediali.

Questa classe consente a un pin di output di fornire esempi in modo asincrono. Gli esempi vengono inseriti in una coda e un thread di lavoro li recapita al pin di input. La coda può anche contenere messaggi di controllo che indicano un nuovo segmento, una notifica end-of-stream o un'operazione di scaricamento.

Per usare questa classe, creare un oggetto COutputQueue per ogni pin di output nel filtro. Nel metodo del costruttore specificare il pin di input connesso al pin di output. Usando questa classe, il pin di output non chiama i metodi direttamente nel pin di input. Chiama invece i metodi corrispondenti in COutputQueue, come illustrato nella tabella seguente.

Metodo Pin Metodo COutputQueue
IPin::BeginFlush BeginFlush
IPin::EndFlush EndFlush
IPin::EndOfStream EOS
IPin::NewSegment NewSegment
IMemInputPin::Receive Ricevere
IMemInputPin::ReceiveMultiple ReceiveMultiple

Facoltativamente, è possibile configurare l'oggetto COutputQueue per distribuire esempi in modo sincrono, senza un thread di lavoro. L'oggetto può anche decidere in fase di esecuzione se usare un thread di lavoro, in base alle caratteristiche del pin di input. Per altre informazioni, vedere COutputQueue::COutputQueue.

Variabili membro protette Descrizione
m_pPin Puntatore all'interfaccia IPin del pin di input.
m_pInputPin Puntatore all'interfaccia IMemInputPin del pin di input.
m_bBatchExact Contrassegno che specifica se l'oggetto fornisce esempi in batch esatti.
m_lBatchSize Dimensioni batch.
m_List Coda di esempio multimediale.
m_hSem Gestire un semaforo, usato dal thread per attendere gli esempi.
m_evFlushComplete Evento che segnala al termine di un'operazione di scaricamento.
m_hThread Gestire il thread di lavoro.
m_ppSamples Matrice di esempi di dimensioni COutputQueue::m_lBatchSize.
m_nBatched Numero di campioni attualmente in batch e in attesa di elaborazione.
m_lWaiting Contrassegno con valore diverso da zero quando il thread è in attesa di un esempio.
m_bFlushing Flag che specifica se l'oggetto esegue un'operazione di scaricamento.
m_bTerminate Flag che specifica se il thread deve terminare.
m_bSendAnyway Contrassegnare l'override dell'elaborazione batch.
m_hr Valore HRESULT che indica se l'oggetto accetterà esempi.
m_hEventPop Evento segnalato ogni volta che l'oggetto rimuove un esempio dalla coda.
Metodi protetti Descrizione
InitialThreadProc Chiama il metodo COutputQueue::ThreadProc quando viene creato il thread.
Threadproc Recupera esempi dalla coda e li recapita al pin di input.
IsQueued Determina se l'oggetto usa un thread di lavoro per fornire esempi.
QueueSample Accoda un esempio multimediale o un messaggio di controllo.
IsSpecialSample Determina se i dati in coda sono un messaggio di controllo.
FreeSamples Libera tutti gli esempi in sospeso.
NotificaThread Notifica al thread che la coda contiene dati.
Metodi pubblici Descrizione
COutputQueue Metodo costruttore.
~COutputQueue Metodo distruttore.
BeginFlush Avvia un'operazione di scaricamento.
EndFlush Termina un'operazione di scaricamento.
EOS Recapita una chiamata end-of-stream al pin di input.
SendAnyway Fornisce tutti gli esempi in sospeso.
NewSegment Recapita un nuovo segmento al pin di input.
Ricevere Recapita un campione multimediale al pin di input.
ReceiveMultiple Recapita un batch di campioni multimediali al pin di input.
Reimpostazione Reimposta l'oggetto in modo che possa ricevere più dati.
IsIdle Determina se l'oggetto è in attesa di dati.
SetPopEvent Specifica un evento segnalato ogni volta che l'oggetto rimuove un campione dalla coda.

Requisiti

Requisito Valore
Intestazione
Outputq.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)