我有一些与我的应用程序相关的问题,该应用程序进行视频解码(用 C 编写)并显示解码帧(我正在使用 NDK):
1- 在 Android 上(在 1 GHz Cortex A-8 处理器上运行),应用程序的运行速度比 Windows(在 3 GHz 处理器上运行)慢大约 10 倍。我预计慢 3-4 倍,但不会慢 9-10 倍。(基本上帧率非常低)
2-我认为我可能没有针对正确的目标(Cortex A 8)进行编译。所以我编辑了我的 Application.mk 文件。
APP_ABI := armeabi armeabi-v7a mips
我还需要编辑其他 .mk 文件吗?
这种包含是否足以相信我正在为正确的目标进行编译?
(问这个问题是因为即使在包括这个之后我也没有得到任何明显的改进。有没有办法我可以双重确定我正在为正确的目标(Cortex A8)进行编译。
Android 和 Windows 的性能差异如此之大的可能原因是什么,即使 Android 是一个实时操作系统,Cortex 是一个双问题处理器,支持 Neon 等等。
附加信息和我的分析:
1-我还必须提到我正在使用主线程来更新 UI(调用 Ondraw() )和另一个线程进行解码。
2-插入一些调试代码后,我可以看到在解码新帧之前多次调用显示函数。我在想这可能是我的帧速率变差的原因;显示器正在窃取所有的 CPU 资源,因此解码变得更慢,并且显示功能一次又一次地显示相同的数据,这看起来质量很差。在 Windows 中,我有单线程进行解码和显示,那里没有主线程。(虽然这是我的猜测,但我不确定结论。)