mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-23 16:54:03 +02:00
Merge branch 'dev' into dev-0.12
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
I deal with all security related issues publicly and transparently, and it can sometimes take a while before I
|
||||||
|
get a chance to address it. If this is an issue for you, you need to use another library. The fastest way to get
|
||||||
|
a bug fixed is to submit a pull request, but if this is impractical for you please post a ticket to the public
|
||||||
|
GitHub issue tracker.
|
||||||
+12
-3
@@ -1,7 +1,16 @@
|
|||||||
v0.11.24 - TBD
|
v0.11.24 - 2026-01-17
|
||||||
=====================
|
=====================
|
||||||
* Fix a possible double-uninit error when a decoder fails to initialize.
|
* Fixed a possible glitch when processing the audio of a `ma_sound` when doing resampling.
|
||||||
* Fix a compilation error with the MSVC Aarch64 build.
|
* Fixed a possible crash in the node graph relating to scheduled starts and stops.
|
||||||
|
* Fixed a bug where MA_NO_DECODING would disable the WAV encoder.
|
||||||
|
* Fixed a pthread compatibility issue, particularly with Android.
|
||||||
|
* Fixed a possible crash in the resource manager.
|
||||||
|
* Fixed a possible double-uninit error when a decoder fails to initialize.
|
||||||
|
* Fixed a compilation error with the MSVC Aarch64 build.
|
||||||
|
* Addressed a few errors found through static analysis, particularly around possible null pointer dereferences.
|
||||||
|
* `ma_sound_is_playing()` will now correctly return false when called from inside the end callback of a sound.
|
||||||
|
* Miscellaneous compiler compatibility and warning fixes.
|
||||||
|
* PulseAudio: Fix a resource leak when a context fails to connect.
|
||||||
* Web: Fixed an error when uninitializing a context.
|
* Web: Fixed an error when uninitializing a context.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -205,10 +205,7 @@ Backends
|
|||||||
|
|
||||||
Security
|
Security
|
||||||
========
|
========
|
||||||
I deal with all security related issues publicly and transparently, and it can sometimes take a while before I
|
See the miniaudio [security policy](.github/SECURITY.md).
|
||||||
get a chance to address it. If this is an issue for you, you need to use another library. The fastest way to get
|
|
||||||
a bug fixed is to submit a pull request, but if this is impractical for you please post a ticket to the public
|
|
||||||
GitHub issue tracker.
|
|
||||||
|
|
||||||
|
|
||||||
License
|
License
|
||||||
|
|||||||
+30
-3
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file.
|
Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file.
|
||||||
miniaudio - v0.11.24 - TBD
|
miniaudio - v0.11.24 - 2026-01-17
|
||||||
|
|
||||||
David Reid - mackron@gmail.com
|
David Reid - mackron@gmail.com
|
||||||
|
|
||||||
@@ -11287,8 +11287,12 @@ MA_API ma_engine* ma_sound_get_engine(const ma_sound* pSound);
|
|||||||
MA_API ma_data_source* ma_sound_get_data_source(const ma_sound* pSound);
|
MA_API ma_data_source* ma_sound_get_data_source(const ma_sound* pSound);
|
||||||
MA_API ma_result ma_sound_start(ma_sound* pSound);
|
MA_API ma_result ma_sound_start(ma_sound* pSound);
|
||||||
MA_API ma_result ma_sound_stop(ma_sound* pSound);
|
MA_API ma_result ma_sound_stop(ma_sound* pSound);
|
||||||
MA_API ma_result ma_sound_stop_with_fade_in_pcm_frames(ma_sound* pSound, ma_uint64 fadeLengthInFrames); /* Will overwrite any scheduled stop and fade. */
|
MA_API ma_result ma_sound_stop_with_fade_in_pcm_frames(ma_sound* pSound, ma_uint64 fadeLengthInFrames); /* Will overwrite any scheduled stop and fade. If you want to restart the sound, first reset it with `ma_sound_reset_stop_time_and_fade()`. There are plans to make this less awkward in the future. */
|
||||||
MA_API ma_result ma_sound_stop_with_fade_in_milliseconds(ma_sound* pSound, ma_uint64 fadeLengthInFrames); /* Will overwrite any scheduled stop and fade. */
|
MA_API ma_result ma_sound_stop_with_fade_in_milliseconds(ma_sound* pSound, ma_uint64 fadeLengthInFrames); /* Will overwrite any scheduled stop and fade. If you want to restart the sound, first reset it with `ma_sound_reset_stop_time_and_fade()`. There are plans to make this less awkward in the future. */
|
||||||
|
MA_API void ma_sound_reset_start_time(ma_sound* pSound);
|
||||||
|
MA_API void ma_sound_reset_stop_time(ma_sound* pSound);
|
||||||
|
MA_API void ma_sound_reset_fade(ma_sound* pSound);
|
||||||
|
MA_API void ma_sound_reset_stop_time_and_fade(ma_sound* pSound); /* Resets fades and scheduled stop time. Does not seek back to the start. */
|
||||||
MA_API void ma_sound_set_volume(ma_sound* pSound, float volume);
|
MA_API void ma_sound_set_volume(ma_sound* pSound, float volume);
|
||||||
MA_API float ma_sound_get_volume(const ma_sound* pSound);
|
MA_API float ma_sound_get_volume(const ma_sound* pSound);
|
||||||
MA_API void ma_sound_set_pan(ma_sound* pSound, float pan);
|
MA_API void ma_sound_set_pan(ma_sound* pSound, float pan);
|
||||||
@@ -30978,6 +30982,7 @@ static ma_result ma_init_pa_mainloop_and_pa_context__pulseaudio(ma_context* pCon
|
|||||||
result = ma_result_from_pulseaudio(pContextStatePulseAudio->pa_context_connect(pPulseContext, pServerName, (tryAutoSpawn) ? MA_PA_CONTEXT_NOFLAGS : MA_PA_CONTEXT_NOAUTOSPAWN, NULL));
|
result = ma_result_from_pulseaudio(pContextStatePulseAudio->pa_context_connect(pPulseContext, pServerName, (tryAutoSpawn) ? MA_PA_CONTEXT_NOFLAGS : MA_PA_CONTEXT_NOAUTOSPAWN, NULL));
|
||||||
if (result != MA_SUCCESS) {
|
if (result != MA_SUCCESS) {
|
||||||
ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[PulseAudio] Failed to connect PulseAudio context.");
|
ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[PulseAudio] Failed to connect PulseAudio context.");
|
||||||
|
pContextStatePulseAudio->pa_context_unref(pPulseContext);
|
||||||
pContextStatePulseAudio->pa_mainloop_free(pMainLoop);
|
pContextStatePulseAudio->pa_mainloop_free(pMainLoop);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -30986,6 +30991,7 @@ static ma_result ma_init_pa_mainloop_and_pa_context__pulseaudio(ma_context* pCon
|
|||||||
result = ma_wait_for_pa_context_to_connect__pulseaudio(pContext, pContextStatePulseAudio, pMainLoop, pPulseContext);
|
result = ma_wait_for_pa_context_to_connect__pulseaudio(pContext, pContextStatePulseAudio, pMainLoop, pPulseContext);
|
||||||
if (result != MA_SUCCESS) {
|
if (result != MA_SUCCESS) {
|
||||||
ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[PulseAudio] Waiting for connection failed.");
|
ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[PulseAudio] Waiting for connection failed.");
|
||||||
|
pContextStatePulseAudio->pa_context_unref(pPulseContext);
|
||||||
pContextStatePulseAudio->pa_mainloop_free(pMainLoop);
|
pContextStatePulseAudio->pa_mainloop_free(pMainLoop);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -80431,6 +80437,27 @@ MA_API ma_result ma_sound_stop_with_fade_in_milliseconds(ma_sound* pSound, ma_ui
|
|||||||
return ma_sound_stop_with_fade_in_pcm_frames(pSound, (fadeLengthInMilliseconds * sampleRate) / 1000);
|
return ma_sound_stop_with_fade_in_pcm_frames(pSound, (fadeLengthInMilliseconds * sampleRate) / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MA_API void ma_sound_reset_start_time(ma_sound* pSound)
|
||||||
|
{
|
||||||
|
ma_sound_set_start_time_in_pcm_frames(pSound, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
MA_API void ma_sound_reset_stop_time(ma_sound* pSound)
|
||||||
|
{
|
||||||
|
ma_sound_set_stop_time_in_pcm_frames(pSound, ~(ma_uint64)0);
|
||||||
|
}
|
||||||
|
|
||||||
|
MA_API void ma_sound_reset_fade(ma_sound* pSound)
|
||||||
|
{
|
||||||
|
ma_sound_set_fade_in_pcm_frames(pSound, 0, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
MA_API void ma_sound_reset_stop_time_and_fade(ma_sound* pSound)
|
||||||
|
{
|
||||||
|
ma_sound_reset_stop_time(pSound);
|
||||||
|
ma_sound_reset_fade(pSound);
|
||||||
|
}
|
||||||
|
|
||||||
MA_API void ma_sound_set_volume(ma_sound* pSound, float volume)
|
MA_API void ma_sound_set_volume(ma_sound* pSound, float volume)
|
||||||
{
|
{
|
||||||
if (pSound == NULL) {
|
if (pSound == NULL) {
|
||||||
|
|||||||
Reference in New Issue
Block a user