miniaudio 0.11.22

miniaudio 0.11.22

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

Přidat komentář