dshow videorender 直接接收yuv
用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了之后,再通过协商新的格式,实现动态格式改变
大家都有何见解