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