DXVAHD_STREAM_DATA 结构 (dxvahd.h)
包含 IDXVAHD_VideoProcessor::VideoProcessBltHD 方法的每流数据。
语法
typedef struct _DXVAHD_STREAM_DATA {
BOOL Enable;
UINT OutputIndex;
UINT InputFrameOrField;
UINT PastFrames;
UINT FutureFrames;
IDirect3DSurface9 **ppPastSurfaces;
IDirect3DSurface9 *pInputSurface;
IDirect3DSurface9 **ppFutureSurfaces;
} DXVAHD_STREAM_DATA;
成员
Enable
指定是否启用此输入流。 如果值为 TRUE, 则 VideoProcessBltHD 方法会将此流转换为输出图面。 否则,不会对流进行 blitted。 一次可以启用的最大流数在 DXVAHD_VPDEVCAPS 结构的 MaxInputStreams 成员中给出。
OutputIndex
输出帧的从零开始的索引号。 请参阅“备注”。
InputFrameOrField
输入帧或字段的从零开始的索引号。 请参阅“备注”。
PastFrames
过去引用帧的数目。 此值必须小于或等于 DXVAHD_VPCAPS 结构的 PastFrames 成员的值。
FutureFrames
将来的引用帧数。 此值必须小于或等于 DXVAHD_VPCAPS 结构的 FutureFrames 成员的值。
ppPastSurfaces
指向由调用方分配的 IDirect3DSurface9 指针数组的指针。 此数组包含视频处理操作的过去引用帧。 数组中的元素数等于 PastFrames 成员的值。
pInputSurface
指向包含当前输入帧的 Microsoft Direct3D 图面 的 IDirect3DSurface9 接口的指针。
ppFutureSurfaces
指向由调用方分配的 IDirect3DSurface9 指针数组的指针。 此数组包含视频处理操作的未来参考帧。 数组中的元素数等于 FutureFrames 成员的值。
备注
输入图面
Direct3D 图面必须在DXVAHD_VPDEVCAPS结构的 InputPool 成员指定的内存池中分配。 可以使用以下图面类型:- DXVAHD_SURFACE_TYPE_VIDEO_INPUT 或 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE 类型的视频图面。 请参阅 IDXVAHD_Device::CreateVideoSurface。
- DXVA2_VideoDecoderRenderTarget 类型的解码器呈现目标图面。 请参阅 IDirectXVideoAccelerationService::CreateSurface。
- 屏幕外普通表面。
- ppPastSurfaces: { ..., T-3, T-2, T-1 }
- ppInputSurface: T
- ppFutureSurfaces: { T+1, T+2, T+3, ... }
- 在视频序列的开头或结尾
- 使用渐进式输入
- 在渐进式和交错输入之间转换期间
- 对于不需要高去隔行符质量的子流
- 删除帧时
输入和输出索引
OutputIndex 和 InputFrameOrField 成员用于将输入帧或字段与输出帧相关联。 OutputIndex 成员的值是循环的,并在每个周期后重置为零。下面是一些示例模式:
- 以正常速率渐进式视频。 每个输入帧生成一个输出帧。
- 输出索引:0、0、0、0、...
- 输入索引:0、1、2、3...
- 以正常速率交错视频。 每个交错帧 (两个字段) 生成两个输出帧。
- 输出索引:0、1、0、1...
- 输入索引:0、1、2、3...
- 2/1 输出速率的渐进式视频。 每个输入帧生成一个输出帧。
- 输出索引:0、1、0、1...
- 输入索引:0、1、2、3...
- 以 1/2 输出速率隔行扫描的视频。 每个交错帧生成一个输出帧。 (混合这两个字段以创建一个 frame。)
- 输出索引:0、0、0、0、...
- 输入索引:0、2、4、6、 ...
要求
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
标头 | dxvahd.h |