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 数据的最佳方法?