void OnSceneSwitch(CTSTR scene) { XElement *sceneElement; float desktopVolumeLevel, micVolumeLevel; int dMFV, mMFV; bool desktopMuted, micMuted; if(!bPSVEnabled) return; sceneElement = OBSGetSceneElement(); if(sceneElement) { desktopVolumeLevel = sceneElement->GetFloat(TEXT("psvDesktopVolume"), 1.0f); micVolumeLevel = sceneElement->GetFloat(TEXT("psvMicVolume"), 1.0f); dMFV = sceneElement->GetInt(TEXT("psvDesktopMFV")); mMFV = sceneElement->GetInt(TEXT("psvMicMFV")); desktopMuted = (dMFV & PSV_VOL_MUTED) == PSV_VOL_MUTED; micMuted = (mMFV & PSV_VOL_MUTED) == PSV_VOL_MUTED; OBSSetDesktopVolume(desktopVolumeLevel, true); if(desktopMuted) OBSToggleDesktopMute(); OBSSetMicVolume(micVolumeLevel, true); if(micMuted) OBSToggleMicMute(); } }
json_t* OBSAPIMessageHandler::HandleToggleMute(OBSAPIMessageHandler* handler, json_t* message) { json_t* channel = json_object_get(message, "channel"); if(channel != NULL && json_typeof(channel) == JSON_STRING) { const char* channelVal = json_string_value(channel); if(stricmp(channelVal, "desktop") == 0) { OBSToggleDesktopMute(); } else if(stricmp(channelVal, "microphone") == 0) { OBSToggleMicMute(); } else { return GetErrorResponse("Invalid channel specified."); } } else { return GetErrorResponse("Channel not specified."); } return GetOkResponse(); }
void RestoreInitialVolumes() { OBSSetDesktopVolume(config.GetFloat(TEXT("General"), TEXT("PrevDesktopVolume")), true); OBSSetMicVolume(config.GetFloat(TEXT("General"), TEXT("PrevMicVolume")), true); if(config.GetInt(TEXT("General"), TEXT("PrevDesktopMuted")) == 1) OBSToggleDesktopMute(); if(config.GetInt(TEXT("General"), TEXT("PrevMicMuted")) ==1) OBSToggleMicMute(); }