fanxiushu/vcam_dshow

似乎存在GDI内存泄漏?

Opened this issue · 5 comments

似乎存在GDI内存泄漏?

在哪呢?整个工程中也就只有main.cpp中有GDI身影,这个部分只是演示如何给DSHOW虚拟摄像头输入图像数据源而已。
实际使用都会替代掉这部分内容。
windows中虚拟摄像头有很多实现方案,具体有兴趣你可以查看我CSDN文章。
DSHOW局限性挺大,最好还是使用内核驱动级别的。

在采用dshow架构的视频通话软件中,使用虚拟摄像头在通话超过30分钟,结束通话,CPU直接蹦到100 卡死;在main中取消掉文字输入的源,结果还是如此;不知道哪里出了问题,在跟进此问题;你是否做过长时间的测试 例如30分钟 60分钟?

查看代码,我将下面代码注释就没有产生CPU达到100%的情况
```
VCamDShowFactory* fact = new VCamDShowFactory;
fact->m_callback = VCam_Frame_Callback; // 获取视频帧数据
fact->param = 0;
HRESULT hr = fact->QueryInterface(riid, ppv);
if (FAILED(hr)) {
delete fact;
}
return hr;

应该是获取视频帧数据的 流程中出现了问题,持续跟进中

你这样屏蔽,不就等于屏蔽了整个摄像头功能。
并没做过长时间测试,也并没去怎么关注。你如果能发现其中有什么问题,如果愿意可以公布出来。
当你有USB模拟的虚拟摄像头,AVStream内核摄像头,stream老内核流摄像头等一大堆更好的解决方案。
而dshow有用本身应用层的限制,估计也不会做为重点关注对象。

暂时无法定位问题,就这样吧~ 作者的实现思路很好,有空再好好研究