COutputQueue (clase)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

coutputqueue

La COutputQueue clase implementa una cola para entregar ejemplos multimedia.

Esta clase permite que un pin de salida entregue muestras de forma asincrónica. Los ejemplos se colocan en una cola y un subproceso de trabajo los entrega al pin de entrada. La cola también puede contener mensajes de control que indican un nuevo segmento, una notificación de fin de secuencia o una operación de vaciado.

Para usar esta clase, cree un objeto COutputQueue para cada pin de salida del filtro. En el método constructor, especifique el pin de entrada conectado a ese pin de salida. Con esta clase, el pin de salida no llama a métodos directamente en el pin de entrada. En su lugar, llama a los métodos correspondientes en COutputQueue, como se muestra en la tabla siguiente.

Pin (método) COutputQueue (método)
IPin::BeginFlush BeginFlush
IPin::EndFlush EndFlush
IPin::EndOfStream EOS
IPin::NewSegment NewSegment
IMemInputPin::Receive Recepción
IMemInputPin::ReceiveMultiple ReceiveMultiple

Opcionalmente, puede configurar el COutputQueue objeto para entregar muestras de forma sincrónica, sin un subproceso de trabajo. El objeto también puede decidir en tiempo de ejecución si se debe usar un subproceso de trabajo, en función de las características del pin de entrada. Para obtener más información, vea COutputQueue::COutputQueue.

Variables miembro protegidas Descripción
m_pPin Puntero a la interfaz IPin del pin de entrada.
m_pInputPin Puntero a la interfaz IMemInputPin del pin de entrada.
m_bBatchExact Marca que especifica si el objeto entrega muestras en lotes exactos.
m_lBatchSize Tamaño del lote.
m_List Cola de ejemplo multimedia.
m_hSem Identificador de un semáforo, usado por el subproceso para esperar ejemplos.
m_evFlushComplete Evento que indica cuándo ha finalizado una operación de vaciado.
m_hThread Identificador del subproceso de trabajo.
m_ppSamples Matriz de ejemplos de tamaño COutputQueue::m_lBatchSize.
m_nBatched Número de muestras actualmente por lotes y en espera de procesamiento.
m_lWaiting Marca que tiene un valor distinto de cero cuando el subproceso está esperando un ejemplo.
m_bFlushing Marca que especifica si el objeto está realizando una operación de vaciado.
m_bTerminate Marca que especifica si el subproceso debe finalizar.
m_bSendAnyway Marca para invalidar el procesamiento por lotes.
m_hr Valor HRESULT que indica si el objeto aceptará muestras.
m_hEventPop Evento que se señala siempre que el objeto quita una muestra de la cola.
Métodos protegidos Descripción
InitialThreadProc Llama al método COutputQueue::ThreadProc cuando se crea el subproceso.
ThreadProc Recupera ejemplos de la cola y los entrega al pin de entrada.
IsQueued Determina si el objeto usa un subproceso de trabajo para entregar muestras.
QueueSample Pone en cola un mensaje de control o ejemplo multimedia.
IsSpecialSample Determina si los datos en cola son un mensaje de control.
FreeSamples Libera todas las muestras pendientes.
NotifyThread Notifica al subproceso que la cola contiene datos.
Métodos públicos Descripción
COutputQueue Método constructor.
~COutputQueue Método de destructor.
BeginFlush Comienza una operación de vaciado.
EndFlush Finaliza una operación de vaciado.
EOS Entrega una llamada de fin de secuencia al pin de entrada.
SendAnyway Entrega las muestras pendientes.
NewSegment Entrega un nuevo segmento al pin de entrada.
Recepción Entrega un ejemplo multimedia al pin de entrada.
ReceiveMultiple Entrega un lote de muestras multimedia al pin de entrada.
Restablecer Restablece el objeto para que pueda recibir más datos.
IsIdle Determina si el objeto está esperando datos.
SetPopEvent Especifica un evento que se señala cada vez que el objeto quita una muestra de la cola.

Requisitos

Requisito Value
Encabezado
Outputq.h (include Streams.h)
Biblioteca
Strmbase.lib (compilaciones comerciales);
Strmbasd.lib (compilaciones de depuración)