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
[in] pContentKey
指向用于加密帧数据的内容密钥的可选指针。 如果未使用内容密钥,请将此参数设置为 NULL。 如果调用方提供内容密钥,则调用方必须使用会话密钥来加密内容密钥。
返回值
如果此方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。 如果硬件繁忙,将返回 D3DERR_WASSTILLDRAWING 或 E_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 |