2023. gada 24. februārī, pēc vairāk nekā gada izstrādes, tika izlaista 0.11.22 daudzplatformu audio ievades un izvades bibliotēka. miniaudio, kas uzrakstīta C valodā un tiek izplatīta kā publiskais īpašums.
miniaudio darbojas visās galvenajās darbvirsmas un mobilajās platformās, tostarp Windows, macOS, Linux, BSD, iOS, Android un Web (ar Emscripten), bez trešo pušu atkarībām.
Bibliotēkai ir vienkāršs, elastīgs un modulārs API ar iebūvētiem dekoderiem (WAV, MP3 un FLAC), paplašinātu miksēšanu un efektu apstrādi (tostarp 3D), resursu pārvaldību, filtriem, datu pārvēršanu un daudz ko citu.
Galvenās izmaiņas:
- Sākot ar versiju 0.12, miniaudio pāries uz atsevišķu .c/h failu pāri, atteikties no viena galvenā faila. Sagatavošanās šim ir pievienots fails miniaudio.c repozitorijā. Pašlaik tas ir tikai apvalks ap miniaudio.h un MINIAUDIO_IMPLEMENTATION. miniaudio.h nav mainījies, tomēr pēc 0.12 versijas izlaišanas būs jāizmanto miniaudio.c kompilācijai. Ieteicams sākt pāreju no MINIAUDIO_IMPLEMENTATION uz miniaudio.c izmantošanu. Ja vēlaties turpināt veidot projektu kā vienu kompilācijas vienību, varat izmantot #include "miniaudio.c". Šī iespēja tiks atbalstīta 0.12 versijā un turpmāk.
- Faili miniaudio_libvorbis.h un miniaudio_libopus.h extras direktorijā ir atzīti par novecojušiem. Tagad tie ir sadalīti atsevišķos .c un .h failos extras/decoders direktorijā. Vecie faili joprojām pastāv saderības labad, taču jums būs jāpāriet uz jaunajām versijām. Pāreja ir jāveic bez sarežģījumiem.
- Pievienotas opcijas MA_SOUND_FLAG_LOOPING un MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Tos var izmantot, lai inicializētu skaņas un pārvaldītos resursus datu avotiem, kas pēc noklusējuma atkārtojas. Tas ir ieteicamais veids, kā iespējot atkārtošanos plūsmām. Opcijas isLooping konfigurācijā ma_sound_config un ma_resource_manager_data_source_config ir atzītas par novecojušām. Ja tās izmantojat, jums vajadzētu pāriet uz jaunajām opcijām, citādi, atjauninot uz turpmākajām versijām, saņemsiet kompilatora kļūdas.
- ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() un ma_pcm_rb_commit_write() vairs vairs neatgriež MA_AT_END. Šī izmaiņas iemesls ir tas, ka gredzenveida buferī nav jēdziena „beigas”, kas padarīja rezultāta kodu neskaidru. Turklāt šīs funkcijas var neatgriezt MA_SUCCESS, bet kaut ko citu, pat ja operācija tika veikta veiksmīgi, kas radīja papildu jucekli. Pareizs veids, kā pārbaudīt, vai gredzenveida buferī ir vēl vieta, ir paskatīties uz kadru skaitļiem, ko atgriež rb_acquire_read / write() funkcijas.
- Datu avota ma_pcm_rb realizācija ir mainīta tā, lai izejas dati tiktu aizpildīti ar klusumu, ja gredzenveida buferī nav pietiekami datu, lai izpildītu pieprasījumu. Tas nozīmē, ka ma_data_source_read_pcm_frames() ma_pcm_rb vairs nedrīkst atgriezt mazāk kadrus, nekā pieprasījāt, un līdz ar to nekad neatgriezīs MA_AT_END, kas nav jēgas, jo gredzenveida buferim nav jēdziena par beigām. Šī izmaiņas būtiski atvieglos gredzenveida bufera izmantošanu kā datu avotu ma_sound.
- Funkcijā ma_calculate_buffer_size_in_milliseconds_from_frames() ir veikta neliela izmaiņa, kuras rezultātā tā atgriež vērtību, kas noapaļota līdz tuvākajam veselajam skaitlim.
- Ja dekodera inicializācija neizdodas, tagad tiek atgriezts pirmais sastaptais kļūdas kods, nevis MA_NO_BACKEND neatkarīgi no kļūdas kā iepriekš.
- Pievienota funkcija ma_device_id_equal() ierīču identifikatoru salīdzināšanai.
- Pievienota MA_NO_RUNTIME_LINKING atbalsts AAudio aizmugurē.
- Dokumentācija ir atjaunināta.
- Labotas konstatētās kļūdas.
Avots: linux.org.ru
