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.]
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 |
|
Biblioteca |
|