用Intel mediasdk2020的sample_decode验证通过ocl扩展cl_khr_d3d11_sharing让opencl和d3d11 texture2D共享frame buffer的方法
原演示代码使用Intel QSV硬件解码,解码器输出为DirectX11 NV12 Texture2D,然后将输出的Texture2D转换为RGBA格式并显示在一个窗口里。增加的OpenCL代码修改了一下CD3D11Device::RenderFrame()函数,输出到屏幕流程,在调用VideoProcessorBlt()前,调用SimulateCL(); 通过OpenCL直接修改D3D11 Texture2D的frame buffer(这个buffer是不能通过CPU直接写入的,但是通过ocl kernel可以在GPU侧直接读写)。在屏幕左上角坐标(y=16, x=32)的地方,画一个4848的方块区域,此区域亮度做0~255间的明暗变化;同时在左上角坐标(y=16, x=32), 画一个9696的方块区域,此区域呈灰度显示
VS2017 Debug X64调试
项目选项 Debugging的Command Arguments里设置
h264 -i test.h264 -hw -d3d11 -r
项目选项 Debugging的Working Directory里设置
$(TargetDir)
将项目里的OpenCLRGBAFile.cl
, test.h264
拷贝到VS编译器输出的目录build\win_x64\Debug\bin\下
在命令行里使用参数运行
sample_decode.exe h264 -d3d11 -hw -i C:\work\qsv_dec\x64\Debug\jellyfish-120-mbps-4k-uhd-h264.h264 -r
注意要把OpenCLRGBAFile.cl
和要播放的视频文件放在sample_decode.exe相同的目录下,并根据视频文件的编码格式修改参数
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。