Función KsPinGetTrailingEdgeStreamPointer (ks.h)

La función KsPinGetTrailingEdgeStreamPointer adquiere el puntero de flujo perimetral final para la cola asociada al pin especificado.

Sintaxis

KSDDKAPI PKSSTREAM_POINTER KsPinGetTrailingEdgeStreamPointer(
  [in] PKSPIN                 Pin,
  [in] KSSTREAM_POINTER_STATE State
);

Parámetros

[in] Pin

Puntero a la estructura KSPIN para cuya cola se va a devolver el puntero de flujo perimetral final.

[in] State

Este parámetro especifica el estado en el que se va a adquirir el puntero de flujo perimetral final. Puede ser uno de los siguientes:

KSSTREAM_POINTER_STATE_UNLOCKED

Adquiera el puntero de flujo de borde inicial, independientemente de si hace referencia a una trama de datos o no.

No se puede realizar ningún intento de acceder a los datos asociados al puntero hasta que el puntero esté bloqueado. Tenga en cuenta también que se pueden cancelar los fotogramas asociados a un puntero de flujo desbloqueado.

KSSTREAM_POINTER_STATE_LOCKED

Adquiera y bloquee el puntero de flujo de borde inicial. Si no hay ninguna trama de datos asociada al puntero de secuencia, devuelva NULL. Si se devuelve un puntero distinto denull , es un puntero de flujo bloqueado y tiene una trama de datos asociada. No se pueden cancelar los marcos asociados a un puntero de flujo bloqueado.

Valor devuelto

KsPinGetTrailingEdgeStreamPointer devuelve un puntero a una estructura de KSSTREAM_POINTER que representa el puntero de flujo perimetral final o NULL. Un valor devuelto de NULL puede indicar que no hay ningún borde final para la cola asociada al pin. En este caso, el descriptor de patillas probablemente no especifique que el pin debe tener un borde final distinto. Como alternativa, NULL puede indicar que no hay ninguna cola asociada con el pin. En este caso, el pin en cuestión no utiliza el mecanismo de transporte estándar. Un valor devuelto de NULL también puede indicar que se produjo un error al intentar bloquear el borde final. En otras palabras, no hay ninguna trama de datos asociada actualmente con el borde inicial.

Comentarios

El puntero de flujo de borde final es un puntero especial en el flujo de datos que existe si y solo si el descriptor de anclaje para el pin especifica un borde final distinto. Si este puntero existe, apunta a los datos más antiguos de la cola, a menos que un KsStreamPointerAdvanceXxx o una llamada KsStreamPointerUnlock lo haga específicamente. Los datos más antiguos pueden existir en la cola también si existen punteros de flujo clonados para fotogramas anteriores al que apunta el borde final.

Los marcos de datos que residen en la ventana entre el puntero de flujo de borde inicial y el puntero de flujo perimetral final tienen al menos un recuento de referencias y, por tanto, no abandonarán la cola y se completarán hasta que salgan de la ventana como resultado del avance del borde final. Tenga en cuenta que los marcos entre el borde inicial y el borde final no están bloqueados de forma predeterminada y, por lo tanto, se pueden cancelar.

KsPinGetTrailingEdgeStreamPointer es principalmente de uso en filtros centrados en patillas. Para obtener más información, consulte Procesamiento centrado en patillas y Procesamiento centrado en filtros.

KsPinGetTrailingEdgeStreamPointer no funcionará a menos que el descriptor de anclaje del pin especifique que la cola debe tener un borde final distinto estableciendo la marca de KSPIN_FLAG_DISTINCT_TRAILING_EDGE.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Microsoft Windows XP y sistemas operativos posteriores y DirectX 8.0 y versiones posteriores de DirectX.
Plataforma de destino Universal
Encabezado ks.h (incluya Ks.h)
Library Ks.lib
IRQL <=DISPATCH_LEVEL

Consulte también

KsPinGetLeadingEdgeStreamPointer

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerClone

KsStreamPointerDelete

KsStreamPointerLock

KsStreamPointerUnlock