关于VMR9的一个奇怪问题?困扰了很久。希望各位大虾多多赐教!
极深研几 2004-08-11 07:13:45 上次的不知道为什么不能打开了,重发!
这几个月,一直做一个视频传输系统。服务器端基于硬件采集卡的sdk包,实现了视频预览录制,网络播出组播,我自己写。客户端也是用相应的sdk包实现的网络接受,解码显示,录制和回放文件其中包括实现局部放大功能就是使用的VMR9,这部分代码是别人写的。大概在六月中旬,已经修改了好几次了,正在烦的时候,公司又突然要我改客户端的程序。当时边读代码边改写,测试的过程中发现VMR9在连续回放几次(Win2000下3次)文件之后,没有了图像,CPU占有率也下来了,调试发现问题可能在于IVMRWindowlessControl9的RendEx()函数,记不太清了(写代码的机器不让上网)。调用一定次数就失败。后来又去弄Mp3解码,最近又安排改这个问题。在Winxp下运行的时候发现8次后又出现没有图像的情况,甚至影响到预览图像。即有时用VMR9回放几次到没有图像后,接受网络数据解码预览也没有了图像,后来全屏显示用另外窗口来显示又有图像。切换回原来的窗口时又有了图像。真奇怪,这段时间一直在改也没有解决!对了文件格式MPEG4 divx avi格式。
几点猜测:
1,回放功能封装在一个类CVMRPlay类自定义的中,用一个player指针,每次调用都是new delete,可能是反复new delete导致了资源泄露,从而的后续调用失败。
2,VMR组件本身有这个问题。
本人刚学了些COM,DirecctShow VMR对了解太少,实在找不出其中的原因和解决之道。求各位大虾救出苦海!请大家踊跃发言,帮忙分析原因,解决问题。越快越好!