24. února, po více než roce vývoje, byla vydána 0.11.22 multiplatformní knihovny pro záznam a přehrávání zvuku miniaudio, napsaný v C a distribuovaný ve veřejné doméně.
miniaudio běží na všech hlavních desktopových a mobilních platformách, včetně Windows, macOS, Linux, BSD, iOS, Android a Web (přes Emscripten) bez závislostí na třetích stranách.
Knihovna má jednoduché, flexibilní a modulární API s vestavěnými dekodéry (WAV, MP3 a FLAC), pokročilým zpracováním mixů a efektů (včetně 3D), správou zdrojů, filtry, konverzí dat a mnoha dalšími.
Hlavní změny:
- Počínaje verzí 0.12 se miniaudio přesune do samostatné dvojice souborů .c/h a opustí jediný soubor záhlaví. Aby se to připravilo, byl do úložiště přidán soubor miniaudio.c. V tuto chvíli je to jen obal kolem miniaudio.h a MINIAUDIO_IMPLEMENTATION. V miniaudio.h se nic nezměnilo, ale až vyjde verze 0.12, budete muset pro kompilaci použít miniaudio.c. Doporučuje se zahájit migraci z použití MINIAUDIO_IMPLEMENTATION na použití miniaudio.c. Pokud chcete pokračovat ve vytváření svého projektu jako samostatné kompilační jednotky, můžete #include "miniaudio.c". Tato metoda bude podporována ve verzi 0.12 a novější.
- Soubory miniaudio_libvorbis.h a miniaudio_libopus.h v adresáři extras byly zastaralé. Nyní jsou rozděleny do samostatných souborů .ca .h v adresáři extras/decoders. Staré soubory stále existují kvůli kompatibilitě, ale budete muset upgradovat na nové verze. Přechod by měl být triviální.
- Přidány možnosti MA_SOUND_FLAG_LOOPING a MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Lze je použít k inicializaci zvuků a zdrojů dat řízených zdroji dat do smyčky ve výchozím nastavení. Toto je doporučený způsob, jak povolit smyčkování pro vlákna. Možnosti konfigurace isLooping v ma_sound_config a ma_resource_manager_data_source_config byly zastaralé. Pokud je používáte, měli byste upgradovat na nové možnosti, jinak se při aktualizaci na budoucí verzi zobrazí chyby kompilátoru.
- ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() a ma_pcm_rb_commit_write() již nevrací MA_AT_END. Důvodem této změny je, že v kruhové vyrovnávací paměti neexistuje žádný koncept „konce“, což způsobilo nejasnost výsledného kódu. Tyto funkce by navíc mohly vrátit něco jiného než MA_SUCCESS, i když byla operace úspěšně dokončena, což přispělo ke zmatku. Správný způsob, jak zkontrolovat, zda je v kruhové vyrovnávací paměti ještě místo, je podívat se na čítač snímků vrácený funkcemi rb_acquire_read/write().
- Implementace zdroje dat ma_pcm_rb byla změněna tak, aby výstup byl vyplněn tichem, pokud v kruhové vyrovnávací paměti není dostatek dat ke splnění požadavku. To znamená, že ma_data_source_read_pcm_frames() pro ma_pcm_rb by již nemělo vracet počet snímků menší, než jste požadovali, a proto nikdy nevrátí MA_AT_END, což pro kruhovou vyrovnávací paměť nedává smysl, protože nemá žádný koncept konce. Tato změna by měla výrazně usnadnit použití kruhové vyrovnávací paměti jako zdroje dat pro ma_sound.
- Ve funkci ma_calculate_buffer_size_in_milliseconds_from_frames() byla provedena malá změna, takže vrací hodnotu zaokrouhlenou na nejbližší celé číslo.
- Pokud se inicializace dekodéru nezdaří, je nyní vrácen první kód chyby, nikoli MA_NO_BACKEND bez ohledu na chybu, jak tomu bylo dříve.
- Přidána funkce ma_device_id_equal() pro porovnávání ID zařízení.
- Přidána podpora MA_NO_RUNTIME_LINKING do backendu AAudio.
- Dokumentace aktualizována.
- Zjištěné chyby byly opraveny.
Zdroj: linux.org.ru
