miniaudio 0.11.22

good-penguin.png

24 февраля, после более года разработки, состоялся выпуск 0.11.22 кроссплатформенной библиотеки захвата и воспроизведения звука miniaudio, написанной на языке 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 и далее.
  • Файлы miniaudio_libvorbis.h и miniaudio_libopus.h в директории extras объявлены устаревшими. Теперь они разделены на отдельные файлы .c и .h в директории extras/decoders. Старые файлы всё ещё существуют для совместимости, но вам нужно будет перейти на новые версии. Переход должен быть тривиальным.
  • Добавлены опции MA_SOUND_FLAG_LOOPING и MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Их можно использовать для инициализации звуков и управляемых ресурсами источников данных для зацикливания по умолчанию. Это рекомендуемый способ включения зацикливания для потоков. Опции конфигурации isLooping в ma_sound_config и ma_resource_manager_data_source_config объявлены устаревшими. Если вы используете их, то вам следует перейти на новые опции, иначе при обновлении до будущей версии вы получите ошибки компилятора.
  • 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_data_source_read_pcm_frames() для ma_pcm_rb больше не должна возвращать количество кадров меньше, чем вы запросили, и поэтому никогда не будет возвращать MA_AT_END, что не имеет смысла для кольцевого буфера, поскольку у него нет понятия конца. Это изменение должно значительно упростить использование кольцевого буфера в качестве источника данных для ma_sound.
  • В функцию ma_calculate_buffer_size_in_milliseconds_from_frames() внесено небольшое изменение, в результате которого она возвращает значение, округленное до ближайшего целого числа.
  • При неудачной инициализации декодера теперь возвращается первый встретившийся код ошибки, а не MA_NO_BACKEND независимо от ошибки, как было ранее.
  • Добавлена функция ma_device_id_equal() для сравнения идентификаторов устройств.
  • Добавлена поддержка MA_NO_RUNTIME_LINKING в бэкэнд AAudio.
  • Обновлена документация.
  • Исправлены обнаруженные ошибки.

>>> Список изменений на GitHub

©  Linux.org.ru