bool obs_fader_set_db(obs_fader_t *fader, const float db) { if (!fader) return false; pthread_mutex_lock(&fader->mutex); bool clamped = false; fader->cur_db = db; if (fader->cur_db > fader->max_db) { fader->cur_db = fader->max_db; clamped = true; } if (fader->cur_db < fader->min_db) { fader->cur_db = -INFINITY; clamped = true; } fader->ignore_next_signal = true; obs_source_t *src = fader->source; const float mul = db_to_mul(fader->cur_db); pthread_mutex_unlock(&fader->mutex); if (src) obs_source_set_volume(src, mul); return !clamped; }
void OBSAdvAudioCtrl::volumeChanged(double db) { if (db < MIN_DB) { volume->setSpecialValueText("-inf dB"); db = -INFINITY; } float val = obs_db_to_mul(db); obs_source_set_volume(source, val); }
obs_source_t *obs_load_source(obs_data_t *source_data) { obs_source_t *source; const char *name = obs_data_get_string(source_data, "name"); const char *id = obs_data_get_string(source_data, "id"); obs_data_t *settings = obs_data_get_obj(source_data, "settings"); double volume; source = obs_source_create(OBS_SOURCE_TYPE_INPUT, id, name, settings); obs_data_set_default_double(source_data, "volume", 1.0); volume = obs_data_get_double(source_data, "volume"); obs_source_set_volume(source, (float)volume); obs_data_release(settings); return source; }