Den 24. februar, efter mere end et års udvikling, blev version 0.11.22 af den tværplatforme lyfangst- og afspilningsbibliotek frigivet. miniaudio, skrevet i C og distribueret som offentlig ejendom.
miniaudio fungerer på alle større skrivebords- og mobile platforme, herunder Windows, macOS, Linux, BSD, iOS, Android og Web (gennem Emscripten) uden eksterne afhængigheder.
Biblioteket har et simpelt, fleksibelt og modulært API med indbyggede decodere (WAV, MP3 og FLAC), avanceret mixing og effektbehandling (herunder 3D), ressourcehåndtering, filtre, dataomdannelse og meget mere.
Vigtige ændringer:
- Fra version 0.12 vil miniaudio gå over til at have separate par af .c/.h filer og afvikle den enkeltstående headerfil. For at forberede dette er der tilføjet en fil kaldet miniaudio.c til repositoriet. I øjeblikket er dette blot en wrapper omkring miniaudio.h og MINIAUDIO_IMPLEMENTATION. Der er ikke ændret noget i miniaudio.h, men når version 0.12 frigives, skal miniaudio.c bruges til kompilering. Det anbefales at begynde overgangen fra at bruge MINIAUDIO_IMPLEMENTATION til at bruge miniaudio.c. Hvis du ønsker at fortsætte med at bygge dit projekt som en enkelt kompilering, kan du gøre #include "miniaudio.c". Denne metode vil blive understøttet i version 0.12 og fremover.
- Filene miniaudio_libvorbis.h og miniaudio_libopus.h i mappen extras er blevet erklæret forældede. De er nu opdelt i separate .c og .h filer i mappen extras/decoders. De gamle filer eksisterer stadig for kompatibilitet, men du skal overgå til de nye versioner. Overgangen bør være triviel.
- Der er tilføjet mulighederne MA_SOUND_FLAG_LOOPING og MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Disse kan bruges til at initialisere lyde og ressourceforvaltede datakilder til standard looping. Dette er den anbefalede metode til at aktivere looping for streams. Konfigurationsmulighederne isLooping i ma_sound_config og ma_resource_manager_data_source_config er blevet erklæret forældede. Hvis du bruger dem, bør du skifte til de nye muligheder, ellers vil du få kompilationsfejl, når du opdaterer til en fremtidig version.
- ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() og ma_pcm_rb_commit_write() returnerer ikke længere MA_AT_END. Årsagen til denne ændring er, at der ikke findes et begreb som 'slut' i en ringbuffer, hvilket gjorde resultatkoden uklar. Derudover kan disse funktioner returnere noget andet end MA_SUCCESS, selvom operationen er gennemført succesfuldt, hvilket tilføjede forvirring. Den korrekte måde at kontrollere, om der er plads i ringbufferen, er at se på frame tælleren, der returneres af funktionerne rb_acquire_read/write().
- Implementeringen af datakilden ma_pcm_rb er ændret, så output fyldes med stilhed, hvis der ikke er nok data i ringbufferen til at udføre forespørgslen. Det betyder, at ma_data_source_read_pcm_frames() for ma_pcm_rb ikke længere skal returnere et antal frames mindre end det, du har anmodet om, og derfor vil den aldrig returnere MA_AT_END, hvilket ikke giver mening for en ringbuffer, da den ikke har et koncept om slutning. Denne ændring burde gøre det betydeligt lettere at anvende ringbufferen som datakilde for ma_sound.
- Der er foretaget en lille ændring i funktionen ma_calculate_buffer_size_in_milliseconds_from_frames(), så den nu returnerer en værdi, der er afrundet til det nærmeste hele tal.
- Ved mislykket initialisering af dekoderen returneres nu den første fejlkode, der mødes, og ikke MA_NO_BACKEND uanset fejlen, som det var tilfældet før.
- Funktionen ma_device_id_equal() er tilføjet for at sammenligne enhedsidentifikatorer.
- Der er tilføjet support for MA_NO_RUNTIME_LINKING i AAudio-backend.
- Dokumentationen er opdateret.
- Opdagede fejl er blevet rettet.
Kilde: linux.org.ru
