24. februarja, po več kot letu dni razvoja, je izšla različica 0.11.22 večplatformne knjižnice za zajemanje in predvajanje zvoka. miniaudio, napisan v jeziku C in distribucija kot javna last.
miniaudio deluje na vseh glavnih namiznih in mobilnih platformah, vključno z Windows, macOS, Linux, BSD, iOS, Android in Web (preko Emscripten) brez zunanjih odvisnosti.
Knjižnica ima enostavno, fleksibilno in modularno API z vgrajenimi dekoderji (WAV, MP3 in FLAC), razširjenim mešanjem in obdelavo učinkov (vključno s 3D), upravljanjem virov, filtri, pretvorbo podatkov in še več.
Glavne spremembe:
- Začne se prehod na ločeni par datotek .c/.h z različico 0.12, opuščena bo enotna glava. Za pripravo je bila v repozitorij dodana datoteka miniaudio.c. Ta datoteka trenutno deluje kot povprečje okoli miniaudio.h in MINIAUDIO_IMPLEMENTATION. V miniaudio.h se ni spremenilo, vendar bo ob izidu različice 0.12 potrebno uporabljati miniaudio.c za prevajanje. Priporočamo, da začnete prehod od uporabe MINIAUDIO_IMPLEMENTATION na miniaudio.c. Če želite nadaljevati s sestavljanjem svojega projekta kot enotne enote prevajanja, lahko uporabite #include "miniaudio.c". Ta način bo podprt v različici 0.12 in naprej.
- Datoteke miniaudio_libvorbis.h in miniaudio_libopus.h v direktoriju extras so razglašene za zastarele. Sedaj so razdeljene na ločene datoteke .c in .h v direktoriju extras/decoders. Stare datoteke še vedno obstajajo za združljivost, vendar se morate preusmeriti na nove različice. Prehod bi moral biti trivialen.
- Dodane so možnosti MA_SOUND_FLAG_LOOPING in MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Te je mogoče uporabiti za inicializacijo zvokov in upravljanih virov podatkov za privzeto ciklično predvajanje. To je priporočeni način za vključitev cikličnega predvajanja za tokove. Možnosti konfiguracije isLooping v ma_sound_config in ma_resource_manager_data_source_config so razglašene za zastarele. Če jih uporabljate, se morate preusmeriti na nove možnosti, sicer boste ob nadgradnji na prihodnje različice naleteli na napake pri prevajanju.
- ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() in ma_pcm_rb_commit_write() več ne vrnejo MA_AT_END. Razlog za to spremembo je v tem, da v obročnem predpomnilniku ne obstaja koncept "konca", kar je povzročalo nejasnosti v vračanju rezultatov. Poleg tega te funkcije lahko vrnejo kaj drugega, ne MA_SUCCESS, tudi če je bila operacija uspešna, kar je dodatno zmedlo. Pravilen način za preverjanje, ali je v obročnem predpomnilniku še prostor, je pogledati števec okvirjev, ki ga vrnejo funkcije rb_acquire_read/write().
- Implementacija podatkovnega vira ma_pcm_rb je spremenjena tako, da se izhod napolni s tišino, če v obročnem predpomnilniku ni dovolj podatkov za izpolnitev zahtevka. To pomeni, da ma_data_source_read_pcm_frames() za ma_pcm_rb več ne bi smela vrniti manj kot zahtevanega števila okvirjev in zato nikoli ne bo vrnila MA_AT_END, kar v obročnem predpomnilniku nima smisla, saj nima koncepta konca. Ta sprememba bi morala znatno poenostaviti uporabo obročnega predpomnilnika kot podatkovnega vira za ma_sound.
- V funkcijo ma_calculate_buffer_size_in_milliseconds_from_frames() je bila dodana majhna sprememba, zaradi katere vrne vrednost, zaokroženo na najbližje celo število.
- Pri neuspešni inicializaciji dekoderja se zdaj vrne prvi najdeni koda napake, ne pa MA_NO_BACKEND ne glede na napako, kot je bilo prej.
- Dodana je funkcija ma_device_id_equal() za primerjavo identifikatorjev naprav.
- Dodana je podpora MA_NO_RUNTIME_LINKING v AAudio backend.
- Dokumentacija je posodobljena.
- Odpravljene so bile zaznane napake.
Izvor: linux.org.ru
