Pe 24 februarie, după mai bine de un an de dezvoltare, a fost lansat versiunea 0.11.22 a bibliotecii de captare și redare audio multiplatformă. miniaudio, scris în C și distribuit în domeniul public.
miniaudio rulează pe toate platformele desktop și mobile majore, inclusiv Windows, macOS, Linux, BSD, iOS, Android și Web (prin Emscripten) fără dependențe de terțe părți.
Biblioteca are un API simplu, flexibil și modular, cu decodore încorporate (WAV, MP3 și FLAC), procesare avansată de mixare și efecte (inclusiv 3D), management de resurse, filtre, conversie de date și multe altele.
Principalele modificări:
- Începând cu versiunea 0.12, miniaudio se va muta la o pereche separată de fișiere .c/h, abandonând fișierul antet unic. Pentru a se pregăti pentru acest lucru, un fișier miniaudio.c a fost adăugat la depozit. Momentan, este doar un înveliș în jurul miniaudio.h și MINIAUDIO_IMPLEMENTATION. Nu s-a schimbat nimic în miniaudio.h, totuși, când apare versiunea 0.12, va trebui să utilizați miniaudio.c pentru compilare. Este recomandat să începeți migrarea de la utilizarea MINIAUDIO_IMPLEMENTATION la utilizarea miniaudio.c. Dacă doriți să continuați să vă construiți proiectul ca o singură unitate de compilare, puteți #include „miniaudio.c”. Această metodă va fi acceptată în versiunea 0.12 și ulterior.
- Fișierele miniaudio_libvorbis.h și miniaudio_libopus.h din directorul extras au fost depreciate. Acestea sunt acum împărțite în fișiere separate .c și .h în directorul de extras/decoder. Fișierele vechi încă există pentru compatibilitate, dar va trebui să faceți upgrade la noile versiuni. Tranziția ar trebui să fie banală.
- S-au adăugat opțiunile MA_SOUND_FLAG_LOOPING și MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Acestea pot fi folosite pentru a inițializa sunete și surse de date bazate pe resurse pentru a se bucla în mod implicit. Aceasta este modalitatea recomandată de a activa bucla pentru fire. Opțiunile de configurare isLooping din ma_sound_config și ma_resource_manager_data_source_config au fost depreciate. Dacă le utilizați, ar trebui să faceți upgrade la noile opțiuni, altfel veți primi erori de compilator când faceți upgrade la o versiune viitoare.
- ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() și ma_pcm_rb_commit_write() nu mai returnează MA_AT_END. Motivul acestei modificări este că nu există conceptul de „sfârșit” într-un buffer inel, ceea ce a făcut ca codul rezultat să fie neclar. În plus, aceste funcții ar putea returna altceva decât MA_SUCCESS chiar dacă operația s-a finalizat cu succes, ceea ce a sporit confuzia. Modul corect de a verifica dacă mai există spațiu în buffer-ul inel este să priviți contorul de cadre returnat de funcțiile rb_acquire_read/write().
- Implementarea sursei de date ma_pcm_rb a fost schimbată astfel încât ieșirea să fie umplută cu tăcere dacă nu există suficiente date în buffer-ul inel pentru a îndeplini cererea. Aceasta înseamnă că ma_data_source_read_pcm_frames() pentru ma_pcm_rb nu ar trebui să mai returneze un număr de cadre mai mic decât ați solicitat și, prin urmare, nu va returna niciodată MA_AT_END, ceea ce nu are sens pentru un buffer inel, deoarece nu are conceptul de sfârșit. Această modificare ar trebui să faciliteze utilizarea unui tampon inel ca sursă de date pentru ma_sound.
- A fost făcută o mică modificare funcției ma_calculate_buffer_size_in_milliseconds_from_frames(), astfel încât să returneze o valoare rotunjită la cel mai apropiat număr întreg.
- Dacă inițializarea decodorului eșuează, primul cod de eroare întâlnit este acum returnat, mai degrabă decât MA_NO_BACKEND, indiferent de eroare, așa cum a fost cazul anterior.
- S-a adăugat funcția ma_device_id_equal() pentru compararea ID-urilor dispozitivelor.
- S-a adăugat compatibilitate pentru MA_NO_RUNTIME_LINKING la backend-ul AAudio.
- Documentație actualizată.
- Erorile detectate au fost remediate.
Sursa: linux.org.ru
