Classe 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, 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 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 |
|
Biblioteca |
|