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.
-
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)
-
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,...
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).
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)
-[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_STREAM_STATE_FRAME_FORMAT_DATA
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de