PFND3D11_1DDI_VIDEODECODERBEGINFRAME回调函数 (d3d10umddi.h)

启动 DirectX 视频加速 (DXVA) 解码操作以解码视频帧。

语法

PFND3D11_1DDI_VIDEODECODERBEGINFRAME Pfnd3d111DdiVideodecoderbeginframe;

HRESULT Pfnd3d111DdiVideodecoderbeginframe(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D11_1DDI_HDECODE unnamedParam2,
  const D3D11_1DDIARG_VIDEODECODERBEGINFRAME *unnamedParam3
)
{...}

参数

unnamedParam1

hDevice [in]

显示设备的句柄 (图形上下文) 。

unnamedParam2

hDecoder [in]

通过调用 CreateVideoDecoder 函数创建的视频解码器对象的句柄。

unnamedParam3

pBeginFrame [in]

指向 D3D11_1DDIARG_VIDEODECODERBEGINFRAME 结构的指针。 有关详细信息,请参见“备注”部分。

返回值

VideoDecoderBeginFrame 返回以下值之一:

返回代码 说明
S_OK 解码操作已成功启动。
E_OUTOFMEMORY 内存无法完成操作。

注解

如果 VideoDecoderBeginFrame 返回 S_OK,Microsoft Direct3D 运行时将调用 VideoDecoderSubmitBuffers 函数来执行解码操作。 执行所有解码操作后,运行时会调用 VideoDecoderEndFrame 函数来停止对视频帧的解码操作。

注意 每次调用 VideoDecoderBeginFrame 都必须具有对 VideoDecoderEndFrame 的匹配调用,并且 VideoDecoderBeginFrame 调用不能嵌套。
 
D3D11_1DDIARG_VIDEODECODERBEGINFRAME 结构包含以下数据:
  • 将接收解密和解码数据的资源。
  • 用于加密视频帧数据的内容密钥。

    如果此结构的 pContentKey 成员未设置为 NULL,则此成员引用的缓冲区包含每帧内容键。 此密钥必须用于解密数据,而不是使用会话密钥。

    注意 如果未将 pContentKey 成员设置为 NULL,则此成员引用的缓冲区将使用会话密钥和 AES-ECB 算法进行加密。
     
    如果 pContentKey 成员设置为 NULL,则应使用会话密钥解密视频帧数据。

要求

要求
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
目标平台 桌面
标头 d3d10umddi.h (包括 D3d10umddi.h)

另请参阅

CreateVideoDecoder

VideoDecoderEndFrame

VideoDecoderSubmitBuffers