【问题标题】:OpenSL slCreateEngine error on old Android Devices旧 Android 设备上的 OpenSL slCreateEngine 错误
【发布时间】:2013-10-08 03:31:46
【问题描述】:

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

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

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

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

我的一些理论:

HTC Wildfire S 的规格如下:

  • Android 2.3.4(据我所知通过运营商更新)
  • 高通 MSM7227(ARMv6 处理器)
  • 512MB 内存

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

问题:

  1. 有谁知道是什么原因导致报告的错误 设备?
  2. 有没有办法确定哪些设备与 OpenSL ES 兼容?
  3. ARMv6 设备是否必然与 OpenSL ES 不兼容?

编辑 看我的 cmets 到 HerrLip

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

【问题讨论】:

    标签: android audio android-ndk opensl


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

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

    3. 我不知道

    【讨论】:

    • 好主意。奇怪的是,我尝试了位于 NDK 文件夹中的 NativeAudio 示例,效果很好。调用slCreateEngine命令时没有类似的失败。
    • 另外,我在加载“libmmparser.so”和“libmmparser_lite.so”时仍然看到同样的错误。
    • 你给 slCreateEngine() 提供了什么参数?
    • 此外,库错误听起来确实像是链接问题或设置处理器选项的问题,如果有帮助的话。
    • 我按如下方式调用该函数:result = slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多