cuda硬解

猿说编程 2014-11-12 10:46:43
在cuda sample中cudaDecodeD3D9源码中有两个地方不是很理解,希望知道的大神讲解一下:

1、在回调函数 HandlePictureDecode()函数中实现的是解码操作,cuda硬解后的输出应该是NV12类型,但是我每次在这个函数里面打断点调试发现每次解码出来的数据大小都不一样?这是什么原因?以前做ffmpeg解码的时候每次解码后的数据大小都是 宽 x 高 x 3 / 2 (yuv420);这是为什么呢?难道硬解后数据还是需要自己处理???


2、在回调函数 HandlePictureDisplay()函数中实现的是显示操作,里面有对应的时间戳,这个时间戳怎么对应解码后的数据呢?求解
...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
猿说编程 2014-11-14
  • 打赏
  • 举报
回复
引用 3 楼 OExpress 的回复:
MPEG2解码后的数据格式是YUV420P,NV12格式是吧UV分量interleave后的格式
是的。。nv12的nv分量是交错的。。。你做过CUDA的硬解吗?
CyberLogix 2014-11-14
  • 打赏
  • 举报
回复
MPEG2解码后的数据格式是YUV420P,NV12格式是吧UV分量interleave后的格式
猿说编程 2014-11-13
  • 打赏
  • 举报
回复
顶一个。。不要沉
猿说编程 2014-11-13
  • 打赏
  • 举报
回复
如题,这套代码是把mpeg2文件解码成NV12,再转成ARGB格式的,现在我想把中间生成的NV12文件得到取出来,需要怎么做? 我看了几天程序,发现有几个地方始终绕不过去,求大神指点: 1、那个g_pFrameQueue是怎么得到的,我看到一个g_pFrameQueue = apFrameQueue.release();这句话实在是感觉毫无头绪,求指点; 2、整个程序执行下来是有个固定的数组,解码一帧数据就放进数组,然后交给转格式的kernel函数进行把NV12文件转成ARGB然后不断循环着这个数组里有进有出,还是全部解码完成后,再进行转格式? 3、我尝试着在调用这个函数:cudaPostProcessFrame()之前抓取过一帧数据,也尝试在cudaPostProcessFrame函数中调用的cudaLaunchNV12toARGBDrv函数之前抓取过一帧数据,但是好像都不正确,我很想知道到底该怎么样做才能把NV12的数据导出来,求指点。

2,542

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧