Február 24-én, több mint egy éves fejlesztés után, megjelent a többplatformos hangrögzítési és lejátszási könyvtár 0.11.22 verziója. miniaudio, C nyelven írva és nyilvánosan terjesztve.
A miniaudio minden nagyobb asztali és mobilplatformon fut, beleértve a Windowst, a macOS-t, a Linuxot, a BSD-t, az iOS-t, az Androidot és a weben (az Emscriptenen keresztül), harmadik féltől való függőség nélkül.
A könyvtár egyszerű, rugalmas és moduláris API-val rendelkezik, beépített dekóderekkel (WAV, MP3 és FLAC), fejlett keveréssel és effektus-feldolgozással (beleértve a 3D-t), erőforrás-kezeléssel, szűrőkkel, adatkonverzióval és még sok mással.
Nagy változások:
- A 0.12-es verziótól kezdődően a miniaudio egy különálló .c/h fájlpárba kerül, elhagyva az egyetlen fejlécfájlt. Ennek előkészítésére egy miniaudio.c fájl került a tárolóba. Jelenleg ez csak egy burkolóanyag a miniaudio.h és a MINIAUDIO_IMPLEMENTATION körül. A miniaudio.h-ban semmi sem változott, azonban a 0.12-es verzió megjelenésekor a miniaudio.c-t kell használnia a fordításhoz. Javasoljuk, hogy kezdje meg az átállást a MINIAUDIO_IMPLEMENTATION használatáról a miniaudio.c használatára. Ha egyetlen fordítási egységként szeretné folytatni a projekt felépítését, #include "miniaudio.c". Ezt a módszert a 0.12-es és újabb verziók támogatják.
- Az extras könyvtárban található miniaudio_libvorbis.h és miniaudio_libopus.h fájlok elavultak. Ezek most külön .c és .h fájlokra vannak osztva az extrák/dekóderek könyvtárban. A régi fájlok még mindig léteznek a kompatibilitás érdekében, de frissítenie kell az új verziókra. Az átmenetnek triviálisnak kell lennie.
- Hozzáadott lehetőségek: MA_SOUND_FLAG_LOOPING és MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Használhatók a hangok inicializálására és az erőforrás-vezérelt adatforrások alapértelmezés szerinti hurkolására. Ez az ajánlott mód a szálak hurkolásának engedélyezésére. A ma_sound_config és a ma_resource_manager_data_source_config isLooping konfigurációs beállításai elavultak. Ha ezeket használod, frissíts az új opciókra, ellenkező esetben fordítói hibákat kapsz a jövőbeli verzióra való frissítéskor.
- A ma_rb_commit_read(), a ma_rb_commit_write(), a ma_pcm_rb_commit_read() és a ma_pcm_rb_commit_write() már nem tér vissza MA_AT_END. Ennek a változásnak az az oka, hogy a gyűrűpufferben nem szerepel a "vége" fogalma, ami miatt az eredmény kódja nem egyértelmű. Ezenkívül ezek a függvények a MA_SUCCESS függvényen kívül mást is visszaadhatnak, ha a művelet sikeresen befejeződött, ami tovább növelte a zavart. A helyes módszer annak ellenőrzésére, hogy van-e még hely a gyűrűpufferben, ha megnézzük az rb_acquire_read/write() függvények által visszaadott keretszámlálót.
- A ma_pcm_rb adatforrás megvalósítása módosult, így a kimenet csenddel lesz tele, ha nincs elég adat a gyűrűpufferben a kérés teljesítéséhez. Ez azt jelenti, hogy a ma_pcm_rb-hez tartozó ma_data_source_read_pcm_frames() többé nem térhet vissza a kértnél kevesebb képkockával, ezért soha nem adja vissza a MA_AT_END értéket, aminek nincs értelme a gyűrűs puffer esetében, mivel nincs fogalma a végről. Ez a változtatás sokkal könnyebbé teszi a csengetési puffer használatát a ma_sound adatforrásaként.
- Egy kis változtatás történt a ma_calculate_buffer_size_in_milliseconds_from_frames() függvényben, így a legközelebbi egész számra kerekített értéket ad vissza.
- Ha a dekóder inicializálása meghiúsul, a rendszer most az első hibakódot adja vissza, nem pedig MA_NO_BACKEND, a hibától függetlenül, mint korábban.
- A ma_device_id_equal() függvény hozzáadva az eszközazonosítók összehasonlításához.
- A MA_NO_RUNTIME_LINKING támogatása hozzáadva az AAudio háttérrendszerhez.
- A dokumentáció frissítve.
- Az észlelt hibákat javítottuk.
Forrás: linux.org.ru
