dshow videorender 直接接收yuv

unsway123 2013-12-31 05:11:23
用dshow开发camera的应用程序,实现预览功能后,发现预览cpu的占用率很高,后来通过debug,发现占用cpu占用率高的原因是因为YUV->RGB的转换。
我的显示驱动是支持OVERLAY的,支持两种OVERLAY,YUVoverlay,RGBoverlay,理想的状态下,从capturefilter传递过来的camera数据(yuv)直接传递给videorender,videorender通过ddraw来创建一个YUVoverlay,然后直接显示。

但是实际测试的结果是videorender永远都是创建一个RGBoverlay,肯定yuv的数据放到了RGB的表面,videorender或许就给我转了格式了。

现在预览的时候cpu占用率高,加上录像,还有录音,导致我在录像的时候有丢帧的现象,格外的录像的时候cpu占用率太高了,都到了%80多了,所以考虑到从根本上解决这个问题,只能够让videorender能够直接接收yuv数据,创建YUVoverlay

在微软的文档上看过文档,
大致上的意思是videorender在第一次协商的时候是需要连接和主屏幕格式一样的格式,一般就是RGB,当run了之后,再通过协商新的格式,实现动态格式改变

大家都有何见解
...全文
390 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
unsway123 2014-01-09
  • 打赏
  • 举报
回复
引用 3 楼 91program 的回复:
除了方案的原因,你录像的代码也可能有问题,导致 CPU 占用率高。这些都有可能的,一步步排查吧。
录像代码,编码器用的是DSP的编码器,其他的都是directshow.录像的过程中包括预览和录像啊,我预览平时就达到%40,录像的时候在%70多,这算正常的吗?我录像的分辨率是720*576,40万像素的,15帧每秒。 你觉得这个是高了吗? 我用的方案是dm3730
unsway123 2014-01-09
  • 打赏
  • 举报
回复
引用 4 楼 liu103bing 的回复:
软解的CPU占用率就是这么高,之前我们都是用硬件上的YUV转RGB模块,用硬件转换后,CPU占用率明显会降低,看你的芯片支不支持了。
你的是什么CPU,我想单核里面,我们现在用到的应该算是很好的了,DM3730,1GHZ的那种。你做什么分辨率的录像呢,要录多少帧呢,这些数据都很关键的。 你用硬件上的yuv转RGB模块,是一个专门的一个控制器做的吗?还是说是显示控制里面的一部分,还是摄像头控制里面的一部分,请详细说明下,谢谢
henrypiao 2014-01-07
  • 打赏
  • 举报
回复
软解的CPU占用率就是这么高,之前我们都是用硬件上的YUV转RGB模块,用硬件转换后,CPU占用率明显会降低,看你的芯片支不支持了。
91program 2014-01-07
  • 打赏
  • 举报
回复
除了方案的原因,你录像的代码也可能有问题,导致 CPU 占用率高。这些都有可能的,一步步排查吧。
91program 2014-01-07
  • 打赏
  • 举报
回复
LZ,你这是哪家的方案?纯软件编码吗,怎么 CPU 占用率这么高!
unsway123 2014-01-02
  • 打赏
  • 举报
回复
顶啊,咋没人,没人遇到过这个问题啊,不可能吧,做camera的,应该都会碰到吧

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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