ID3D11VideoContext::D ecoderBeginFrame 方法 (d3d11.h)

启动解码操作以解码视频帧。

语法

HRESULT DecoderBeginFrame(
  [in] ID3D11VideoDecoder           *pDecoder,
  [in] ID3D11VideoDecoderOutputView *pView,
  [in] UINT                         ContentKeySize,
  [in] const void                   *pContentKey
);

参数

[in] pDecoder

指向 ID3D11VideoDecoder 接口的 指针。 若要获取此指针,请调用 ID3D11VideoDevice::CreateVideoDecoder

[in] pView

指向 ID3D11VideoDecoderOutputView 接口的指针。 此接口描述将接收解码帧的资源。 若要获取此指针,请调用 ID3D11VideoDevice::CreateVideoDecoderOutputView

[in] ContentKeySize

在 pContentKey 中指定的内容密钥的大小。 如果 pContentKey 为 NULL,请将 ContentKeySize 设置为零。

[in] pContentKey

指向用于加密帧数据的内容密钥的可选指针。 如果未使用内容密钥,请将此参数设置为 NULL。 如果调用方提供内容密钥,则调用方必须使用会话密钥来加密内容密钥。

返回值

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。 如果硬件繁忙,则返回D3DERR_WASSTILLDRAWINGE_PENDING,在这种情况下,解码器应尝试再次进行调用。

注解

调用此方法后,调用 ID3D11VideoContext::SubmitDecoderBuffers 以执行解码操作。 执行所有解码操作后,调用 ID3D11VideoContext::D ecoderEndFrame

每次调用 DecoderBeginFrame 都必须具有对 DecoderEndFrame 的匹配调用。 在大多数情况下,不能嵌套 DecoderBeginFrame 调用,但某些编解码器(如 VC-1)可以具有嵌套 的 DecoderBeginFrame 调用,用于特殊操作(如后期处理)。

通过内容密钥支持以下加密方案:

  • 解码器可以选择不加密每个帧,例如,它可能只加密 I 帧,而不加密 P/B 帧。 在这些方案中,解码器将为不加密的帧指定 pContentKey = NULL 和 ContentKeySize = 0。
  • 解码器可以选择使用会话密钥加密压缩的缓冲区。 在此方案中,解码器将指定包含所有零的内容键。
  • 解码器可以选择使用单独的内容密钥加密压缩的缓冲区。 在此方案中,解码器将使用会话密钥对内容密钥进行 ECB 加密,并传递加密的内容密钥。

要求

要求
最低受支持的客户端 Windows 8 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d3d11.h

另请参阅

ID3D11VideoContext