通过ffmpeg d3d11va解码h264,我成功地获得了一个帧,但当我复制资源时,我得到了这个错误。。
ret = avcodec_receive_frame(avctx, frame);//it's OK;
dctx->CopySubresourceRegion(dst_resource, 0, 0, 0, 0, (ID3D11Texture2D*)frame->data[0], (int)frame->data[1],NULL);
不能仅将数据强制转换为ID3D11Texture2D
接口类型。必须先将其从帧复制到纹理2D的实例中,然后才能使用它进行复制。
由于您开始使用的内存在CPU中,您需要创建一个USAGE_STAGING
纹理Map
,复制数据Unmap
,然后您就可以使用CopySubresourceRegion