miniaudio 0.11.22

24 фСвраля, послС Π±ΠΎΠ»Π΅Π΅ Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, состоялся выпуск 0.11.22 кроссплатформСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΈ воспроизвСдСния Π·Π²ΡƒΠΊΠ° miniaudio, написанной Π½Π° языкС C ΠΈ распространяСмой, ΠΊΠ°ΠΊ общСствСнноС достояниС.
miniaudio Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° всСх основных Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Windows, macOS, Linux, BSD, iOS, Android ΠΈ Web (Ρ‡Π΅Ρ€Π΅Π· Emscripten) Π±Π΅Π· сторонних зависимостСй.
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ простой, Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ API со встроСнными Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π°ΠΌΠΈ (WAV, MP3 ΠΈ FLAC), Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΌΠΈΠΊΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ эффСктов (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 3D), ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ рСсурсами, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния:

  • Начиная с вСрсии 0.12, miniaudio Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² .c/h, ΠΎΡ‚ΠΊΠ°Π·Π°Π²ΡˆΠΈΡΡŒ ΠΎΡ‚ СдинствСнного Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ этому Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π°ΠΉΠ» miniaudio.c. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ это просто ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° Π²ΠΎΠΊΡ€ΡƒΠ³ miniaudio.h ΠΈ MINIAUDIO_IMPLEMENTATION. Π’ miniaudio.h Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнилось, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ вСрсия 0.12, Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ miniaudio.c для компиляции. РСкомСндуСтся Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ использования MINIAUDIO_IMPLEMENTATION ΠΊ использованию miniaudio.c. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ компиляции, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ #include "miniaudio.c". Π­Ρ‚ΠΎΡ‚ способ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² вСрсии 0.12 ΠΈ Π΄Π°Π»Π΅Π΅.
  • Π€Π°ΠΉΠ»Ρ‹ miniaudio_libvorbis.h ΠΈ miniaudio_libopus.h Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ extras ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ .c ΠΈ .h Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ extras/decoders. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ всё Π΅Ρ‰Ρ‘ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ для совмСстимости, Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ вСрсии. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ MA_SOUND_FLAG_LOOPING ΠΈ MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π²ΡƒΠΊΠΎΠ² ΠΈ управляСмых рСсурсами источников Π΄Π°Π½Π½Ρ‹Ρ… для зацикливания ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ зацикливания для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠžΠΏΡ†ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ isLooping Π² ma_sound_config ΠΈ ma_resource_manager_data_source_config ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈΡ…, Ρ‚ΠΎ Π²Π°ΠΌ слСдуСт ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ вСрсии Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ошибки компилятора.
  • ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() ΠΈ ma_pcm_rb_commit_write() большС Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ MA_AT_END. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого измСнСния Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅ Π½Π΅ сущСствуСт понятия Β«ΠΊΠΎΠ½Π΅Ρ†Β», Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π»ΠΎ ΠΊΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° нСясным. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½Π΅ MA_SUCCESS, Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π΄Π°ΠΆΠ΅ Ссли опСрация Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ вносило Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π΅Ρ‰Π΅ мСсто Π² ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅ – ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° счётчик ΠΊΠ°Π΄Ρ€ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ функциями rb_acquire_read/write().
  • РСализация источника Π΄Π°Π½Π½Ρ‹Ρ… ma_pcm_rb ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΡˆΠΈΠ½ΠΎΠΉ, Ссли Π² ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅ нСдостаточно Π΄Π°Π½Π½Ρ‹Ρ… для выполнСния запроса. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ma_data_source_read_pcm_frames() для ma_pcm_rb большС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ количСство ΠΊΠ°Π΄Ρ€ΠΎΠ² мСньшС, Ρ‡Π΅ΠΌ Π²Ρ‹ запросили, ΠΈ поэтому Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ MA_AT_END, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла для ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ понятия ΠΊΠΎΠ½Ρ†Π°. Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ использованиС ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° Π² качСствС источника Π΄Π°Π½Π½Ρ‹Ρ… для ma_sound.
  • Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ma_calculate_buffer_size_in_milliseconds_from_frames() внСсСно нСбольшоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠ΅ Π΄ΠΎ блиТайшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ числа.
  • ΠŸΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ возвращаСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ²ΡˆΠΈΠΉΡΡ ΠΊΠΎΠ΄ ошибки, Π° Π½Π΅ MA_NO_BACKEND нСзависимо ΠΎΡ‚ ошибки, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Ρ€Π°Π½Π΅Π΅.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция ma_device_id_equal() для сравнСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² устройств.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° MA_NO_RUNTIME_LINKING Π² бэкэнд AAudio.
  • ОбновлСна докумСнтация.
  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ ошибки.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ