diff --git a/libobs/obs-scene.c b/libobs/obs-scene.c index 687da946c61da0836d79b0fcdfeaee01e5029db4..5a8a8e81cc878c3527e5115816d8566e2f3348a3 100644 --- a/libobs/obs-scene.c +++ b/libobs/obs-scene.c @@ -951,19 +951,12 @@ static uint32_t scene_getheight(void *data) } static void apply_scene_item_audio_actions(struct obs_scene_item *item, - float **p_buf, uint64_t ts, + float *buf, uint64_t ts, size_t sample_rate) { bool cur_visible = item->visible; uint64_t frame_num = 0; size_t deref_count = 0; - float *buf = NULL; - - if (p_buf) { - if (!*p_buf) - *p_buf = malloc(AUDIO_OUTPUT_FRAMES * sizeof(float)); - buf = *p_buf; - } pthread_mutex_lock(&item->actions_mutex); @@ -1010,7 +1003,7 @@ static void apply_scene_item_audio_actions(struct obs_scene_item *item, } } -static bool apply_scene_item_volume(struct obs_scene_item *item, float **buf, +static bool apply_scene_item_volume(struct obs_scene_item *item, float *buf, uint64_t ts, size_t sample_rate) { bool actions_pending; @@ -1074,7 +1067,7 @@ static bool scene_audio_render(void *data, uint64_t *ts_out, size_t sample_rate) { uint64_t timestamp = 0; - float *buf = NULL; + float buf[AUDIO_OUTPUT_FRAMES]; struct obs_source_audio_mix child_audio; struct obs_scene *scene = data; struct obs_scene_item *item; @@ -1113,7 +1106,7 @@ static bool scene_audio_render(void *data, uint64_t *ts_out, size_t pos, count; bool apply_buf; - apply_buf = apply_scene_item_volume(item, &buf, timestamp, + apply_buf = apply_scene_item_volume(item, buf, timestamp, sample_rate); if (obs_source_audio_pending(item->source)) { @@ -1159,7 +1152,6 @@ static bool scene_audio_render(void *data, uint64_t *ts_out, *ts_out = timestamp; audio_unlock(scene); - free(buf); return true; } diff --git a/libobs/obs-source.c b/libobs/obs-source.c index 9aea45c73334b2f0bff44eec6fa6001f1b6f214d..b87a7eacb15b3017c8ecb91707cc4d6f34639505 100644 --- a/libobs/obs-source.c +++ b/libobs/obs-source.c @@ -4532,7 +4532,7 @@ static inline void apply_audio_action(obs_source_t *source, static void apply_audio_actions(obs_source_t *source, size_t channels, size_t sample_rate) { - float *vol_data = malloc(sizeof(float) * AUDIO_OUTPUT_FRAMES); + float vol_data[AUDIO_OUTPUT_FRAMES]; float cur_vol = get_source_volume(source, source->audio_ts); size_t frame_num = 0; @@ -4573,8 +4573,6 @@ static void apply_audio_actions(obs_source_t *source, size_t channels, if ((source->audio_mixers & (1 << mix)) != 0) multiply_vol_data(source, mix, channels, vol_data); } - - free(vol_data); } static void apply_audio_volume(obs_source_t *source, uint32_t mixers,