wince 6 使用500W摄像头拍照占用内存过大问题
使用环境:
CPU:6410
RAM: 256M (运行内存150M左右)
系统:WINCE 6.0
摄像头:5M(500万,最大像素2592*1944)
现象描述:
设置摄像头输出为2592*1944,buffer都设到足够大(2592*1944*2),预览设置为2592*1944,使用DSHOW程序控制摄像头。
DSHOW程序中只要设置
CHK(m_pCaptureGraphBuilder->RenderStream( &PIN_CATEGORY_STILL, &MEDIATYPE_Video, m_pVideoCaptureFilter, NULL, m_pImageSinkFilter ));
就会发现占用内存过大(已使用内存超过120M),这时,无法预览成功。屏蔽掉这一句之后可以预览成功,但不能进行拍照。
而我把这个摄像头设置为300W的时候,一切正常,设置到500W就出现这样的问题。设置为300W的时候,已使用的内存达到130多M。
300W和500W占用的内存对比,发现500W的少于300W的,同时从调试信息中看到,500W那个无法预览的时候,申请内存还有一次没有出现。
得出结论:内存不足,无法支持到500W摄像头。
请问各位有没有遇到占用内存过大的问题,有解决的方法吗?
在网上看到有的人说这个是三星camera的bug,不知道是否如此?
我试过预览使用低分辨,拍照那一下才重新配置为500W/300W,拍完之后,再重新配置为低分辨率进行预览。发现情况依旧。
期待各位高手、大大出现 wince 摄像头
[解决办法]
用rgb方式预览,拍照用sensor直接输出的jpg模式
[解决办法]
首先找fae要配置成jpg输出的寄存器设置,然后在切换到still模式时将这组设置写到sensor里。最后在中断里接收jpg的头和尾,把里面的数据传给应用层,用ijpg模式,这个wince和wm6都是支持的
[解决办法]
请问楼主是什么图像格式输出?YUY2还是MJPG?
MJPG 5M在电脑上也无法预览,因为Dshow自带的MJPG decoder是无法解码5M及5M以上的分辨率!
YUY2格式输出,不存在解码的问题,内存开销也少,处理5M图像一块buffer需要5x2=10M内存。
RGB图像输出一般是由MJPG解码的,RGB图像占用内存也比Yuy2多,一帧需要5x3=15M内存。
[解决办法]
所以输出格式是YUV420!
m_pImageSinkFilter显示图像的时候是否能够支援到2592X1944这么大的分辨率。