miniaudio 0.11.22

miniaudio 0.11.22

На 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.
  • Актуализирана е документацията.
  • Отстранени са откритите грешки.

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster