Classe COutputQueue

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Coutputqueue

A COutputQueue classe implementa uma fila para fornecer exemplos de mídia.

Essa classe permite que um pino de saída forneça amostras de forma assíncrona. Os exemplos são colocados em uma fila e um thread de trabalho os entrega ao pino de entrada. A fila também pode conter mensagens de controle que indicam um novo segmento, uma notificação de fim de fluxo ou uma operação de liberação.

Para usar essa classe, crie um objeto COutputQueue para cada pino de saída no filtro. No método de construtor, especifique o pino de entrada conectado a esse pino de saída. Usando essa classe, o pino de saída não chama métodos diretamente no pino de entrada. Em vez disso, ele chama métodos correspondentes em COutputQueue, conforme mostrado na tabela a seguir.

Método Pin Método COutputQueue
IPin::BeginFlush Beginflush
IPin::EndFlush Endflush
IPin::EndOfStream EOS
IPin::NewSegment Newsegment
IMemInputPin::Receive Receber
IMemInputPin::ReceiveMultiple ReceiveMultiple

Opcionalmente, você pode configurar o COutputQueue objeto para fornecer amostras de forma síncrona, sem um thread de trabalho. O objeto também pode decidir em tempo de execução se deseja usar um thread de trabalho, com base nas características do pino de entrada. Para obter mais informações, consulte COutputQueue::COutputQueue.

Variáveis de membro protegidas Descrição
m_pPin Ponteiro para a interface IPin do pino de entrada.
m_pInputPin Ponteiro para a interface IMemInputPin do pino de entrada.
m_bBatchExact Sinalizador que especifica se o objeto fornece amostras em lotes exatos.
m_lBatchSize Tamanho do lote.
m_List Fila de exemplo de mídia.
m_hSem Manipule para um semáforo, usado pelo thread para aguardar amostras.
m_evFlushComplete Evento que sinaliza quando uma operação de liberação é concluída.
m_hThread Manipule para o thread de trabalho.
m_ppSamples Matriz de exemplos de tamanho COutputQueue::m_lBatchSize.
m_nBatched Número de amostras atualmente em lote e aguardando processamento.
m_lWaiting Sinalizador que tem um valor diferente de zero quando o thread está aguardando um exemplo.
m_bFlushing Sinalizador que especifica se o objeto está executando uma operação de liberação.
m_bTerminate Sinalizador que especifica se o thread deve ser encerrado.
m_bSendAnyway Sinalizador para substituir o processamento em lote.
m_hr Valor HRESULT que indica se o objeto aceitará amostras.
m_hEventPop Evento que é sinalizado sempre que o objeto remove um exemplo da fila.
Métodos Protegidos Descrição
InitialThreadProc Chama o método COutputQueue::ThreadProc quando o thread é criado.
Threadproc Recupera exemplos da fila e os entrega ao pino de entrada.
IsQueued Determina se o objeto está usando um thread de trabalho para fornecer amostras.
QueueSample Enfileira um exemplo de mídia ou uma mensagem de controle.
IsSpecialSample Determina se os dados enfileirados são uma mensagem de controle.
FreeSamples Libera todos os exemplos pendentes.
NotifyThread Notifica o thread de que a fila contém dados.
Métodos públicos Descrição
Coutputqueue Método de construtor.
~Coutputqueue Método de destruidor.
Beginflush Inicia uma operação de liberação.
Endflush Encerra uma operação de liberação.
EOS Fornece uma chamada de fim de fluxo para o pino de entrada.
SendAnyway Fornece todos os exemplos pendentes.
Newsegment Entrega um novo segmento ao pino de entrada.
Receber Fornece um exemplo de mídia para o pino de entrada.
ReceiveMultiple Fornece um lote de exemplos de mídia para o pin de entrada.
Redefinir Redefine o objeto para que ele possa receber mais dados.
Isidle Determina se o objeto está aguardando dados.
SetPopEvent Especifica um evento que é sinalizado sempre que o objeto remove um exemplo da fila.

Requisitos

Requisito Valor
parâmetro
Outputq.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)