2012-09-24 12 views
1

當Camera.preview回調正在運行時,每個幀都會調用GC Malloc。我認爲這增加了我的幀速率的緩慢。由於每個幀的GC Malloc調用,Camera.Preview回調效率低下?

有沒有人對減少這些調用的方法有任何建議。我試過搜索谷歌組,並且似乎沒有太多的迴應,所以我想從在他們的應用程序中構建和使用相機預覽的人那裏獲取信息。

當GC Malloc被調用時,似乎每次都會使用一段新的數據來保存幀。這可以預先定義? - 這是什麼callbackwithBuffer呢?我很難得到我的頭,並已無法正確實施緩衝區的回調,所以任何幫助如何做到這一點,將不勝感激。

也可以有人完全解釋什麼是在相機預覽運行時與幀的內存發生。

謝謝先進。

回答

1

您遇到的問題是Android的舊版本中的一個問題,其中分配內存和在短時間內收集垃圾導致性能瓶頸。

說明可以在這裏找到:http://code.google.com/p/android/issues/detail?id=2794

您的問題可以通過使用一些隱蔽的方法來固定。但是,您需要使用反射來公開它們(錯誤鏈接還有其他示例)。

如果我正確記得這個問題已經在Froyo修復。

+2

那麼......這個bootleneck也出現在我的Android 4.3和4.4(Google Nexus 4)中......我可以在沒有任何處理的情況下使用opencv達到10 fps左右,只是響應recived幀。也許我應該嘗試setPreviewWithBuffer ...你怎麼看? –