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的匹配调用。 在大多数情况下,不能嵌套 解码器BeginFrame 调用,但某些编解码器(如 VC-1)可以嵌套 解码器BeginFrame 调用后处理等特殊操作。

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

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

要求

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

另请参阅

ID3D11VideoContext