作者ko27tye (好滋好滋)
看板C_and_CPP
标题[问题] ffmpeg使用vaapi硬体加速
时间Thu Apr 16 21:19:38 2020
目前使用ffmpeg搭Qt QOpenGLWidget
想把decode完的frame资料输出到QOpenGLWidget上
从AVFrame的format读出来是AV_PIX_FMT_VAAPI_VLD
但目前卡在不知该怎麽处理vaapi的frame
以软解yuv420p来说
AVFrame的format是AV_PIX_FMT_YUV420P
datas[0]放Y datas[1]放U datas[2]放V
此时AVFrame的data[0]~data[2]分别对应YUV
memcpy(datas[0],pFrame->data[0],m_nWidth*m_nHeight);
memcpy(datas[1],pFrame->data[1],m_nWidth*m_nHeight/4);
memcpy(datas[2],pFrame->data[2],m_nWidth*m_nHeight/4);
而这样排列可以正常显示画面
但AV_PIX_FMT_VAAPI_VLD data[0]~data[2]都是0
在data[3]读出来的是VASurfaceID
这个东西不知道该怎麽用...
我该怎麽使用这个VASurfaceID呢?
硬解的流程基本上参照
ffmpeg examples内的hw_decode.c范例
最後只差在范例是储存成file
而我要把它render到QOpenGLWidget
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.235.60 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1587043180.A.1F2.html
2F:→ ko27tye: 谢谢 我参考看看 04/18 18:42