24 февраля, после более года разработки, состоялся выпуск 0.11.22 кроссплатформенной библиотеки захвата и воспроизведения звука miniaudio, написанной на языке C и распространяемой, как общественное достояние. miniaudio работает на всех основных настольных и мобильных платформах без сторонних зависимостей.
Поддерживаемые платформы и бэкенды:
- Android: AAudio, OpenSL или ES.
- FreeBSD / OpenBSD / NetBSD: OSS, sndio, audio(4).
- Linux: ALSA, PulseAudio, JACK.
- macOS / iOS: Core Audio.
- Web: Emscripten / WebAudio.
- Windows: WASAPI, DirectSound, WinMM.
Библиотека имеет простой, гибкий и модульный 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. - Обновлена документация.
- Исправлены обнаруженные ошибки.














