miniaudio 0.11.22

miniaudio 0.11.22

24 月 0.11.22 日,经过一年多的开发,跨平台音频捕获和播放库 XNUMX 版本发布 迷你音响,用 C 编写并在公共领域分发。
miniaudio 可在所有主流桌面和移动平台上运行,包括 Windows、macOS、Linux、BSD、iOS、Android 和 Web(通过 Emscripten),无需任何第三方依赖。
该库具有简单、灵活和模块化的 API,内置解码器(WAV、MP3 和 FLAC)、高级混音和效果处理(包括 3D)、资源管理、过滤器、数据转换等。

主要变化:

  • 从 0.12 版本开始,miniaudio 将移至单独的一对 .c/h 文件,放弃单个头文件。为了为此做好准备,已将 miniaudio.c 文件添加到存储库。目前它只是 miniaudio.h 和 MINIAUDIO_IMPLEMENTATION 的包装器。 miniaudio.h 没有任何变化,但是当 0.12 版本发布时,您将需要使用 miniaudio.c 进行编译。建议开始从使用 MINIAUDIO_IMPLEMENTATION 迁移到使用 miniaudio.c。如果您想继续将您的项目构建为单个编译单元,您可以#include“miniaudio.c”。该方法将在0.12及以后版本中得到支持。
  • extras 目录中的文件 miniaudio_libvorbis.h 和 miniaudio_libopus.h 已被弃用。现在它们被分成 extras/decoders 目录中单独的 .c 和 .h 文件。为了保证兼容性,旧文件仍然存在,但您需要升级到新版本。转变应该很简单。
  • 添加了选项 MA_SOUND_FLAG_LOOPING 和 MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING。它们可用于初始化声音和资源驱动的数据源以默认循环。这是启用线程循环的推荐方法。 ma_sound_config 和 ma_resource_manager_data_source_config 中的 isLooping 配置选项已被弃用。如果您正在使用它们,您应该升级到新的选项,否则升级到未来版本时会出现编译器错误。
  • ma_rb_commit_read()、ma_rb_commit_write()、ma_pcm_rb_commit_read() 和 ma_pcm_rb_commit_write() 不再返回 MA_AT_END。进行这种改变的原因在于环形缓冲区中没有“结束”的概念,这使得结果代码不清楚。此外,即使操作成功完成,这些函数也可能返回 MA_SUCCESS 以外的其他内容,这增加了混乱。检查环形缓冲区是否还有空间的正确方法是查看 rb_acquire_read/write() 函数返回的帧计数器。
  • ma_pcm_rb 数据源的实现已经改变,如果环形缓冲区中没有足够的数据来满足请求,则输出将充满静默。这意味着 ma_pcm_rb 的 ma_data_source_read_pcm_frames() 不再应返回少于您请求的帧数,因此永远不会返回 MA_AT_END,这对于环形缓冲区来说毫无意义,因为它没有结束的概念。这一变化使得使用环形缓冲区作为 ma_sound 的数据源变得更加容易。
  • 对 ma_calculate_buffer_size_in_milliseconds_from_frames() 函数做了一些小改动,以便它返回四舍五入到最接近的整数的值。
  • 如果解码器初始化失败,则现在返回遇到的第一个错误代码,而不是像以前一样无论错误是什么都返回 MA_NO_BACKEND。
  • 添加了 ma_device_id_equal() 函数用于比较设备 ID。
  • 为 AAudio 后端添加了对 MA_NO_RUNTIME_LINKING 的支持。
  • 文档已更新。
  • 检测到的错误已修复。

来源: linux.org.ru

添加评论