miniaudio 0.11.22

miniaudio 0.11.22

24 lutego, po ponad roku prac, miała miejsce premiera 0.11.22 wieloplatformowej biblioteki do przechwytywania i odtwarzania dźwięku miniaudio, napisanej w języku C i dystrybuowanej jako oprogramowanie publiczne.
miniaudio działa na wszystkich głównych platformach stacjonarnych i mobilnych, w tym Windows, macOS, Linux, BSD, iOS, Android i Web (przez Emscripten) bez zewnętrznych zależności.
Biblioteka ma prosty, elastyczny i modułowy interfejs API z wbudowanymi dekoderami (WAV, MP3 i FLAC), zaawansowanym mieszaniem i przetwarzaniem efektów (w tym 3D), zarządzaniem zasobami, filtrami, konwersją danych i wieloma innymi funkcjami.

Główne zmiany:

  • Od wersji 0.12, miniaudio będzie przechodzić na oddzielne pary plików .c/.h, rezygnując z jednego pliku nagłówkowego. W ramach przygotowań, do repozytorium dodano plik miniaudio.c. Na ten moment jest to tylko wrapper wokół miniaudio.h oraz MINIAUDIO_IMPLEMENTATION. W miniaudio.h nic się nie zmieniło, jednak po wydaniu wersji 0.12, należy używać miniaudio.c do kompilacji. Zaleca się przejście z używania MINIAUDIO_IMPLEMENTATION na korzystanie z miniaudio.c. Jeśli chcesz nadal kompilować swój projekt jako jedną jednostkę, możesz użyć #include "miniaudio.c". Ta metoda będzie wspierana w wersji 0.12 i dalej.
  • Pliki miniaudio_libvorbis.h i miniaudio_libopus.h w katalogu extras zostały oznaczone jako przestarzałe. Teraz zostały podzielone na oddzielne pliki .c i .h w katalogu extras/decoders. Stare pliki wciąż istnieją dla zgodności, ale musisz przejść na nowe wersje. Przejście powinno być trywialne.
  • Dodano opcje MA_SOUND_FLAG_LOOPING oraz MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Można ich używać do inicjowania dźwięków i zarządzanych zasobów źródeł danych do domyślnego cyklicznego odtwarzania. To rekomendowany sposób włączania cyklicznego odtwarzania dla strumieni. Opcje konfiguracji isLooping w ma_sound_config oraz ma_resource_manager_data_source_config zostały oznaczone jako przestarzałe. Jeśli ich używasz, powinieneś przejść na nowe opcje, inaczej przy aktualizacji do przyszłej wersji będziesz mieć błędy kompilacji.
  • ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() i ma_pcm_rb_commit_write() nie zwracają już MA_AT_END. Powodem tej zmiany jest to, że w buforze cyklicznym nie istnieje pojęcie „końca”, co czyniło wynik kodu niejasnym. Ponadto te funkcje mogą zwracać nie MA_SUCCESS, a coś innego, nawet jeśli operacja zakończy się pomyślnie, co wprowadza dodatkowe zamieszanie. Prawidłowy sposób na sprawdzenie, czy w buforze cyklicznym jest jeszcze miejsce, to sprawdzenie licznika klatek, zwracanego przez funkcje rb_acquire_read/write().
  • Implementacja źródła danych ma_pcm_rb została zmieniona w taki sposób, że wyjście jest wypełniane ciszą, jeśli w buforze cyklicznym jest zbyt mało danych do wykonania zapytania. Oznacza to, że ma_data_source_read_pcm_frames() dla ma_pcm_rb nie powinna już zwracać liczby klatek mniejszej niż żądana, a zatem nigdy nie zwróci MA_AT_END, co nie ma sensu dla bufora cyklicznego, ponieważ nie ma koncepcji końca. Ta zmiana ma znacznie uprościć użycie bufora cyklicznego jako źródła danych dla ma_sound.
  • W funkcji ma_calculate_buffer_size_in_milliseconds_from_frames() wprowadzono drobną zmianę, w wyniku której zwraca ona wartość zaokrągloną do najbliższej liczby całkowitej.
  • W przypadku nieudanej inicjalizacji dekodera teraz zwracany jest pierwszy napotkany kod błędu, a nie MA_NO_BACKEND niezależnie od błędu, jak miało to miejsce wcześniej.
  • Dodano funkcję ma_device_id_equal() do porównywania identyfikatorów urządzeń.
  • Dodano wsparcie MA_NO_RUNTIME_LINKING w backendzie AAudio.
  • Zaktualizowano dokumentację.
  • Naprawiono wykryte błędy.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster