旧Android设备上的OpenSL slCreateEngine错误

时间:2013-10-01 20:24:30

标签: android audio android-ndk opensl

我正在编写一个通过OpenSL ES使用缓冲区队列音频播放器的Android应用程序。我的应用程序在最近的设备上运行得很好,但我遇到了HTC Wildfire S的麻烦。

特别是,调用slCreateEngine函数会产生SL_RESULT_RESOURCE_ERROR。文档中没有关于此错误的大量信息。

在调用slCreateEngine之前,我也在LogCat中看到这些错误:

  • 无法打开MM_PARSER_LIB,dlerror =无法加载库:load_library [1105]:Library' libmmparser.so'找不到
  • 无法打开MM_PARSER_LITE_LIB,dlerror =无法加载库:load_library [1105]:Library' libmmparser_lite.so'找不到

我有一些理论:

HTC Wildfire S的规格如下:

  • Android 2.3.4(据我所知,我可以通过运营商更新)
  • Qualcomm MSM7227(ARMv6处理器)
  • 512MB RAM

我知道从Gingerbread开始支持Open SL ES,但这并不意味着所有设备都具备此功能。由于此应用程序的其他要求,我必须使用NDK进行音频处理和播放,不能使用Media Player或AudioTrack。

问题:

  1. 有谁知道可能导致报告错误的原因 设备
  2. 有没有办法确定哪些设备与OpenSL ES兼容?
  3. ARMv6设备是否必然与OpenSL ES不兼容?
  4. 修改 请参阅我对HerrLip的评论

    • NDK文件夹中的NativeAudio示例在此设备上运行,并且slCreateEngine已成功执行。这消除了我对设备和其他ARMv6设备不受支持的怀疑。
    • 仍然无法在NativeAudio示例中加载libmmparser.so和libmmparser_lite.so库,但这似乎不是问题,因为它可以在设备上运行。
    • 我的应用程序比NativeAudio示例要多得多。也许内存限制阻止了slCreateEngine函数调用获取所需的资源。

1 个答案:

答案 0 :(得分:0)

  1. 根据文档,该错误代码的意思是“由于缺乏资源(通常是对象实现的结果)导致操作失败。”所以,我认为你对约束是正确的。

  2. 您可以尝试其他人的应用,看看会发生什么。 (尝试https://code.google.com/p/high-performance-audio/source/browse/audio-buffer-size

  3. 我不知道