iOS应用在一段时间后没有互动而滞后

时间:2016-07-12 13:48:41

标签: ios objective-c multithreading opengl-es video-streaming

我有一个iOS应用程序,它将计算机的屏幕流式传输到设备并使用OpenGLES显示它。到目前为止,帧速率非常好。渲染时我总是保持在60,没问题。

主要问题是8-10秒后出现奇怪的延迟。我制作了一个视频来描述它。更奇怪的是,当我与UI(例如iOS顶部栏)进行交互时,延迟会消失8-10秒,然后又会回来。

Here's the video

对应用程序进行概要分析,当存在滞后时,CPU使用率会明显增加。您可以看到的下降是应用程序顺利运行。

Profiling

延迟10秒,主线程有大约1秒的CPU时间,后台线程(用于接收帧和解码)使用大约7.5秒。

平滑度为10秒,主线程将使用大约450ms的CPU时间,后台线程使用3.5秒。

我觉得当不使用设备(或似乎不使用设备)时,iOS正在改变某些线程的优先级。背景线程不会变得更重,我可以不断拉动iOS顶部栏并以这种方式获得完美的视频。我真的不确定是什么原因导致这种行为。

我考虑改变线程优先级,但这没有改变任何东西。我还尝试禁用OpenGL纹理上传和/或禁用渲染,甚至更好。

我曾经使用VNC来传输视频,但我遇到了同样的问题,所以我认为这与视频流的网络/解码无关。

0 个答案:

没有答案