作者givemepass (〆)
看板AndroidDev
标题[问题] Camera的preview callback问题
时间Wed Apr 25 16:43:27 2012
大家好 ,
我在使用Camera preview的时候, CPU Loading很低, 大约在0%上下跳动,
但是只要设定setPreviewCallback的时候,
CPU Loading就会跳很高, 以我测试的板子来说(CPU 1GHz,单核),
大约在40%~50%左右,
我想请问
为什麽只是加一个callback function, 就会让CPU Loading变这麽高?
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.221.115.4
1F:→ iincho:多了几道memory copy的动作,但是这应该是I/O bound 04/25 18:26
I/O ? 是指相机一直在截取资料吗?
可是如果单纯相机截取就吃掉这麽多cpu loading很奇怪
2F:推 hijamoya:gc的问题 04/25 18:28
嗯 Log一直印出gc的画面 我猜这是主因
3F:→ gpc:会一直丢东西给你阿 04/25 20:56
丢相机截取的资料吗?
请问有什麽办法可以让CPU Loading下降?
因为我修改kernel 将相机的frame rate改成30fps,
cpu 会跑到80~90%,
但是我测试s2,相机也是30fps,他的cpu loading只有60%左右,
我猜双核心跟时脉也是有关系, 所以有没有什麽办法可以解决这个问题?
※ 编辑: givemepass 来自: 61.62.45.126 (04/25 23:00)
自问自答一下, 上网找了很多资料,
我发现Log一值在gc, 因此就根据这个问题找到这个讨论
http://code.google.com/p/android/issues/detail?id=2794
原来早在1.6的时候, 早已出现这个问题
而且目前这个问题还是存在(我是用2.3.3)
所以我又找到这篇文章解决目前的问题
http://nhenze.net/?p=349
原因出在Camera在callback的时候,
会将读到的影像存到一个新宣告的阵列,
丢给callback function,
然後gc再把这个阵列回收,
持续重复这个动作, 就会造成大量cpu loading,
因此我照着上面的网页去修改android_hardware_camera.cpp
重新烧录filesystem,
cpu loading大幅下降,
而gc的讯息不再出现, 因此问题解决,
感谢大家的回应。
※ 编辑: givemepass 来自: 61.221.115.4 (04/26 11:24)