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