ID3D11VideoDevice::CreateVideoDecoderOutputView 失败

Posted

技术标签:

【中文标题】ID3D11VideoDevice::CreateVideoDecoderOutputView 失败【英文标题】:ID3D11VideoDevice::CreateVideoDecoderOutputView fails 【发布时间】:2015-05-07 12:29:34 【问题描述】:

我正在开发一个能够通过 DrectX11 的 ID3D11VideoDecoder 接口 (https://msdn.microsoft.com/en-us/library/windows/desktop/hh447766(v=vs.85).aspx) 解码 H264 流的应用程序,但我遇到了 ID3D11VideoDevice::CreateVideoDecoderOutputView 方法,它只是无法返回 E_INVALIDARG。是的,我知道,可能有数百万个理由, 但是可能有一些异常常见的吗?是否有可用的示例说明通过 ID3D11VideoDecoder 进行解码(我还没有找到)? 我认为最有可能失败的代码部分如下所示:

// texture
D3D11_TEXTURE2D_DESC descT =  0 ;
descT.Width = 1024;
descT.Height = 768;
descT.MipLevels = 1;
descT.ArraySize =  1;
descT.Format = DXGI_FORMAT_NV12;
descT.SampleDesc.Count = 1;
descT.Usage = D3D11_USAGE_DEFAULT;
descT.BindFlags = D3D11_BIND_DECODER; 
ID3D11Texture2D *pTex = nullptr;
pDX11VideoDevice->CreateTexture2D(&desc, 0, &pTex);

// decoder
D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC desc;
desc.DecodeProfile = D3D11_DECODER_PROFILE_H264_VLD_NOFGT; // what is     interesting it fails whatever decoder I choose
desc.Texture2D.ArraySlice = 1;
desc.ViewDimension = D3D11_VDOV_DIMENSION_TEXTURE2D;

HRESULT hr = pDX11VideoDevice->CreateVideoDecoderOutputView(pTex, &desc, &pVideoDecoderOutputView); // and here the fail occurs

谢谢

【问题讨论】:

【参考方案1】:

好的,问题解决了,应该有

desc.Texture2D.ArraySlice = 0; 

在上面帖子的 sn-p 中。还有很多工作要做

【讨论】:

以上是关于ID3D11VideoDevice::CreateVideoDecoderOutputView 失败的主要内容,如果未能解决你的问题,请参考以下文章

C2259:“ID3D11ShaderResourceView”无法实例化抽象类 - DX11

如何在win7上将ID3D11Texture2D内容复制到IMFSample?

DirectX:以 DXGI_FORMAT_NV12 格式从 ID3D11Texture2D 获取 RGB 数据的最佳方法?

ID3D11Texture2D 到 ID2D1Bitmap,可以吗?

D3D11笔记——Resource基本概念

DirectX11 执行警告 #355