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 habilita el entorno de ejecución no debe ser mayor que el número, que el controlador establece en el MaxStreamStates miembro 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 PastFrames miembro 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 FutureFrames miembro de la estructura DXVAHDDDI_VPCAPS.
[in] pPastSurfaces
Matriz de DXVAHDDDI_SURFACE estructuras que describen las superficies de referencia anteriores.
[in] InputSurface
Estructura DXVAHDDDI_SURFACE que describe la superficie de entrada.
[in] pFutureSurfaces
Matriz de estructuras de DXVAHDDDI_SURFACE que describen las superficies de referencia futuras.
Observaciones
El controlador debe asignar las superficies que los miembros pPastSurfaces, InputSurfacey pFutureSurfaces especifican en el tipo de grupo, que el controlador establece en el inputPool miembro 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 descodificación de representación que se crea con el tipo DXVA2_VideoDecodeRenderTarget.
- Una superficie sin formato fuera de pantalla.
-
Formato progresivo a velocidad normal y media:
OutputIndex = 0, 0,...
-
Formato progresivo a 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 telecina inversa, OutputFrames=4):
OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3,... (0:A, 1:B, 2:C, fotograma de película 3:D)
-
Formato progresivo e formato entrelazado a velocidad normal:
InputFrameOrField = 0, 1, 2,...
-
Formato progresivo e 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, 0, 10, 10, 10, 10, 20, 20, 20,...
-
Formato entrelazado a una velocidad personalizada de 4/15 (8:7 telecine inversa, OutputFrames=2 y InputFrameOrField=15):
InputFrameOrField = 0, 0, 15, 15, 30, 30,...
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 tanto el OutputIndex como el InputFrameOrField miembros permanecen sin cambios en la próxima vez del proceso, el controlador determina que el fotograma no se modifica (por ejemplo, en pausa) en el procesamiento de flujos. Por lo tanto, el controlador puede optimizar el marco mediante datos almacenados en caché.
El controlador debe revertir a un método de procesamiento de vídeo menos intensivo, ya que se proporcionan menos fotogramas de referencia. El controlador debe revertir a Bob desenlazado 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 de velocidad 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).
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 incrementa n los miembros de outputIndex y InputFrameOrField. Por ejemplo, la superficie de entrada cambia como OutputIndex y InputFrameOrField incremento 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, 0, 10, 10, 10, 10, 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 inversa, 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)
-[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 | Valor |
---|---|
cliente mínimo admitido | DXVAHDDDI_STREAM_DATA se admite a partir del sistema operativo Windows 7. |
encabezado de | d3dumddi.h (incluya D3dumddi.h) |
Consulte también
DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA