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