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
