From c0e6324278a89965d61ff0de4ea7e471ca1aa93f Mon Sep 17 00:00:00 2001 From: fryshorts Date: Sun, 14 Dec 2014 18:22:34 +0100 Subject: [PATCH] libobs: Signal own levels in volmeter Signal updated volume levels when they become available in the volume meter. The frequency of the updates can be adjusted by setting a different update interval. --- libobs/obs-audio-controls.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libobs/obs-audio-controls.c b/libobs/obs-audio-controls.c index 49ccf3565..f58d48ad9 100644 --- a/libobs/obs-audio-controls.c +++ b/libobs/obs-audio-controls.c @@ -374,13 +374,28 @@ static void volmeter_source_data_received(void *vptr, calldata_t *calldata) { struct obs_volmeter *volmeter = (struct obs_volmeter *) vptr; bool updated = false; + float mul, level, mag, peak; + signal_handler_t *sh; pthread_mutex_lock(&volmeter->mutex); struct audio_data *data = calldata_ptr(calldata, "data"); updated = volmeter_process_audio_data(volmeter, data); + if (updated) { + mul = db_to_mul(volmeter->cur_db); + + level = volmeter->db_to_pos(mul_to_db(volmeter->vol_max * mul)); + mag = volmeter->db_to_pos(mul_to_db(volmeter->vol_mag * mul)); + peak = volmeter->db_to_pos( + mul_to_db(volmeter->vol_peak * mul)); + sh = volmeter->signals; + } + pthread_mutex_unlock(&volmeter->mutex); + + if (updated) + signal_levels_updated(sh, volmeter, level, mag, peak); } static void volmeter_update_audio_settings(obs_volmeter_t *volmeter)