24. februar, etter mer enn ett års utvikling, ble 0.11.22 utgitt av det plattformuavhengige biblioteket for lydopptak og gjengivelse. miniaudio, skrevet i C og distribuert som offentlig eiendom.
miniaudio fungerer på alle hoved skrivebord- og mobile plattformer, inkludert Windows, macOS, Linux, BSD, iOS, Android og Web (via Emscripten) uten tredjepartsavhengigheter.
Biblioteket har et enkelt, fleksibelt og modulært API med innebygde dekodere (WAV, MP3 og FLAC), avansert miksing og effektbehandling (inkludert 3D), ressursstyring, filtre, datakonvertering og mye mer.
Hovedendringer:
- Fra og med versjon 0.12 vil miniaudio gå over til å bruke separate par av .c/.h filer, og avskaffe den eneste header-filen. For å forberede dette har et miniaudio.c fil blitt lagt til i depotet. Så langt er dette bare et innpakning rundt miniaudio.h og MINIAUDIO_IMPLEMENTATION. Det er ikke gjort noen endringer i miniaudio.h, men når versjon 0.12 slippes, må miniaudio.c brukes for kompilering. Det anbefales å begynne overgangen fra å bruke MINIAUDIO_IMPLEMENTATION til å bruke miniaudio.c. Hvis du ønsker å fortsette å kompilere prosjektet ditt som en enkelt kompilert enhet, kan du gjøre #include "miniaudio.c". Denne metoden vil bli støttet i versjon 0.12 og senere.
- Filene miniaudio_libvorbis.h og miniaudio_libopus.h i mappen extras er erklært utdaterte. De er nå delt opp i separate .c og .h filer i mappen extras/decoders. De gamle filene eksisterer fortsatt for kompatibilitet, men du må overføre til de nye versjonene. Overgangen bør være triviel.
- Alternativene MA_SOUND_FLAG_LOOPING og MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING er lagt til. Disse kan brukes til å initialisere lyder og datakilder for ressursstyring for looping som standard. Dette er den anbefalte metoden for å aktivere looping for strømmer. Konfigurasjonsalternativene isLooping i ma_sound_config og ma_resource_manager_data_source_config er erklært utdaterte. Hvis du bruker dem, bør du overføre til de nye alternativene, ellers vil du få kompilasjonsfeil ved oppgradering til fremtidige versjoner.
- ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() og ma_pcm_rb_commit_write() returnerer ikke lenger MA_AT_END. Årsaken til denne endringen er at det ikke eksisterer et begrep om «slutt» i ringbufferen, noe som gjorde resultatkoden uklart. I tillegg kan disse funksjonene returnere noe annet enn MA_SUCCESS, selv om operasjonen ble utført vellykket, noe som skapte ytterligere forvirring. Den riktige måten å sjekke om det fortsatt er plass i ringbufferen, er å se på rammetelleren som returneres av funksjonene rb_acquire_read/write().
- Implementeringen av datakilden ma_pcm_rb er endret slik at utdataene fylles med stillhet hvis det er utilstrekkelig data i ringbufferen til å utføre forespørselen. Dette betyr at ma_data_source_read_pcm_frames() for ma_pcm_rb ikke lenger skal returnere færre rammer enn det du har bedt om, og vil derfor aldri returnere MA_AT_END, noe som ikke gir mening for en ringbuffer siden den ikke har et begrep om slutt. Denne endringen skal i betydelig grad forenkle bruken av ringbufferen som datakilde for ma_sound.
- Det er gjort en liten endring i funksjonen ma_calculate_buffer_size_in_milliseconds_from_frames(), slik at den returnerer en verdi som er avrundet til nærmeste heltall.
- Ved mislykket initialisering av dekoderen returneres nå den første feilkoden som møter, i stedet for MA_NO_BACKEND uansett hvilken feil som oppstod, som tidligere.
- Funksjonen ma_device_id_equal() er lagt til for å sammenligne enhetsidentifikatorer.
- Støtte for MA_NO_RUNTIME_LINKING er lagt til i AAudio-backend.
- Dokumentasjonen er oppdatert.
- Oppdagede feil er rettet.
Kilde: linux.org.ru
