Classe COutputQueue

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 os métodos correspondentes, COutputQueueconforme 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 entregar 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á esperando por 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 Sinalizar 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 uma mensagem de controle ou exemplo de mídia.
IsSpecialSample Determina se os dados enfileirados são uma mensagem de controle.
FreeSamples Libera todos os exemplos pendentes.
NotifyThread Notifica o thread que a fila contém dados.
Métodos públicos Descrição
Coutputqueue Método 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 amostras pendentes.
Newsegment Fornece um novo segmento para o pino de entrada.
Receber Fornece um exemplo de mídia para o pino de entrada.
ReceiveMultiple Fornece um lote de amostras de mídia para o pino 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 Fluxos.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)