Den 24 februari, efter mer Àn ett Ärs utveckling, slÀpptes version 0.11.22 av det plattformsoberoende biblioteket för ljudinspelning och uppspelning miniaudio, som Àr skriven i C och distribueras som offentlig egendom.
miniaudio fungerar pÄ alla större skrivbords- och mobilplattformar, inklusive Windows, macOS, Linux, BSD, iOS, Android och Web (via Emscripten) utan externa beroenden.
Biblioteket har ett enkelt, flexibelt och modulÀrt API med inbyggda dekodrar (WAV, MP3 och FLAC), avancerad mixer och effektbehandling (inklusive 3D), resursstyrning, filter, datakonvertering och mycket mer.
Huvudsakliga förÀndringar:
- FrÄn och med version 0.12 kommer miniaudio att gÄ över till separata .c/.h-filer och överge den enda header-filen. För att förbereda detta har en fil miniaudio.c lagts till i repo. För nÀrvarande Àr detta bara en wrapper runt miniaudio.h och MINIAUDIO_IMPLEMENTATION. Inga Àndringar har gjorts i miniaudio.h, men nÀr version 0.12 slÀpps kommer miniaudio.c att behövas för kompilering. Det rekommenderas att börja övergÄngen frÄn att anvÀnda MINIAUDIO_IMPLEMENTATION till att anvÀnda miniaudio.c. Om du vill fortsÀtta kompilera ditt projekt som en enda kompilationsenhet kan du anvÀnda #include "miniaudio.c". Denna metod kommer att stödjas i version 0.12 och framÄt.
- Filena miniaudio_libvorbis.h och miniaudio_libopus.h i mappen extras har förklarats som förĂ„ldrade. De har nu delats upp i separata .c och .h-filer i mappen extras/decoders. De gamla filerna finns fortfarande kvar för kompatibilitet, men du mĂ„ste uppgradera till de nya versionerna. ĂvergĂ„ngen bör vara trivial.
- Alternativen MA_SOUND_FLAG_LOOPING och MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING har lagts till. Dessa kan anvÀndas för att initiera ljud och resursstyrda datakÀllor för looping som standard. Detta Àr det rekommenderade sÀttet att aktivera looping för strömmar. Konfigurationsalternativen isLooping i ma_sound_config och ma_resource_manager_data_source_config har förklarats som förÄldrade. Om du anvÀnder dem bör du uppgradera till de nya alternativen, annars kan du fÄ kompilatorfel nÀr du uppgraderar till framtida versioner.
- ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() och ma_pcm_rb_commit_write() returnerar inte lÀngre MA_AT_END. Anledningen till denna Àndring Àr att det inte finns nÄgot koncept av "slut" i ringbufret, vilket gjorde resultatkoden otydlig. Dessutom kan dessa funktioner returnera nÄgot annat Àn MA_SUCCESS, Àven om operationen slutfördes framgÄngsrikt, vilket skapade mer förvirring. Det korrekta sÀttet att kontrollera om det fortfarande finns utrymme i ringbufret Àr att titta pÄ ramlÀknaren som returneras av funktionerna rb_acquire_read/write().
- Implementeringen av datakÀllan ma_pcm_rb har Àndrats sÄ att utsignalen fylls med tystnad om det inte finns tillrÀckligt med data i ringbufret för att utföra begÀran. Detta innebÀr att ma_data_source_read_pcm_frames() för ma_pcm_rb inte lÀngre ska returnera ett antal ramar som Àr mindre Àn vad du begÀrde, och dÀrför kommer det aldrig att returnera MA_AT_END, vilket inte Àr meningsfullt för ringbufret eftersom det inte har nÄgot koncept av slut. Denna förÀndring bör förenkla anvÀndningen av ringbufret som datakÀlla för ma_sound avsevÀrt.
- Funktionen ma_calculate_buffer_size_in_milliseconds_from_frames() har fÄtt en liten Àndring som gör att den returnerar ett vÀrde som avrundas till nÀrmaste heltal.
- Vid misslyckad initialisering av avkodaren returneras nu den första stötta felkoden som hittas, istÀllet för MA_NO_BACKEND oavsett vilken fel det rörde sig om, som tidigare.
- Funktionen ma_device_id_equal() har lagts till för att jÀmföra enhetsidentifierare.
- Stöd för MA_NO_RUNTIME_LINKING har lagts till i AAudio-backend.
- Dokumentationen har uppdaterats.
- Förekomna fel har ÄtgÀrdats.
KĂ€lla: linux.org.ru
