estructura DXVAHDDDI_STREAM_DATA (d3dumddi.h)

La estructura DXVAHDDDI_STREAM_DATA describe un flujo de entrada que se procesa.

Sintaxis

typedef struct _DXVAHDDDI_STREAM_DATA {
  [in] BOOL              Enable;
  [in] UINT              OutputIndex;
  [in] UINT              InputFrameOrField;
  [in] UINT              PastFrames;
  [in] UINT              FutureFrames;
  [in] DXVAHDDDI_SURFACE *pPastSurfaces;
  [in] DXVAHDDDI_SURFACE InputSurface;
  [in] DXVAHDDDI_SURFACE *pFutureSurfaces;
} DXVAHDDDI_STREAM_DATA;

Miembros

[in] Enable

Valor booleano que especifica si el flujo de entrada está habilitado. El número de flujos de entrada que el tiempo de ejecución habilita no debe ser mayor que el número, que el controlador establece en el miembro MaxStreamStates de la estructura DXVAHDDDI_VPDEVCAPS .

[in] OutputIndex

Número de índice de fotogramas cíclicos de base cero de los fotogramas de salida que se componen.

[in] InputFrameOrField

Número de fotogramas de base cero de los marcos de entrada o campos que se procesan.

[in] PastFrames

Número de fotogramas de referencia anteriores. Este número no debe ser mayor que el número que establece el controlador en el miembro PastFrames de la estructura DXVAHDDDI_VPCAPS .

[in] FutureFrames

Número de fotogramas de referencia futuros. Este número no debe ser mayor que el número que establece el controlador en el miembro FutureFrames de la estructura DXVAHDDDI_VPCAPS .

[in] pPastSurfaces

Matriz de estructuras de DXVAHDDDI_SURFACE que describen las superficies de referencia anteriores.

[in] InputSurface

Estructura DXVAHDDDI_SURFACE que describe la superficie de entrada.

[in] pFutureSurfaces

Matriz de estructuras DXVAHDDDI_SURFACE que describen las superficies de referencia futuras.

Comentarios

El controlador debe asignar las superficies que los miembros pPastSurfaces, InputSurface y pFutureSurfaces especifican en el tipo de grupo, que el controlador establece en el miembro InputPool de la estructura DXVAHDDDI_VPDEVCAPS y con uno de los siguientes tipos de superficie; de lo contrario, la función VideoProcessBltHD del controlador devuelve un error.

  • Superficie de vídeo que se crea con el tipo DXVAHD_SURFACE_TYPE_VIDEO_INPUT o DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE.
  • Superficie de destino de representación de descodificación que se crea con el tipo DXVA2_VideoDecodeRenderTarget.
  • Superficie sin formato fuera de pantalla.
El miembro OutputIndex es un número cíclico de base cero que indica el número de índice de fotogramas de la salida. El controlador usa esta información de índice de salida para realizar el procesamiento de vídeo en un determinado patrón o ciclo, especialmente cuando el controlador realiza la desinterlacación, la conversión de velocidad de fotogramas y el telecine inverso. Por ejemplo, con el siguiente patrón de índice de salida, el controlador realiza el procesamiento de vídeo indicado:
  • Formato progresivo a velocidad normal y media:

    OutputIndex = 0, 0,...

  • Formato progresivo a una velocidad personalizada de 2/1 (conversión doble de velocidad de fotogramas, OutputFrames=2):

    OutputIndex = 0, 1, 0, 1,...

  • Formato entrelazado a velocidad normal:

    OutputIndex = 0, 1, 0, 1,... (0: primer campo, 1: segundo campo)

  • Formato entrelazado a media velocidad:

    OutputIndex = 0, 0,... (por ejemplo, los campos primero y segundo se combinan en un marco).

  • Entrelazado a una velocidad personalizada de 4/5 (3:2 telecine inversa, OutputFrames=4):

    OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3,... (0:A, 1:B, 2:C, fotograma de película 3:D)

El miembro InputFrameOrField es un número de base cero que indica el marco o el número de campo de la superficie de entrada. Por ejemplo, con el siguiente número de fotograma o campo de entrada, el controlador puede realizar el procesamiento de vídeo indicado:
  • Formato progresivo y formato entrelazado a velocidad normal:

    InputFrameOrField = 0, 1, 2,...

  • Formato progresivo y formato entrelazado a media velocidad:

    InputFrameOrField = 0, 2, 4,...

  • Formato entrelazado a una velocidad personalizada de 4/5 (3:2 telecine inversa, OutputFrames=4 y InputFrameOrField=10):

    InputFrameOrField = 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20,...

  • Formato entrelazado a una velocidad personalizada de 4/15 (8:7 telecine inverso, OutputFrames=2 y InputFrameOrField=15):

    InputFrameOrField = 0, 0, 15, 15, 30, 30,...

La aplicación debe hacer que los miembros OutputIndex y InputFrameOrField se restablezcan cuando se cambie el formato de fotograma o la velocidad de salida para que el controlador pueda restablecer su estado de procesamiento interno. Para obtener más información sobre cómo cambiar el formato de fotograma o la velocidad de salida, consulte DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA y DXVAHDDDI_STREAM_STATE_OUTPUT_RATE_DATA.

Sin embargo, si el controlador cambia entre la velocidad normal y la mitad (valores de la enumeración DXVAHDDDI_OUTPUT_RATE ), el controlador no debe requerir el restablecimiento.

Si los miembros OutputIndex y InputFrameOrField permanecen sin cambios en la siguiente hora del proceso, el controlador determina que el fotograma no se modifica (por ejemplo, en pausa) en el procesamiento de la secuencia. Por lo tanto, el controlador puede optimizar el fotograma mediante datos almacenados en caché.

El controlador debe recurrir a un método de procesamiento de vídeo menos intensivo, ya que se proporcionan menos fotogramas de referencia. El controlador debe recurrir al desenlace de Bob cuando no se proporcionan ejemplos de referencia.

Una aplicación puede proporcionar menos marcos de referencia pasados y futuros que los marcos de referencia que solicita el controlador. Por ejemplo, una aplicación puede proporcionar menos marcos de referencia en las condiciones siguientes:

  • Al principio o al final de la secuencia de fotogramas.
  • Transición entre progresiva e entrelazada.
  • Secuencia progresiva normal o media.
  • Secuencias de sub-vídeo que no requieren deslazamiento de alta calidad.
  • Al limitar los fotogramas de referencia para recuperarse de caídas de fotogramas y mantener la velocidad de fotogramas.
  • Colocación de fotogramas de la entrada (por ejemplo, caídas de fotogramas en el descodificador).
Tanto el pasado como el futuro se proporcionan en los miembros de matriz pPastSurfaces y pFutureSurfaces en orden temporal de fotogramas más antiguos a más recientes continuamente. Por ejemplo, el orden de los elementos de las matrices se muestra en el ejemplo siguiente:

pPastSurfaces [] = {..., T-3, T-2, T-1}

InputSurface = T

pFutureSurfaces [] = {T+1, T+2, T+3,...}

Los marcos de entrada y referencia cambian la ubicación de la ubicación futura a la ubicación anterior a través de la ubicación actual a medida que se incrementan los miembros OutputIndex y InputFrameOrField . Por ejemplo, la superficie de entrada cambia como el incremento OutputIndex y InputFrameOrField cuando el controlador realiza el siguiente procesamiento de vídeo:

  • Formato progresivo a velocidad normal:

    OutputIndex = 0, 0, 0,...

    InputFrameOrField = 0, 1, 2,...

    InputSurface = T, T+1, T+2,...

  • Formato entrelazado a velocidad normal:

    OutputIndex = 0, 1, 0, 1, 0, 1,...

    InputFrameOrField = 0, 1, 2, 3, 4, 5,...

    InputSurface = T, T, T+1, T+1, T+2, T+2,...

  • Formato entrelazado a media velocidad:

    OutputIndex = 0, 0, 0,...

    InputFrameOrField = 0, 2, 4,...

    InputSurface = T, T+1, T+2,...

  • Formato entrelazado a una velocidad personalizada de 4/5 (3:2 telecine inversa, OutputFrames=4 y InputFrameOrField=10):

    OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,...

    InputFrameOrField = 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20,...

    InputSurface = T, T, T, T, T+5, T+5, T+5, T+5, T+10, T+10, T+10, T+10,...

  • Formato entrelazado a una velocidad personalizada de 4/15 (8:7 telecine inverso, OutputFrames=2 y InputFrameOrField=15):

    OutputIndex = 0, 1, 0, 1, 0, 1,...

    InputFrameOrField = 0, 0, 15, 15, 30, 30,...

    InputSurface = T, T, T+7, T+7, T+15, T+15,... (tenga en cuenta que el marco T+7 contiene el campo 15)

En el siguiente ejemplo de pseudocódigo se muestra la interacción entre la aplicación (APP) y el controlador (DRV) al realizar Telecine inverso (IVTC) en la extracción de 3:2, 30 fotogramas (60 campos) por segundo contenido entrelazado:
-[60i -> 60p]
DRV: VPGuid[0] requests 1 past and 2 future reference frames.
APP: Creates VPGuid[0] video processor and set output rate to normal.
APP: Decodes frame 0(A0:A1), 1(A0:B1), 2(B0:C1), 3(C0:C1), 4(D0:D1), ...
    :
-APP: VPBltHD(frame x, 0, 1, 2), InputFrameOrField=0, OutputIndex=0
DRV: Bob [0(A0)+0(A1)] = A'
-APP: VPBltHD(frame x, 0, 1, 2), InputFrameOrField=1, OutputIndex=1
DRV: Weave [0(A1)+1(A0)] = A
-APP: VPBltHD(frame 0, 1, 2, 3), InputFrameOrField=2, OutputIndex=0
DRV: Weave [1(A0)+0(A1)] = A
-APP: VPBltHD(frame 0, 1, 2, 3), InputFrameOrField=3, OutputIndex=1
DRV: Weave [1(B1)+2(B0)] = B
-APP: VPBltHD(frame 1, 2, 3, 4), InputFrameOrField=4, OutputIndex=0
DRV: Weave [2(B0)+1(B1)] = B
-APP: VPBltHD(frame 1, 2, 3, 4), InputFrameOrField=5, OutputIndex=1
DRV: Weave [2(C1)+3(C0)] = C
-APP: VPBltHD(frame 2, 3, 4, 5), InputFrameOrField=6, OutputIndex=0
DRV: Weave [3(C0)+3(C1)] = C
-APP: VPBltHD(frame 2, 3, 4, 5), InputFrameOrField=7, OutputIndex=1
DRV: Weave [3(C1)+3(C0)] = C
-APP: VPBltHD(frame 3, 4, 5, 6), InputFrameOrField=8, OutputIndex=0
DRV: Weave [4(D0)+4(D1)] = D
-APP: VPBltHD(frame 3, 4, 5, 6), InputFrameOrField=9, OutputIndex=1
DRV: Weave [4(D1)+4(D0)] = D
    :
-[60i -> 24p]
DRV: VPGuid[1] requests 4 future reference frames.
DRV: Exports CustomRate=4/5, OutputFrames=4, InputInterlaced=TRUE, InputFramesOrFields=10.
APP: Creates VPGuid[1] video processor and set output rate to 4/5 custom rate.
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=0
DRV: Bob [0(A0)+0(A1)] = A' (playback or speed mode) or Weave [0(A0)+0(A1)] = A (quality mode)
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=1
DRV: Weave [1(B1)+2(B0)] = B
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=2
DRV: Weave [3(C0)+3(C1)] = C
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=3
DRV: Weave [4(D0)+4(D1)] = D
-APP: VPBltHD(frame 5, 6, 7, 8, 9), InputFrameOrField=10, OutputIndex=0
DRV: Weave [0(A0)+0(A1)] = A
    :

Requisitos

Requisito Value
Cliente mínimo compatible DXVAHDDDI_STREAM_DATA se admite a partir del sistema operativo Windows 7.
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

DXVAHDDDI_OUTPUT_RATE

DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA

DXVAHDDDI_STREAM_STATE_OUTPUT_RATE_DATA

DXVAHDDDI_SURFACE

DXVAHDDDI_VPCAPS

DXVAHDDDI_VPDEVCAPS

VideoProcessBltHD