2014-09-01 107 views
0

最近我升级我的手机从S2(三星)到S4。我开发了一个应用程序,它对帧进行一些处理。在不改变代码中的任何内容的情况下,S4中的fps速率已经下降。我真的没有答案,因为我只改变minSDk版本和TargetSdk版本...帧速率放慢Android相机

下面是代码

public void onPreviewFrame(byte[] data, Camera camera) 
{ 
    if (Debug_fps) Log.d("Fps","...."); 
    // processing 30 ms 
    camera.addCallbackBuffer(data); 
} 

一些相关数据

AverageTime between frames S2: 5 - 10 ms 
AverageTime between frames S4: 30- 35 ms 

AverageTime processing S2: 32 ms 
AverageTime processing S4: 30 ms 

我真的不明白为什么这些巨大的差异,为什么接受这个框架需要很长时间。

我真的很感激,如果一些能提供一个答案,

预先感谢您

回答

1

我的第一个猜想是,在S2拥有一个mutch较小的分辨率(〜800万像素)和一个摄像头S4有一个约13MP的相机。更多像素意味着需要更多时间来处理它们。另一个原因可能是两款手机的差异化框架。也许Galaxy S4通过不需要绘制比绝对需要更多的帧来节省能源(30ms约为30 fps),所以android会将帧限制为每秒30帧。

+0

嗨,感谢您的回复,两部手机的处理时间都是一样的。但是,最终处理和调用onpreviewFrame()之间的时间变化非常大......(10ms(S2)vs 30ms(S4))。 – 2014-09-01 20:25:31

+0

@IgnacioFerrero这就是我所说的 - 更多的像素 - >更多的时间来处理。 – Gumbo 2014-09-01 20:31:48

+0

所以你建议有一个转换来提供一个byte []向量?因此需要更多时间从13mp转换为1440x1080?我真的不知道手机是如何从相机提供byte []数组的。所以我应该在两次通话之间接受30毫秒,没有可能的解决方案? – 2014-09-01 20:54:30