void obs_set_master_volume(float volume) { struct calldata data = {0}; if (!obs) return; calldata_set_float(&data, "volume", volume); signal_handler_signal(obs->signals, "master_volume", &data); volume = (float)calldata_float(&data, "volume"); calldata_free(&data); obs->audio.user_volume = volume; }
void obs_source_setvolume(obs_source_t source, float volume) { if (source) { struct calldata data = {0}; calldata_setptr(&data, "source", source); calldata_setfloat(&data, "volume", volume); signal_handler_signal(source->context.signals, "volume", &data); signal_handler_signal(obs->signals, "source_volume", &data); volume = (float)calldata_float(&data, "volume"); calldata_free(&data); source->user_volume = volume; } }
static void fader_source_volume_changed(void *vptr, calldata_t *calldata) { struct obs_fader *fader = (struct obs_fader *) vptr; pthread_mutex_lock(&fader->mutex); if (fader->ignore_next_signal) { fader->ignore_next_signal = false; pthread_mutex_unlock(&fader->mutex); return; } signal_handler_t *sh = fader->signals; const float mul = (float)calldata_float(calldata, "volume"); const float db = mul_to_db(mul); fader->cur_db = db; pthread_mutex_unlock(&fader->mutex); signal_volume_changed(sh, fader, db); }
void OBSAdvAudioCtrl::OBSSourceVolumeChanged(void *param, calldata_t *calldata) { float volume = (float)calldata_float(calldata, "volume"); QMetaObject::invokeMethod(reinterpret_cast<OBSAdvAudioCtrl*>(param), "SourceVolumeChanged", Q_ARG(float, volume)); }