estrutura DXVAHDDDI_STREAM_DATA (d3dumddi.h)
A estrutura DXVAHDDDI_STREAM_DATA descreve um fluxo de entrada que é processado.
Sintaxe
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;
Membros
[in] Enable
Um valor booliano que especifica se o fluxo de entrada está habilitado. O número de fluxos de entrada habilitados pelo runtime não deve ser maior do que o número, que o driver define no membro MaxStreamStates da estrutura DXVAHDDDI_VPDEVCAPS .
[in] OutputIndex
Um número de índice de quadro cíclico baseado em zero dos quadros de saída compostos.
[in] InputFrameOrField
Um número de quadro baseado em zero dos quadros de entrada ou campos processados.
[in] PastFrames
O número de quadros de referência anteriores. Esse número não deve ser maior que o número que o driver define no membro PastFrames da estrutura DXVAHDDDI_VPCAPS .
[in] FutureFrames
O número de quadros de referência futuros. Esse número não deve ser maior que o número que o driver define no membro FutureFrames da estrutura DXVAHDDDI_VPCAPS .
[in] pPastSurfaces
Uma matriz de estruturas DXVAHDDDI_SURFACE que descrevem as superfícies de referência anteriores.
[in] InputSurface
Uma estrutura DXVAHDDDI_SURFACE que descreve a superfície de entrada.
[in] pFutureSurfaces
Uma matriz de estruturas DXVAHDDDI_SURFACE que descrevem as superfícies de referência futuras.
Comentários
O driver deve alocar as superfícies que os membros pPastSurfaces, InputSurface e pFutureSurfaces especificam no tipo de pool, que o driver define no membro InputPool da estrutura DXVAHDDDI_VPDEVCAPS e com um dos seguintes tipos de superfície; caso contrário, a função VideoProcessBltHD do driver retornará um erro.
- Uma superfície de vídeo criada com o tipo DXVAHD_SURFACE_TYPE_VIDEO_INPUT ou DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE.
- Uma superfície de destino de renderização de decodificação criada com o tipo DXVA2_VideoDecodeRenderTarget.
- Uma superfície simples fora da tela.
-
Formato progressivo com taxa normal e meia:
OutputIndex = 0, 0,...
-
Formato progressivo a uma taxa personalizada de 2/1 (conversão de taxa de quadros dupla, OutputFrames=2):
OutputIndex = 0, 1, 0, 1,...
-
Formato entrelaçado a uma taxa normal:
OutputIndex = 0, 1, 0, 1,... (0: primeiro campo, 1: segundo campo)
-
Formato entrelaçado a meia taxa:
OutputIndex = 0, 0,... (por exemplo, primeiro e segundo campos são combinados a um quadro)
-
Entrelaçado a uma taxa personalizada de 4/5 (telecine inverso 3:2, OutputFrames=4):
OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3,... (0:A, 1:B, 2:C, quadro de filme 3:D)
-
Formato progressivo e formato entrelaçado a uma taxa normal:
InputFrameOrField = 0, 1, 2,...
-
Formato progressivo e formato entrelaçado a meia taxa:
InputFrameOrField = 0, 2, 4,...
-
Formato entrelaçado a uma taxa personalizada de 4/5 (telecine inverso 3:2, OutputFrames=4 e InputFrameOrField=10):
InputFrameOrField = 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20,...
-
Formato entrelaçado com taxa personalizada de 4/15 (telecine inverso de 8:7, OutputFrames=2 e InputFrameOrField=15):
InputFrameOrField = 0, 0, 15, 15, 30, 30,...
No entanto, se o driver alternar entre a taxa normal e a metade (valores da enumeração DXVAHDDDI_OUTPUT_RATE ), o driver não deverá exigir a redefinição.
Se os membros OutputIndex e InputFrameOrField permanecerem inalterados na próxima hora do processo, o driver determinará que o quadro permanece inalterado (por exemplo, pausado) no processamento de fluxo. Portanto, o driver pode otimizar o quadro usando dados armazenados em cache.
O driver deve fazer fallback para um método de processamento de vídeo menos intensivo à medida que menos quadros de referência forem fornecidos. O driver deve fazer fallback para a desassociação de Bob quando nenhum exemplo de referência for fornecido.
Um aplicativo pode fornecer menos quadros de referência passados e futuros do que os quadros de referência que o driver solicita. Por exemplo, um aplicativo pode fornecer menos quadros de referência nas seguintes condições:
- No início ou no final da sequência de quadros.
- Transição entre progressivo e entrelaçado.
- Fluxo progressivo normal ou de meia taxa.
- Fluxos de sub-vídeo que não exigem desassociamento de alta qualidade.
- Ao limitar os quadros de referência para se recuperar de quedas de quadro e manter a taxa de quadros.
- Remoção de quadro da entrada (por exemplo, quedas de quadro no decodificador).
pPastSurfaces [] = {..., T-3, T-2, T-1}
InputSurface = T
pFutureSurfaces [] = {T+1, T+2, T+3,...}
Os quadros de entrada e referência alteram o local do local futuro para o local passado por meio do local atual à medida que os membros OutputIndex e InputFrameOrField incrementam. Por exemplo, a superfície de entrada é alterada como o incremento OutputIndex e InputFrameOrField quando o driver executa o seguinte processamento de vídeo:
-
Formato progressivo a uma taxa normal:
OutputIndex = 0, 0, 0,...
InputFrameOrField = 0, 1, 2,...
InputSurface = T, T+1, T+2,...
-
Formato entrelaçado a uma taxa 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 entrelaçado a meia taxa:
OutputIndex = 0, 0, 0,...
InputFrameOrField = 0, 2, 4,...
InputSurface = T, T+1, T+2,...
-
Formato entrelaçado a uma taxa personalizada de 4/5 (telecine inverso 3:2, OutputFrames=4 e 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 entrelaçado com taxa personalizada de 4/15 (telecine inverso de 8:7, OutputFrames=2 e 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,... (observe que o quadro T+7 contém o 15º campo)
-[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 com suporte | DXVAHDDDI_STREAM_DATA tem suporte a partir do sistema operacional Windows 7. |
Cabeçalho | d3dumddi.h (inclua D3dumddi.h) |
Confira também
DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA